Mercurial > pumpbridge > pumpbridge
diff src/twitter.coffee @ 22:b90e6df48d2d
eachLimit instead of each
author | Mathias Gebbe <mgebbe@intevation.de> |
---|---|
date | Mon, 16 Jun 2014 17:31:05 +0200 |
parents | a52b5b244e51 |
children | 8c56fdbac0fb |
line wrap: on
line diff
--- a/src/twitter.coffee Fri Jun 13 21:21:41 2014 +0200 +++ b/src/twitter.coffee Mon Jun 16 17:31:05 2014 +0200 @@ -28,6 +28,8 @@ FromESN = require("./fromESN") ToESN = require("./toESN") Sync = require("./sync") +util = require("util") +twitter = require("twitter") module.exports = (config) -> bridgeid = config.bridgeid @@ -65,6 +67,8 @@ separator = "?" authorization_endpoint + separator + "oauth_token=" + rt.token + return + getAccessToken: (site, rt, verifier, callback) -> oa = Twitter.getOAuth(site) oa.getOAuthAccessToken rt.token, rt.secret, verifier, callback @@ -89,13 +93,11 @@ return - sync: (user) -> + syncFromESN: (user) -> me = user.user_pumpio id = user.user_ESN.substr(0,user.user_ESN.indexOf('@')) token = user.oauth_token secret = user.extra_token - util = require("util") - twitter = require("twitter") twit = new twitter( consumer_key: client_id consumer_secret: client_secret @@ -109,13 +111,14 @@ Usermap.search {id: me + '_to_' + me}, callback (user, callback) -> if (user[0]?) + console.log "get feed from" + me Pump.getUserFeed(user[0],callback) else return (feed, callback) -> return if not feed? ti = new Date().getTime() - interval - async.eachSeries feed.items, ((post, callback) -> + async.eachLimit feed.items, 10, ((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") @@ -154,27 +157,43 @@ ), (err) -> callback null, 'done' ],(err, result) -> + console.log "done ToESN twitter user" + me + return + return + syncToESN: (user) -> + 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 + ) ###################################### # get tweets and post them to pump.io# ###################################### twit.verifyCredentials((data) -> #console.log util.inspect(data) + console.log "get twitter HomeTimeline " + me return ).getHomeTimeline {include_rts: true, count: 20 }, (data) -> - #console.log util.inspect(data) ti = (new Date().getTime() - interval) - async.each data, ((tweet,cb) -> + return if not data? or data.length is 0 + async.eachLimit data, 10, ((tweet, cb) -> async.waterfall [ (callback) -> - FromESN.search {uid: tweet.id + "@twitter_to_" + me, recipientUser: me}, callback + FromESN.search {uid: tweet.id + "@twitter_to_" + me}, callback (result, callback) -> return if result.length isnt 0 or tweet.user.id_str is id twitterdate = new Date(Date.parse(tweet.created_at.replace(/( +)/, " UTC$1"))) ts = Date.parse(twitterdate) if (ts >= ti) Sync.postParser tweet, null, 'twitter', callback - return + else + return (parsed, callback) -> Pump.postUser bridgeid, me, parsed, callback (pumppost, callback) -> @@ -189,12 +208,15 @@ , callback ], (err, result) -> cb() + return ), (err) -> + if (err) + console.log "Error: " + err + else + console.log "done ToESN twitter user" + me return return - parseTwitterDate : (text) -> - 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()