質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1468閲覧

Twitter APIを使用したお気に入り(ファボ)解除

退会済みユーザー

退会済みユーザー

総合スコア0

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/31 05:20

編集2020/02/01 06:47

前提・実現したいこと

先にも質問しており、自身の中では解決したと思っていたのですが、違う気がしたので再度質問させて頂きたく存じます。
Twitter APIを使用して自身が今までにお気に入りしたものを全て解除することが目標です。

発生している問題・エラーメッセージ

以下に記すソースコードが上手く働いていないのではないかと思っています。
理由としましては、自身のお気に入り欄の一番上のツイートがいつまでたってもお気に入り解除されないことが怪しく思い質問させて頂きました。加えて、api.favorites()で自身の全てのお気に入りしたツイートの情報を保持出来るのかと思ったのですがprint(len(favorited_all))で出力される値は常に3となり、この数字の意味も分かりません。
自身の実現したいことを達成するには、どのようにソースコードを変更すれば良いのか教えて頂けると幸いです。
api.favorites()の解釈の相違を指摘して頂けるだけでも良いので、何か情報が欲しいです。
よろしくお願いします。

該当のソースコード

python

1import tweepy 2import random 3import time 4 5# use twitter API 6CONSUMER_KEY='#####' 7CONSUMER_SECRET='#####' 8ACCESS_TOKEN='#####' 9ACCESS_SECRET='#####' 10 11## create twitter API instance 12auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 13auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) 14api = tweepy.API(auth) 15 16while True: 17 18 favorited_all = api.favorites() 19 20 #print(len(favorited_all)) 21 22 for favorited_id in favorited_all: 23 24 try: 25 api.destroy_favorite(favorited_id._json['id']) 26 except Exception as error_message: 27 print(error_message) 28 29 time.sleep(60)

試したこと

API Referenceを参照

補足情報

なし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

api.favorites() での返り値の型の認識が誤っていそうです。
http://docs.tweepy.org/en/latest/api.html#API.favorites によると, Returnは list of Status objects となっており, 実際 type(favorited_all) とすると, <class 'tweepy.models.ResultSet'> が返ってくるかと思います。

この Statusの中身を見てみると

>>> s = favorited_all[0] >>> s. s.author s.favorited s.is_quote_status s.retweets( s.contributors s.geo s.lang s.source s.coordinates s.id s.parse( s.source_url s.created_at s.id_str s.parse_list( s.text s.destroy( s.in_reply_to_screen_name s.place s.truncated s.entities s.in_reply_to_status_id s.possibly_sensitive s.user s.extended_entities s.in_reply_to_status_id_str s.retweet( s.favorite( s.in_reply_to_user_id s.retweet_count s.favorite_count s.in_reply_to_user_id_str s.retweeted

のようになるので, 載せていただいたコードのloopの部分を

for favorited in favorited_all: favorited_id = favorited.id

のように変更すれば解決しそうです。

投稿2020/02/14 08:42

Schumi543

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/15 02:59

返信の程、ありがとうございます。 api.destroy_favorite(favorited_id._json['id'])をapi.destroy_favorite(favorited_id.id)に書き直すということでしょうか? なぜか上手くいかないです。
退会済みユーザー

退会済みユーザー

2020/02/15 03:03

間違えました。 Schumi543さんのおっしゃられた通りに書き直しましたが、'int' object has no attribute '_json'と表示され上手くいきません。 ご教授頂けると幸いです。
Schumi543

2020/02/15 04:40

すみません, 説明が不足していました。 ``` for favorited in favorited_all: favorited_id = favorited.id ``` としたので, favorited_id には int型のstatus_idが入っています。 したがって `api.destroy_favorite` の箇所も ``` api.destroy_favorite(favorited_id) ``` と変更してみてください。
Schumi543

2020/02/15 04:46

また`destory_favorite`返り値が statusならOKですが, 非同期APIのため即座には反映されないようです。 https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-favorites-destroy > The process invoked by this method is asynchronous. The immediately returned Tweet object may not indicate the resultant favorited status of the Tweet. A 200 OK response from this method will indicate whether the intended action was successful or not.
退会済みユーザー

退会済みユーザー

2020/02/15 04:53

そのようですね すぐに反映されないので失敗してしまったと思ってしまいました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問