Mercurial > pumpbridge
diff src/twitter.coffee @ 30:3e3fa35e3ce2
twitter sync likes, recommend mongodb
configure pump2twitter, twitter2pump in webui
author | Mathias Gebbe <mgebbe@intevation.de> |
---|---|
date | Thu, 28 Aug 2014 18:40:39 +0200 |
parents | faeb3b96bdeb |
children | 8238d312e281 |
line wrap: on
line diff
--- a/src/twitter.coffee Tue Jul 29 16:06:05 2014 +0200 +++ b/src/twitter.coffee Thu Aug 28 18:40:39 2014 +0200 @@ -117,7 +117,7 @@ (feed, callback) -> return if not feed? ti = new Date().getTime() - interval - async.eachLimit feed.items, 5, ((post, callback) -> + async.eachLimit feed.items, 1, ((post, callback) -> # do for each post ts = Date.parse(post.updated) if (ts >= ti and post.verb is "post" or post.verb is "share") and (post.object.objectType is "note" or post.object.objectType is "image") and (Pump.isPublicActivity(post)) and (typeof post.object.deleted is "undefined") @@ -185,13 +185,13 @@ return if not data? or data.length is 0 console.log "data isnt empty for " + me ti = (new Date().getTime() - interval) - async.eachLimit data, 1, ((tweet, cb) -> + async.eachLimit data, 3, ((tweet, cb) -> async.waterfall [ (callback) -> - FromESN.search {uid: tweet.id + "@twitter_to_" + me}, callback + FromESN.search {uid: tweet.id_str + "@twitter_to_" + me}, callback (result, callback) -> return if result.length isnt 0 or tweet.user.id_str is id - console.log "new tweet found" + console.log "tweet found" twitterdate = new Date(Date.parse(tweet.created_at.replace(/( +)/, " UTC$1"))) ts = Date.parse(twitterdate) if (ts >= ti) @@ -208,16 +208,16 @@ console.log "parse err " + err return FromESN.create - postid: tweet.id + "@twitter" + postid: tweet.id_str + "@twitter" sourceUser: tweet.user.id - sourcePost: 'https://twitter.com/'+tweet.user.name+"/status/" + tweet.id + sourcePost: 'https://twitter.com/'+tweet.user.screen_name+"/status/" + tweet.id_str pumpPost: pumppost.object.id recipientUser: me created: Date.now() , callback ], (err, result) -> console.log "post a tweet to user " + me - cb() + cb ), (err) -> if (err) console.log "Error: " + err @@ -225,6 +225,45 @@ console.log "done FromESN twitter user " + me return + postLike: (user) -> + i = 0 + me = user.user_pumpio + id = user.user_ESN.substr(0,user.user_ESN.indexOf('@')) + token = user.oauth_token + secret = user.extra_token + twit = new twitter( + consumer_key: client_id + consumer_secret: client_secret + access_token_key: token + access_token_secret: secret + ) + console.log "try 2 find twitter likes for " + me + async.waterfall [ + (callback) -> + Usermap.search {id: me + '_to_' + me}, callback + (pumpuser, callback) -> + Pump.getLikes(pumpuser[0], callback) + (likearray, callback) -> + return if not (likearray?) or likearray.length is 0 + likes = JSON.parse(likearray) + return if not (likes?) or likes.items.length is 0 + async.each likes.items,((note, cb) -> + async.waterfall [ + (callback) -> + FromESN.search {recipientUser: me, pumpPost: note.id}, callback + (fromesn, callback) -> + if (fromesn?) and fromesn.length isnt 0 and fromesn[0].sourcePost.indexOf('twitter.com') isnt -1 + #console.log fromesn[0] + obj = fromesn[0].postid.substr(0,fromesn[0].postid.indexOf('@')) + twit.post "/favorites/create.json", + id: obj + , (data) -> + console.log "Twitter " + obj + " liked" + ], (err, result) -> + ), (err) -> + ], (err, result) -> + return + getOAuth: (site) -> new OAuth(request_token_endpoint, access_token_endpoint, client_id, client_secret, "1.0", site.url("/authorized-for-twitter"), "HMAC-SHA1", null, # nonce size; use default "User-Agent": site.userAgent()