def __init__(self, user, retweetFactor=None, impactFactor=None, mcFactor=None, TFIDFArray = None): self._api = APISingleton.getInstance() self.id = user.id self.screen_name = user.screen_name self.userObj = user self.retweetFactor = retweetFactor self.impactFactor = impactFactor self.mcFactor = mcFactor self.TFIDFArray = TFIDFArray self.similarity = None if retweetFactor == None: self.retweetFactor = self.__calcRetweetFactor() self.impactFactor = self.__calcImpactFactor() self.TFIDFArray = self._calcTFIDF()
def __init__(self, user, retweetFactor=None, impactFactor=None, mcFactor=None, TFIDFArray=None): self._api = APISingleton.getInstance() self.id = user.id self.screen_name = user.screen_name self.userObj = user self.retweetFactor = retweetFactor self.impactFactor = impactFactor self.mcFactor = mcFactor self.TFIDFArray = TFIDFArray self.similarity = None if retweetFactor == None: self.retweetFactor = self.__calcRetweetFactor() self.impactFactor = self.__calcImpactFactor() self.TFIDFArray = self._calcTFIDF()
def getUsersToFollow(keyword, count=10, currentFriends=[]): twitterApi = APISingleton.getInstance() users = twitterApi.search_users(q=keyword, per_page=random.randint(20, 200), page=random.randint(1,10)) results = [] goodResults = [] for u in users: try: eUser = EvalUser.load(u) results.append(eUser) results += eUser.BFS(100, random_walk=True) goodResults = [u for u in results if u.getImpactFactor()*u.getRetweetFactor() > 0.05 and u.getUserObj().id not in currentFriends] print "Keyword=",keyword, "GoodResults#=",len(goodResults) if len(goodResults) > count: return goodResults except Exception: traceback.print_exc(sys.stdout) pass return goodResults
def followUsers(userInfo, users): if not len(users): return; api = APISingleton.getInstanceForUser(userInfo) cur = DBSingleton.getInstance().cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute("select nextval('tracking_seq')") id = cur.fetchone()[0] userId = userInfo["oauth_uid"]; cur.execute("""insert into tracking(tracking_id,tracking_user_id,tracking_date, tracking_count) values(%s,%s,now(), %s) """, (id, userId, len(users))) for u in users: try: user = u.getUserObj() api.create_friendship(user_id=user.id) cur.execute("""insert into tracking_users(tracking_id, current_id, user_id, user_screen_name, similarity) values(%s,%s,%s,%s, %s)""", (id, userId, user.id, user.screen_name, u.getSim())) except Exception,e: print e
def followUsers(userInfo, users): if not len(users): return api = APISingleton.getInstanceForUser(userInfo) cur = DBSingleton.getInstance().cursor( cursor_factory=psycopg2.extras.DictCursor) cur.execute("select nextval('tracking_seq')") id = cur.fetchone()[0] userId = userInfo["oauth_uid"] cur.execute( """insert into tracking(tracking_id,tracking_user_id,tracking_date, tracking_count) values(%s,%s,now(), %s) """, (id, userId, len(users))) for u in users: try: user = u.getUserObj() api.create_friendship(user_id=user.id) cur.execute( """insert into tracking_users(tracking_id, current_id, user_id, user_screen_name, similarity) values(%s,%s,%s,%s, %s)""", (id, userId, user.id, user.screen_name, u.getSim())) except Exception, e: print e
def loadFromTwitter(cls, userId, userObj=None): if not userObj: userObj = APISingleton.getInstance().get_user(user_id=userId) ret = cls(userObj) ret.save() return ret
import sys import traceback sys.path.append("../lib/") from tweeapi.IR import getTFIDFArray from db import DBSingleton import psycopg2.extras import simplejson from tweeapi import APISingleton from tweeapi.utils import EvalUser if __name__ == "__main__": twitterApi = APISingleton.getInstance() tweets = twitterApi.search(q=sys.argv[1].lower(), rpp=100, page=1, force=True) tweets = [t.text for t in tweets] tfidfArray = getTFIDFArray(tweets) db = DBSingleton.getInstance() cur = db.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute( "select * from users where retweet_factor > 0.2 and impact_factor > 0.2 limit 1000;" ) results = [] for row in cur:
self.queue = queue threading.Thread.__init__(self) def run(self): global results while True: user = self.queue.get() try: results.append(EvalUser.load(user)) except Exception: traceback.print_exc(sys.stderr) self.queue.task_done() if __name__ == "__main__": twitterApi = APISingleton.getInstance() users = twitterApi.search_users(q=sys.argv[1], per_page=200) results = [] queue = Queue.Queue() for i in range(20): t = EvalThread(queue) t.setDaemon(True) t.start() for u in users: queue.put(u) queue.join() results.sort() results.reverse() for i in results:
def loadFromTwitter(cls, userId, userObj = None): if not userObj: userObj = APISingleton.getInstance().get_user(user_id=userId) ret = cls(userObj) ret.save() return ret