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
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
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,