0

Twitter REST API のドキュメントを読みましたが、一度に 200 個から最大 800 個までフェッチできると書かれていることは知っています。ただし、できません。最後のツイートを max_id として使用し、別のリクエストを送信して 200 を取得していますが、想定される 800 制限の残りではなく、最初のリクエストの最後のツイートのみを受け取ります。

そこで少し調べてみたところ、他のアカウントからより多くのダイレクト メッセージを送信しているときに、他のダイレクト メッセージが消えていたことがわかりました (たとえば、「sup」というアカウントから 200 件のメッセージを受信し、あるアカウントから 5 件のメッセージを送信した場合)。 「foo」という名前のアカウントでは、「sup」は 195 件のダイレクト メッセージのみを表示し、「foo」は 5 件を表示します。これらの 5 件のメッセージは、Twitter の DM ウィンドウと API 呼び出しの両方で「sup」から消えます。

私はこれを行うために Twython を使用していますが、メッセージがチャット ログから消えていることが目に見えるので、リクエストに戻っても何も変わらないと思います。それは、Twitter が合計 200 個の DM しか保存しないということですか? それとも、私は何か完全に間違っているのですか?

これは、ダイレクト メッセージを取得するために使用していたコードです。ツイッターの DM コンソールで DM が消える理由をどう説明すればよいのか、私にはまだわからないことを覚えておいてください。

test_m = twitter.get_direct_messages(count=200)
    i = 0
    for x in test_m:
        print 'dm number = ' + str(i) + '| dm id= '+ str(x['id']) + ' |text= ' + x['text']
        i += 1

m_id = test_m[-1]['id']
test_m_2 = twitter.get_direct_messages(count=200, max_id=m_id)

このコードは、test_m を 200 項目の配列として返し、test_m_2 を test_m の最後の要素を含む 1 項目の配列として返します。

編集:まあ、まだ応答はありませんが、このメソッドは、私が行った他の API 呼び出し (ユーザー タイムライン、メンション タイムライン、リツイート) に対して 200 を超えるメッセージを正常に返すことを追加する必要があると考えました。私のテストでは、すべての DM インタラクションを通じて 200 の受信メッセージのみが Twitter に保存されると想定する必要があります。私が間違っている場合は、お知らせください!

4

2 に答える 2

2

ブライアン、

Twitter は過去 200 件以上のメッセージを保存しています。destroy_direct_message を使用してダイレクト メッセージの 1 つを削除すると、さらに 1 つの古いダイレクト メッセージにアクセスできます。

100 件の古いダイレクト メッセージを削除すると、さらに 100 件のメッセージにアクセスできるようになります。

max_id も page も機能させません。バグが Twython なのか Twitter なのかわかりません ;-(

JJ

于 2013-12-20T00:17:19.673 に答える