def get_player_friends(team): g = nx.DiGraph() for player in team: player = tm.strip_none_values(player) screenName = player['screen_name'] g.add_node(screenName, player=True, **player) playerFriends = twitter.get_friends_list(screen_name=screenName) for friend in playerFriends['users']: friend = tm.strip_none_values(friend) g.add_node(friend['screen_name'], **friend) g.add_edge(screenName, friend['screen_name']) return g
def graph_bulk_friends(team, team_name): g = nx.DiGraph() for player in team: player = tm.strip_none_values(player) screenName = player['screen_name'] filename = '{}_proc/{}.db'.format(team_name, screenName) if os.path.isfile(filename): g.add_node(screenName, player=True, **player) friends = shelve.open(filename, flag='r') combined = list(itertools.chain.from_iterable(friends[screenName])) for friend in combined: friend = tm.strip_none_values(friend) g.add_node(friend['screen_name'], **friend) g.add_edge(screenName, friend['screen_name']) friends.close() return g
def get_player_tweets(team, network=None): search_status = shelve.open('search_status') lastId = None if network is None: g = nx.Graph() else: g = network count = 0 try: for player in team: player = tm.strip_none_values(player) playerId = player['id'] if playerId in g.node: continue #Already done this player! screenName = player['screen_name'] g.add_node(playerId, bipartite=0, **player) # I could use lastId to do disaster recovery, but there's only # two requests needed for 400 tweets... I can redo that and not feel bad. lastId, playerTweets = get_tweets(twitter, playerId) lastId, playerTweets2 = get_tweets(twitter, playerId, minId=lastId) lastId, playerTweets3 = get_tweets(twitter, playerId, minId=lastId) count += 3 playerTweets += playerTweets2 playerTweets += playerTweets3 for tweet in playerTweets: tweet_id = tweet['id'] author_id = tweet['user']['id'] author_screen_name = tweet['user']['screen_name'] tweet = tm.strip_none_values(tweet) g.add_node(tweet_id, author_id=author_id, author_screen_name=author_screen_name, bipartite=1, **tweet) g.add_edge(playerId, tweet_id) if count % 300 == 0: # I feel clever for this one sleep(900) #Sleep 15 minutes (twitter window) return g except: print('OOPS! Check for CRASHDUMP.graphml.gz !!') print(traceback.format_exc()) finally: nx.write_graphml(g, 'CRASHDUMP.graphml.gz')