def fetch_user_data(screen_name=None): print(screen_name) api = api_client() twitter_user = api.get_user(screen_name) statuses = api.user_timeline(screen_name, tweet_mode="extended", count=300, exclude_replies=False, include_rts=True) print("STATUSES COUNT:", len(statuses)) #new_book = Book(title=request.form["book_title"], author_id=request.form["author_name"]) #db.session.add(new_book) #db.session.commit() # # STORE USER # # get existing user from the db or initialize a new one: db_user = User.query.get(twitter_user.id) or User(id=twitter_user.id) db_user.screen_name = twitter_user.screen_name db_user.name = twitter_user.name db_user.location = twitter_user.location db_user.followers_count = twitter_user.followers_count db.session.add(db_user) db.session.commit() #breakpoint() # # STORE TWEETS # all_tweet_texts = [status.full_text for status in statuses] embeddings = list( basilica_connection.embed_sentences(all_tweet_texts, model="twitter")) print("NUMBER OF EMBEDDINGS", len(embeddings)) # TODO: explore using the zip() function maybe... counter = 0 for status in statuses: print(status.full_text) print("----") #print(dir(status)) # get existing tweet from the db or initialize a new one: db_tweet = Tweet.query.get(status.id) or Tweet(id=status.id) db_tweet.user_id = status.author.id # or db_user.id db_tweet.full_text = status.full_text #embedding = basilica_connection.embed_sentence(status.full_text, model="twitter") # todo: prefer to make a single request to basilica with all the tweet texts, instead of a request per tweet embedding = embeddings[counter] print(len(embedding)) db_tweet.embedding = embedding db.session.add(db_tweet) counter += 1 db.session.commit() return "OK"
def create_user(): print("FORM DATA:", dict(request.form)) # todo: store in database print(request.form["screen_name"]) api = api_client() twitter_user = api.get_user(request.form["screen_name"]) statuses = api.user_timeline( request.form["screen_name"], tweet_mode="extended", count=150) #, exclude_replies=True, include_rts=False) print("STATUSES COUNT:", len(statuses)) # STORE USER # get existing user from the db or initialize a new one: db_user = User.query.get(twitter_user.id) or User( id=twitter_user.id) #if not in DB add to db. db_user.screen_name = twitter_user.screen_name db_user.name = twitter_user.name db_user.location = twitter_user.location db_user.followers_count = twitter_user.followers_count db.session.add(db_user) db.session.commit() #breakpoint() # STORE TWEETS all_tweet_texts = [status.full_text for status in statuses] embeddings = list( basilica_connection.embed_sentences(all_tweet_texts, model="twitter")) print("NUMBER OF EMBEDDINGS", len(embeddings)) # TODO: explore using the zip() function maybe... counter = 0 for status in statuses: print(status.full_text) print("----") #print(dir(status)) # get existing tweet from the db or initialize a new one: db_tweet = Tweet.query.get(status.id) or Tweet(id=status.id) db_tweet.user_id = status.author.id # or db_user.id db_tweet.full_text = status.full_text #embedding = basilica_client.embed_sentence(status.full_text, model="twitter") # todo: prefer to make a single request to basilica with all the tweet texts, instead of a request per tweet embedding = embeddings[counter] print(len(embedding)) db_tweet.embedding = embedding db.session.add(db_tweet) counter += 1 db.session.commit() return redirect(f"/user_list")
def store_twitter_user_data(screen_name): api = api_client() twitter_user = api.get_user(screen_name) #statuses = api.user_timeline(screen_name, tweet_mode="extended", count=150, exclude_replies=True, include_rts=False) statuses = api.user_timeline(screen_name, tweet_mode="extended", count=150) #return jsonify({"user": user._json, "tweets": [s._json for s in statuses]}) db_user = User.query.get(twitter_user.id) or User(id=twitter_user.id) db_user.screen_name = twitter_user.screen_name db_user.name = twitter_user.name db_user.location = twitter_user.location db_user.followers_count = twitter_user.followers_count db.session.add(db_user) db.session.commit() #return "OK" #breakpoint() print("STATUS COUNT:", len(statuses)) # basilica_api = basilica_client() all_tweet_texts = [status.full_text for status in statuses] embeddings = list( basilica_client.embed_sentences(all_tweet_texts, model="twitter")) print("NUMBER OF EMBEDDINGS", len(embeddings)) # TODO: explore using the zip() function maybe... counter = 0 for status in statuses: print(status.full_text) print("----") #print(dir(status)) # Find or create database tweet: db_tweet = Tweet.query.get(status.id) or Tweet(id=status.id) db_tweet.user_id = status.author.id # or db_user.id db_tweet.full_text = status.full_text #embedding = basilica_client.embed_sentence(status.full_text, model="twitter") # todo: prefer to make a single request to basilica with all the tweet texts, instead of a request per tweet embedding = embeddings[counter] print(len(embedding)) db_tweet.embedding = embedding db.session.add(db_tweet) counter += 1 db.session.commit() return db_user, statuses