def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200): users = [] node_info = tu.getUserInfo(t, r, screen_names=[start_node]) users.append(node_info[0]['id']) getFriends = functools.partial(tu._getFriendsOrFollowersUsingFunc, t.friends.ids, 'friend_ids', t, r) friend_ids = getFriends(screen_name=start_node) #apply bread-first to get friends' friends depth = 1 next_queue = [u for u in friend_ids] users.extend(next_queue) while depth < depth_limit: #exploit the users only have less than 200 friends # depth += 1 (queue, next_queue) = (next_queue, []) print "%d level, %d users to be exploited" % (depth, len(queue)) for _id in queue: #get friend ids try: friend_ids = getFriends(user_id=_id) if len(friend_ids) > friend_limit: print "too much friends %d" % len(friend_ids) continue next_queue.extend(friend_ids) except: print >> sys.stderr, "Error encountered for %s" % _id break users.extend(next_queue) return users
def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200): users = [] node_info = tu.getUserInfo(t, r, screen_names=[start_node]) users.append(node_info[0]["id"]) getFriends = functools.partial(tu._getFriendsOrFollowersUsingFunc, t.friends.ids, "friend_ids", t, r) friend_ids = getFriends(screen_name=start_node) # apply bread-first to get friends' friends depth = 1 next_queue = [u for u in friend_ids] users.extend(next_queue) while depth < depth_limit: # exploit the users only have less than 200 friends # depth += 1 (queue, next_queue) = (next_queue, []) print "%d level, %d users to be exploited" % (depth, len(queue)) for _id in queue: # get friend ids try: friend_ids = getFriends(user_id=_id) if len(friend_ids) > friend_limit: print "too much friends %d" % len(friend_ids) continue next_queue.extend(friend_ids) except: print >> sys.stderr, "Error encountered for %s" % _id break users.extend(next_queue) return users
def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200): users = [] tu.getUserInfo(t, r, screen_names=[start_node]) users.append(start_node) getFriends = functools.partial(tu._getFriendsOrFollowersUsingFunc, t.friends.ids, 'friend_ids', t, r) friend_ids = getFriends(screen_name=start_node) #get the userinformation of friends friend_infos = tu.getUserInfo(t, r, user_ids=friend_ids, sample=0.2) #apply bread-first to get friends' friends depth = 1 next_queue = [u['screen_name'] for u in friend_infos] users.extend(next_queue) while depth < depth_limit: #exploit the users only have less than 200 friends # depth += 1 (queue, next_queue) = (next_queue, []) print "%d level, %d users to be exploited" % (depth, len(queue)) for screen_name in queue: #get friend ids try: friend_ids = getFriends(screen_name=screen_name) if len(friend_ids) > friend_limit: continue filter_friend_ids, exist_friend_ids = filter_already_download( friend_ids, r) #get friend Info friend_infos = tu.getUserInfo(t, r, user_ids=filter_friend_ids, sample=0.2) exist_friend_infos = loadUserInfo(exist_friend_ids, r) friend_infos.extend(exist_friend_infos) next_queue.extend([u['screen_name'] for u in friend_infos]) except: print >> sys.stderr, "Error encountered for %s" % screen_name continue users.extend(next_queue) return users
def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200): users = [] tu.getUserInfo(t, r, screen_names=[start_node]) users.append(start_node) getFriends = functools.partial( tu._getFriendsOrFollowersUsingFunc, t.friends.ids, 'friend_ids', t, r) friend_ids = getFriends(screen_name=start_node) #get the userinformation of friends friend_infos = tu.getUserInfo(t, r, user_ids=friend_ids, sample=0.2) #apply bread-first to get friends' friends depth = 1 next_queue = [u['screen_name'] for u in friend_infos] users.extend(next_queue) while depth < depth_limit: #exploit the users only have less than 200 friends # depth += 1 (queue, next_queue) = (next_queue, []) print "%d level, %d users to be exploited" % (depth, len(queue)) for screen_name in queue: #get friend ids try: friend_ids = getFriends(screen_name=screen_name) if len(friend_ids) > friend_limit: continue filter_friend_ids, exist_friend_ids = filter_already_download(friend_ids, r) #get friend Info friend_infos = tu.getUserInfo(t, r, user_ids=filter_friend_ids, sample=0.2) exist_friend_infos = loadUserInfo(exist_friend_ids, r) friend_infos.extend(exist_friend_infos) next_queue.extend([u['screen_name'] for u in friend_infos]) except: print >> sys.stderr, "Error encountered for %s" % screen_name continue users.extend(next_queue) return users
def crawl( screen_names, friends_limit=10000, followers_limit=10000, depth=1, friends_sample=.2, followers_sample=.1, ): getUserInfo(t, r, screen_names=screen_names) for screen_name in screen_names: friend_ids = getFriends(screen_name, limit=friends_limit) follower_ids = getFollowers(screen_name, limit=followers_limit) friends_info = getUserInfo(t, r, user_ids=friend_ids, sample=friends_sample) followers_info = getUserInfo(t, r, user_ids=follower_ids, sample=followers_sample) next_queue = [u['screen_name'] for u in friends_info + followers_info] d = 1 while d < depth: d += 1 (queue, next_queue) = (next_queue, []) for _screen_name in queue: friend_ids = getFriends(_screen_name, limit=friends_limit) follower_ids = getFollowers(_screen_name, limit=followers_limit) next_queue.extend(friend_ids + follower_ids) getUserInfo(t, r, user_ids=next_queue)
def crawl(screen_names, friends_limit=10000, followers_limit=10000, depth=1, friends_sample=0.2, followers_sample=0.1): getUserInfo(t, r, screen_names=screen_names) for screen_name in screen_names: friend_ids = getFriends(screen_name, limit=friends_limit) follower_ids = getFollowers(screen_name, limit=followers_limit) friends_info = getUserInfo(t, r, user_ids=friend_ids, sample=friends_sample) followers_info = getUserInfo(t, r, user_ids=follower_ids, sample=followers_sample) next_queue = [u["screen_name"] for u in friends_info + followers_info] d = 1 while d < depth: d += 1 (queue, next_queue) = (next_queue, []) for _screen_name in queue: friend_ids = getFriends(_screen_name, limit=friends_limit) follower_ids = getFollowers(_screen_name, limit=followers_limit) next_queue.extend(friend_ids + follower_ids) getUserInfo(t, r, user_ids=next_queue)