Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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])
Ejemplo n.º 3
0
    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)