async def update_db(data): parsed = json.loads(data) print(parsed['text']) vote, coin = is_vote(parsed["text"]) if None in [vote, coin]: return print(f'New vote detected : {coin}') async with create_engine( user="******", database="deviant", host="127.0.0.1", password="******", port=5432, ) as engine: mgr = SQLModelManager.instance() mgr.database = engine user, created = await User.objects.get_or_create(id=int(parsed['id'])) if created: user.name = parsed["user"]["name"] user.screen_name = parsed["user"]["screen_name"] user.followers_count = parsed["user"]["followers_count"] user.statuses_count = parsed["user"]["statuses_count"] await user.save() new_record = Tweet() new_record.id = parsed["id"] new_record.text = parsed["text"] new_record.created_at = tdate_to_timestamp(parsed["created_at"]) new_record.user = user new_record.coin = coin.upper() await new_record.save(force_insert=True)
def update_tweet(): new_tweet = Tweet() new_tweet.id = request.form['id'] new_tweet.text = request.form['text'] db.session.query(Tweet).filter_by(id=new_tweet.id).update( {"text": new_tweet.text}) db.session.commit() return tweet_schema.jsonify(new_tweet)
async def update_db(): last_retweet_from_db = await get_last_retweet_from_db() retweets_from_twitter = api.retweets(TWEET_ID, count=100) if not last_retweet_from_db: new_retweets = [ r for r in retweets_from_twitter if r.created_at > datetime(2019, 8, 31, 0, 0) ] else: new_retweets = [ r for r in retweets_from_twitter if r.created_at > last_retweet_from_db.created_at ] my_logger.debug(f"{len(new_retweets)} retweets to insert in db") async with create_engine( user="******", database="deviant", host="127.0.0.1", password="******", port=5432, ) as engine: mgr = SQLModelManager.instance() mgr.database = engine for retweet in new_retweets: user, created = await User.objects.get_or_create(id=int(retweet.user.id)) if created: my_logger.debug(f"New User created {retweet.user.screen_name}") user.name = retweet.user.name user.screen_name = retweet.user.screen_name user.followers_count = retweet.user.followers_count user.statuses_count = retweet.user.statuses_count await user.save() new_record = Tweet() new_record.id = retweet.id new_record.text = retweet.text new_record.created_at = retweet.created_at new_record.user = user new_record.retweet = True my_logger.debug(f"New retweet created {retweet.text}") await new_record.save(force_insert=True)
def _handle_tweets(self, user): try: tweets = self.api.user_timeline(user.screen_name, count=200) except tweepy.error.TweepError: print('Error downloading tweets for {}'.format(user.screen_name)) return for tweet_data in tweets: tweet = self.session.query(Tweet).get(tweet_data.id) if tweet is None: tweet = Tweet() is_new = True else: is_new = False tweet.id = tweet_data.id tweet.text = tweet_data.text tweet.retweet_count = tweet_data.retweet_count tweet.user = user self.session.add(tweet) self.session.commit() if is_new: print('Saving entities for tweet {}'.format(tweet.id)) self._handle_entities(tweet, tweet_data) self.session.commit() else: print('Skipping entities for tweet {}'.format(tweet.id)) print('Downloaded {} tweets for user {}'.format( len(tweets), user.screen_name)) self.session.commit()