1

特定のユーザーのツイートをすべて取得しようとしています。

3600 ツイートの取得に制限があることはわかっているので、なぜこの行からこれ以上ツイートを取得できないのか不思議に思っています。

https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=mybringback&count=3600

これを修正する方法を知っている人はいますか?

4

2 に答える 2

1

API ドキュメントでは、この呼び出しが返すステータスの最大数は 200 であると指定されています。

https://dev.twitter.com/docs/api/1/get/statuses/user_timeline

試行して取得するツイートの数を最大 200 まで指定します。カウントの値は、カウントが適用された後に一時停止または削除されたコンテンツが削除されるため、返されるツイートの数の制限と考えるのが最適です。include_rts が指定されていない場合でも、リツイートはカウントに含まれます。この API メソッドを使用する場合は、常に include_rts=1 を送信することをお勧めします。

于 2013-03-07T16:29:39.157 に答える
0

まさにそれをしなければならなかったプロジェクトに私が使用したものは次のとおりです。

import json
import commands

import time

def get_followers(screen_name):

    followers_list = []

    # start cursor at -1
    next_cursor = -1

    print("Getting list of followers for user '%s' from Twitter API..." % screen_name)

    while next_cursor:

        cmd = 'twurl "/1.1/followers/ids.json?cursor=' + str(next_cursor) + \
                '&screen_name=' + screen_name + '"'

        (status, output) = commands.getstatusoutput(cmd)

        # convert json object to dictionary and ensure there are no errors
        try:
            data = json.loads(output)

            if data.get("errors"):

                # if we get an inactive account, write error message
                if data.get('errors')[0]['message'] in ("Sorry, that page does not exist",
                                                        "User has been suspended"):

                    print("Skipping account %s. It doesn't seem to exist" % screen_name)
                    break

                elif data.get('errors')[0]['message'] == "Rate limit exceeded":
                    print("\t*** Rate limit exceeded ... waiting 2 minutes ***")
                    time.sleep(120)
                    continue

                # otherwise, raise an exception with the error
                else:

                    raise Exception("The Twitter call returned errors: %s"
                                    % data.get('errors')[0]['message'])

            if data.get('ids'):
                print("\t\tFound %s followers for user '%s'" % (len(data['ids']), screen_name))
                followers_list += data['ids']

            if data.get('next_cursor'):
                next_cursor = data['next_cursor']
            else:
                break

        except ValueError:
            print("\t****No output - Retrying \t\t%s ****" % output)

    return followers_list



screen_name = 'AshwinBalamohan' 
followers = get_followers(screen_name)
print("\n\nThe followers for user '%s' are:\n%s" % followers)

これを機能させるには、https ://github.com/marcel/twurl から入手できる Ruby gem 'Twurl' をインストールする必要があります。

Twurl は他の Python Twitter ラッパーよりも扱いやすいことがわかったので、Python から呼び出すことにしました。Twurl と Twitter API キーのインストール方法を説明したい場合はお知らせください。

于 2013-03-07T18:10:58.057 に答える