def show_new_mentions(gid, since_id): oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) if since_id == '': #手动查看新 mentions response, content = a.statuses_mentions() content = json.loads(content) for item in reversed(content): message_count = get_max_message_count() message_id = item['id'] if not status_exists(message_id): memcache_add('%s%s'%(NUMBER_TO_ID_PREFIX, `message_count`), message_id) conversation = '%s: %s'%(item['user']['screen_name'], item['text']) memcache_add('%s%s'%(CONTENT_PREFIX, `message_count`), conversation) memcache_add('%s%s'%(SCREEN_NAME_PREFIX, `message_count`), item['user']['screen_name']) inc_max_message_count() update_last_mention(gid, item['id']) xmpp.send_message(gid, '%s #%s'%(conversation, message_count)) else: #自动获取新 mentions since_id = db.GqlQuery("SELECT * FROM users WHERE gid='%s'"%(gid))[0].last_mentions response, content = a.statuses_mentions(since_id=since_id) content = json.loads(content) for item in reversed(content): message_count = get_max_message_count() message_id = item['id'] if not status_exists(message_id): memcache_add('%s%s'%(NUMBER_TO_ID_PREFIX, `message_count`), message_id) conversation = '%s: %s'%(item['user']['screen_name'], item['text']) memcache_add('%s%s'%(CONTENT_PREFIX, `message_count`), conversation) memcache_add('%s%s'%(SCREEN_NAME_PREFIX, `message_count`), item['user']['screen_name']) inc_max_message_count() update_last_mention(gid, item['id']) xmpp.send_message(gid, '%s #%s'%(conversation, message_count))
def new_dm_notification(gid): oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) response, content = a.account_notification() content = json.loads(content) new_dm_num = content['direct_messages'] if new_dm_num: xmpp.send_message(gid, '你有 %s 封新私信'%(new_dm_num))
def retweet_statuses(gid, mes): params = mes.split(" ") retweet_id = get_status_real_id(gid, params[1]) if len(params) == 2: #没有附加内容 result = db.GqlQuery("SELECT * FROM users WHERE gid='%s'"%(gid))[0] oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) response, content = a.statuses_update( status = "RT@%s"%(memcache_get(CONTENT_PREFIX + params[1])), repost_status_id = retweet_id, ) else: #有附加内容 result = db.GqlQuery("SELECT * FROM users WHERE gid='%s'"%(gid))[0] oauth_token, oauth_secret = get_user_oauth_info(gid) retweet_content = ' '.join(mes.split(" ")[2:]) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) response, content = a.statuses_update( status = "%s RT@%s"%(retweet_content, memcache_get(CONTENT_PREFIX + params[1])), repost_status_id = retweet_id, )
def reply_statuses(gid, mes): params = mes.split(" ") reply_id = get_status_real_id(gid, params[1]) reply_content = ' '.join(mes.split(" ")[2:]) result = db.GqlQuery("SELECT * FROM users WHERE gid='%s'"%(gid))[0] oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) response, content = a.statuses_update( status = "@%s %s"%(memcache_get(SCREEN_NAME_PREFIX + params[1]), reply_content), in_reply_to_status_id = reply_id, )
def show_new_replies(gid): oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) response, content = a.statuses_replies() content = json.loads(content) for item in reversed(content): message_count = get_max_message_count() message_id = item['id'] if not status_exists(message_id): memcache_add('%s%s'%(NUMBER_TO_ID_PREFIX, `message_count`), message_id) conversation = '%s: %s'%(item['user']['screen_name'], item['text']) memcache_add('%s%s'%(SCREEN_NAME_PREFIX, `message_count`), item['user']['screen_name']) inc_max_message_count() xmpp.send_message(gid, '%s #%s'%(conversation, message_count))
def auto_refresh_home_timeline(gid, last_id): #待合并 oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) response, content = a.statuses_home_timeline(since_id=last_id) content = json.loads(content) updated_status_id = content[0]['id'] update_last_home_tl(gid, updated_status_id) for item in reversed(content): message_count = get_max_message_count() message_id = item['id'] if not status_exists(message_id): #判重 memcache_add('%s%s'%(NUMBER_TO_ID_PREFIX, `message_count`), message_id) conversation = '%s: %s'%(item['user']['screen_name'], item['text']) memcache_add('%s%s'%(SCREEN_NAME_PREFIX, `message_count`), item['user']['screen_name']) memcache_add('%s%s'%(CONTENT_PREFIX, `message_count`), conversation) inc_max_message_count() xmpp.send_message(gid, '%s #%s'%(conversation, message_count))
def auto_refresh_reply(gid, last_id): oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) if last_id != '': response, content = a.statuses_replies(since_id=last_id) else: response, content = a.statuses_replies() content = json.loads(content) for item in reversed(content): message_count = get_max_message_count() message_id = item['id'] if not status_exists(message_id): memcache_add('%s%s'%(NUMBER_TO_ID_PREFIX, `message_count`), message_id) conversation = '%s: %s'%(item['user']['screen_name'], item['text']) memcache_add('%s%s'%(CONTENT_PREFIX, `message_count`), conversation) memcache_add('%s%s'%(SCREEN_NAME_PREFIX, `message_count`), item['user']['screen_name']) inc_max_message_count() update_last_reply(gid, item['id']) #更新最新的 id xmpp.send_message(gid, '%s #%s'%(conversation, message_count))
def main(): a = fanfou.fanfou( consumer_key, consumer_secret, oauth_token, oauth_token_secret) db_name = 'followers.sqlite3' if os.path.isfile(db_name): conn = sqlite3.connect(db_name) c = conn.cursor() else: conn = sqlite3.connect(db_name) c = conn.cursor() c.execute('''create table followers (ids text)''') conn.commit() response, content = a.followers_ids() if response['status'] == '200': c.execute("""INSERT INTO followers values('%s')""" % content) conn.commit() old_ids = c.execute("""SELECT * FROM 'followers'""").fetchall()[-1] result = compare(old_ids=old_ids, new_ids=content) for each_id in result: print each_id c.close() conn.close()
def update_statuses(gid, mes): oauth_token, oauth_secret = get_user_oauth_info(gid) a = fanfou.fanfou(settings.consumer_key, settings.consumer_secret, oauth_token, oauth_secret) response, content = a.statuses_update(status=mes) t = json.loads(content) easter_color_eggs(gid, mes)