def updateTwitterUser(body): try: jData = json.loads(body) user = jData['metadata']['post']['user'] palala.cache('twitter:user:id:%s' % user['id'], json.dumps(user)) except: palala.utils.dumpException('updateTwitterUser()')
def processTwitter(publish, cfgTwitter): api = twitter.Api(username=cfgTwitter['userid'], password=cfgTwitter['key']) try: since_id = long(palala.cache('twitter:%s:friends:sinceid' % cfgTwitter['userid'])) except: since_id = None while True: print 'polling Friends Timeline' try: for status in api.GetFriendsTimeline(since_id=since_id): item = status.AsDict() data = { 'source': { 'type': 'twitter', 'channel': 'friends', 'resource': cfgTwitter['userid'], }, 'timestamp': '%s' % datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ'), 'metadata': { 'post': item }, 'event': 'inbound', } publish('twitter', 'post', 'inbound', 'twitter.post', json.dumps(data)) if not since_id or item['id'] > since_id: since_id = item['id'] palala.cache('twitter:%s:friends:sinceid' % cfgTwitter['userid'], '%s' % since_id) except: palala.utils.dumpException('exception during Timeline poll') time.sleep(60)
def processTwitter(publish, cfgTwitter): api = twitter.Api(username=cfgTwitter['userid'], password=cfgTwitter['key']) try: since_id = long( palala.cache('twitter:%s:friends:sinceid' % cfgTwitter['userid'])) except: since_id = None while True: print 'polling Friends Timeline' try: for status in api.GetFriendsTimeline(since_id=since_id): item = status.AsDict() data = { 'source': { 'type': 'twitter', 'channel': 'friends', 'resource': cfgTwitter['userid'], }, 'timestamp': '%s' % datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ'), 'metadata': { 'post': item }, 'event': 'inbound', } publish('twitter', 'post', 'inbound', 'twitter.post', json.dumps(data)) if not since_id or item['id'] > since_id: since_id = item['id'] palala.cache('twitter:%s:friends:sinceid' % cfgTwitter['userid'], '%s' % since_id) except: palala.utils.dumpException('exception during Timeline poll') time.sleep(60)
def twitterToAtom(jData): s = jData[ 'timestamp'][:19] # 2008-08-19T19:45:14Z or 2008-08-19T19:45:14.183Z t = time.strptime(s, '%Y-%m-%dT%H:%M:%S') createDate = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], t[6]) # s = jData['metadata']['post']['created_at'][:19] # Fri Nov 13 07:45:00 +0000 2009 # t = time.strptime(s, '%Y-%m-%dT%H:%M:%S') # postDate = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]) postDate = createDate postID = '%s' % jData['metadata']['post']['id'] userID = '%s' % jData['metadata']['post']['user']['id'] username = '******' % jData['metadata']['post']['user']['screen_name'] fullname = username uData = palala.cache('twitter:user:id:%s' % userID) if uData is not None: jUser = json.loads(uData) fullname = jUser['name'] username = jUser['screen_name'] guid = '%s-%s-%s' % (jData['source']['type'], userID, postID) postURL = 'http://twitter.com/%s/status/%s' % (username, postID) atom = {} atom['guid'] = guid atom['referenceURL'] = postURL atom['uri'] = postURL atom['createDate'] = createDate.strftime('%Y-%m-%dT%H:%M:%S+00:00') atom['postDate'] = postDate.strftime('%Y-%m-%dT%H:%M:%S+00:00') atom['title'] = 'Post from %s (via )' % username atom['fullname'] = fullname atom['username'] = username atom['content'] = jData['metadata']['post']['text'] return atom['guid'], toAtom(atom)
def twitterToAtom(jData): s = jData['timestamp'][:19] # 2008-08-19T19:45:14Z or 2008-08-19T19:45:14.183Z t = time.strptime(s, '%Y-%m-%dT%H:%M:%S') createDate = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]) # s = jData['metadata']['post']['created_at'][:19] # Fri Nov 13 07:45:00 +0000 2009 # t = time.strptime(s, '%Y-%m-%dT%H:%M:%S') # postDate = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]) postDate = createDate postID = '%s' % jData['metadata']['post']['id'] userID = '%s' % jData['metadata']['post']['user']['id'] username = '******' % jData['metadata']['post']['user']['screen_name'] fullname = username uData = palala.cache('twitter:user:id:%s' % userID) if uData is not None: jUser = json.loads(uData) fullname = jUser['name'] username = jUser['screen_name'] guid = '%s-%s-%s' % (jData['source']['type'], userID, postID) postURL = 'http://twitter.com/%s/status/%s' % (username, postID) atom = {} atom['guid'] = guid atom['referenceURL'] = postURL atom['uri'] = postURL atom['createDate'] = createDate.strftime('%Y-%m-%dT%H:%M:%S+00:00') atom['postDate'] = postDate.strftime('%Y-%m-%dT%H:%M:%S+00:00') atom['title'] = 'Post from %s (via )' % username atom['fullname'] = fullname atom['username'] = username atom['content'] = jData['metadata']['post']['text'] return atom['guid'], toAtom(atom)