def random_picker(ids=CCAA.target, path="data/excahnge.json"):
    target = User(ids)
    exchange_list = target.follow_exchanger()
    random.shuffle(exchange_list)
    pick = exchange_list.copy()
    for _ in range(10):
        user = User(random.sample(set(pick), 1)[0])
        user_info = user.user_info()
        if user_info is not None:
            ids, name = user_info["id"], user_info["name"]
            print(name)
            pick += user.follow_exchanger()
    random.shuffle(pick)
    for ids in pick[:50]:
        print("get ", ids, "'s tweet")
        user = User(ids)
        if not Twitter.api_use_start:
            Twitter.api_use_start = time.time()
        user.save_timeline()
        if Twitter.api_use_count >= 150:
            sleep_time = max(0, 900 - (time.time() - Twitter.api_use_start))
            print("limit!! sleep : ", sleep_time, "s")
            time.sleep(sleep_time)
            Twitter.api_use_start = None
            Twitter.api_use_count = 0
Пример #2
0
def convert_dicts_in_status_to_obj(status: Status) -> Status:
    """Update each attribute of status with Twitter object"""
    keys_to_update = ["urls", "user", "user_mentions", "quoted_status"]
    for key in keys_to_update:
        if key == "urls":
            status.urls = [Url(**url) for url in status.__getattribute__(key)]
        elif key == "user":
            status.user = User(**status.__getattribute__(key))
        elif key == "user_mentions":
            status.user_mentions = [
                User(**user) for user in status.__getattribute__(key)
            ]
        elif key == "quoted_status":
            status.quoted_status = (convert_dicts_in_status_to_obj(
                status=Status(**status.__getattribute__(key)))
                                    if status.__getattribute__(key) else None)
    return status
 def fetch_user(self, screen_name=None, id=None):
     assert (id is not None or screen_name is not None)
     userMongo = mongo.usersCollection.find(
         {'$or': [{
             'screen_name': screen_name
         }, {
             'id': id
         }]})
     if userMongo.count() == 0:
         screen_name = screen_name if screen_name is not None else id
         user = twitterInstance.fetchUser(screen_name)
         mongo.usersCollection.insert(user.__dict__)
     else:
         user = [user for user in userMongo]
         user = User(user[0])
     return user
Пример #4
0
    False,
    'retweeted_status':
    None,
    'scopes':
    None,
    'source':
    '<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>',
    'text':
    None,
    'truncated':
    False,
    'tweet_mode':
    'extended',
    'urls': [],
    'user':
    User(ID=925031723233972224, ScreenName='moabridge'),
    'user_mentions': [],
    'withheld_copyright':
    None,
    'withheld_in_countries':
    None,
    'withheld_scope':
    None
}

retweet_without_comment = {
    '_json': {
        'contributors':
        None,
        'coordinates':
        None,