Esempio n. 1
0
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()')
Esempio n. 2
0
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()')
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)