def authentication(ckey, csecret, atoken, atokensecret): consumer_key = ckey consumer_secret = csecret access_token = atoken access_token_secret = atokensecret auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) my_tweets = api.user_timeline() my_first_tweet = my_tweets[0].text following = api.friends() #d = defaultdict(list) dict_of_followed_tweets = {} for friend in following: follow_acc = api.get_user(friend.screen_name) dict_of_followed_tweets[friend.screen_name] = friend.timeline() #x = [method for method in dir(friend) if callable(getattr(friend, method))] #return template('My fi {{dict_of_followed_tweets}}', dict_of_followed_tweets=dict_of_followed_tweets) recommenderObj = Recommender() generatedTweet = recommenderObj.generate(my_tweets, 1, following, 2, dict_of_followed_tweets) return template('Result: {{generatedTweetHere}}',generatedTweetHere =generatedTweet)
def authentication(ckey, csecret, atoken, atokensecret, topic): consumer_key = ckey consumer_secret = csecret access_token = atoken access_token_secret = atokensecret auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) results = [ status._json for status in tweepy.Cursor(api.search, q=topic, count=1000).items(1000)] my_tweets = api.user_timeline() my_first_tweet = my_tweets[0].text following = api.followers() recommenderObj = Recommender() generatedTweet = recommenderObj.generate(my_tweets, 1, following, 2) accounts_recommend = recommenderObj.accounts_recommender(results) user_mentions = [ mention[0] for mention in accounts_recommend[0]] users_mentions_counts = [mention[1] for mention in accounts_recommend[0]] users = [user[0] for user in accounts_recommend[1]] users_counts = [user[1] for user in accounts_recommend[1]] return template("My first Tweet was: {{my_first_tweet_here}}, my generated text is {{generatedTweetHere}}" "Your Topic is: {{tweets_topic}}." "Here are some accounts that you may interested in:" "Among all the tweets:" "@{{first_mention}} was mentioned {{first_metion_count}} times." "@{{second_mention}} was mentioned {{second_metion_count}} times." "@{{third_mention}} was mentioned {{third_metion_count}} times." "{{first_user_count}} of @{{first_user}}'s tweets are about {{tweets_topic}}." "{{second_user_count}} of @{{second_user}}'s tweets are about {{tweets_topic}}." "{{third_user_count}} of @{{third_user}}'s tweets are about {{tweets_topic}}." , my_first_tweet_here = my_first_tweet, generatedTweetHere = generatedTweet, tweets_topic = topic, first_mention = user_mentions[0], second_mention = user_mentions[1], third_mention = user_mentions[2], first_metion_count = users_mentions_counts[0], second_metion_count = users_mentions_counts[1], third_metion_count = users_mentions_counts[2], first_user_count = users_counts[0], second_user_count = users_counts[1], third_user_count = users_counts[2], first_user = users[0], second_user = users[1], third_user = users[2])
def get(self): access_token = request.args.get('oauth_token') access_token_secret = request.args.get('oauth_token_secret') page = request.args.get('page') auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) #get user's information user = api.me() #connect database r.connect(host='ec2-52-51-162-183.eu-west-1.compute.amazonaws.com', port=28015, db='lovelace', password="******").repl() #get a list of screen_names users = list(r.db('lovelace').table('tweets').get_field('screen_name').run()) #user's screen_name screen_name = user._json['screen_name'] #get user's own timeline user_tweets = [tweet._json for tweet in api.user_timeline(count=50)] home_tweets = [] #if true, then this is the first time user uses this app #so we first get tweets directly from twitter API if screen_name not in users: home_tweets = [tweet._json for tweet in api.home_timeline(count=50) if tweet._json['user']['screen_name'] != screen_name] for item in home_tweets: r.db('lovelace').table('tweets').insert({'screen_name': screen_name,'tweet_id':item['id'], 'tweet': item}).run() r.db('lovelace').table('user_tokens').insert({'access_secret':access_token_secret, 'access_token':access_token, 'consumer_key':consumer_key, 'consumer_secret':consumer_secret, 'screen_name':screen_name, 'created_at':r.now().to_epoch_time().run()}).run() #if not, we get tweets directly from database else: data = r.db('lovelace').table('tweets').order_by(r.desc('tweet_id')).group('screen_name').limit(50).run() tweets = data[screen_name] r.db('lovelace').table('user_tokens').insert({'access_secret': access_token_secret, 'access_token': access_token, 'consumer_key': consumer_key, 'consumer_secret': consumer_secret, 'screen_name': screen_name, 'created_at': r.now().to_epoch_time().run()}).run() home_tweets = [tweet['tweet'] for tweet in tweets if tweet['tweet']['user']['screen_name'] != screen_name] # #fetch tweets of user's own time line # #TO-DO: Can this be removed now? It is no longer used when initialising the Recommmender Object. # users_tweets = [tweet._json for tweet in tweepy.Cursor(api.user_timeline, count=50).items(50)] # # #filter out the tweets that the user tweeted from the home timeline # #TO-DO: Can this be removed now? It is no longer used when initialising the Recommmender Object. # followed_tweets = [tweet for tweet in home_tweets if tweet['user']['screen_name'] != user._json['screen_name']] #give the user timeline and home timeline to the recommender system to make recommendation recommender_object = Recommender(home_tweets, user_tweets) recommended_tweets = recommender_object.generate(3, None, None) # print(recommended_tweets) # return "Hello world!" return jsonify(recommended_tweets)