Mercurial > pumpbridge
comparison 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 |
comparison
equal
deleted
inserted
replaced
29:34cfa565f565 | 30:3e3fa35e3ce2 |
---|---|
115 else | 115 else |
116 return | 116 return |
117 (feed, callback) -> | 117 (feed, callback) -> |
118 return if not feed? | 118 return if not feed? |
119 ti = new Date().getTime() - interval | 119 ti = new Date().getTime() - interval |
120 async.eachLimit feed.items, 5, ((post, callback) -> | 120 async.eachLimit feed.items, 1, ((post, callback) -> |
121 # do for each post | 121 # do for each post |
122 ts = Date.parse(post.updated) | 122 ts = Date.parse(post.updated) |
123 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") | 123 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") |
124 ToESN.search {uid: post.object.id + "@twitter"}, (err, result) -> | 124 ToESN.search {uid: post.object.id + "@twitter"}, (err, result) -> |
125 if result.length is 0 | 125 if result.length is 0 |
183 ).getHomeTimeline {include_rts: true, count: 15 }, (data) -> | 183 ).getHomeTimeline {include_rts: true, count: 15 }, (data) -> |
184 console.log "got twitter HomeTimeline " + me | 184 console.log "got twitter HomeTimeline " + me |
185 return if not data? or data.length is 0 | 185 return if not data? or data.length is 0 |
186 console.log "data isnt empty for " + me | 186 console.log "data isnt empty for " + me |
187 ti = (new Date().getTime() - interval) | 187 ti = (new Date().getTime() - interval) |
188 async.eachLimit data, 1, ((tweet, cb) -> | 188 async.eachLimit data, 3, ((tweet, cb) -> |
189 async.waterfall [ | 189 async.waterfall [ |
190 (callback) -> | 190 (callback) -> |
191 FromESN.search {uid: tweet.id + "@twitter_to_" + me}, callback | 191 FromESN.search {uid: tweet.id_str + "@twitter_to_" + me}, callback |
192 (result, callback) -> | 192 (result, callback) -> |
193 return if result.length isnt 0 or tweet.user.id_str is id | 193 return if result.length isnt 0 or tweet.user.id_str is id |
194 console.log "new tweet found" | 194 console.log "tweet found" |
195 twitterdate = new Date(Date.parse(tweet.created_at.replace(/( +)/, " UTC$1"))) | 195 twitterdate = new Date(Date.parse(tweet.created_at.replace(/( +)/, " UTC$1"))) |
196 ts = Date.parse(twitterdate) | 196 ts = Date.parse(twitterdate) |
197 if (ts >= ti) | 197 if (ts >= ti) |
198 Sync.postParser tweet, null, 'twitter', callback | 198 Sync.postParser tweet, null, 'twitter', callback |
199 else | 199 else |
206 pumppost = JSON.parse(pumppost) | 206 pumppost = JSON.parse(pumppost) |
207 catch err | 207 catch err |
208 console.log "parse err " + err | 208 console.log "parse err " + err |
209 return | 209 return |
210 FromESN.create | 210 FromESN.create |
211 postid: tweet.id + "@twitter" | 211 postid: tweet.id_str + "@twitter" |
212 sourceUser: tweet.user.id | 212 sourceUser: tweet.user.id |
213 sourcePost: 'https://twitter.com/'+tweet.user.name+"/status/" + tweet.id | 213 sourcePost: 'https://twitter.com/'+tweet.user.screen_name+"/status/" + tweet.id_str |
214 pumpPost: pumppost.object.id | 214 pumpPost: pumppost.object.id |
215 recipientUser: me | 215 recipientUser: me |
216 created: Date.now() | 216 created: Date.now() |
217 , callback | 217 , callback |
218 ], (err, result) -> | 218 ], (err, result) -> |
219 console.log "post a tweet to user " + me | 219 console.log "post a tweet to user " + me |
220 cb() | 220 cb |
221 ), (err) -> | 221 ), (err) -> |
222 if (err) | 222 if (err) |
223 console.log "Error: " + err | 223 console.log "Error: " + err |
224 else | 224 else |
225 console.log "done FromESN twitter user " + me | 225 console.log "done FromESN twitter user " + me |
226 return | 226 return |
227 | 227 |
228 postLike: (user) -> | |
229 i = 0 | |
230 me = user.user_pumpio | |
231 id = user.user_ESN.substr(0,user.user_ESN.indexOf('@')) | |
232 token = user.oauth_token | |
233 secret = user.extra_token | |
234 twit = new twitter( | |
235 consumer_key: client_id | |
236 consumer_secret: client_secret | |
237 access_token_key: token | |
238 access_token_secret: secret | |
239 ) | |
240 console.log "try 2 find twitter likes for " + me | |
241 async.waterfall [ | |
242 (callback) -> | |
243 Usermap.search {id: me + '_to_' + me}, callback | |
244 (pumpuser, callback) -> | |
245 Pump.getLikes(pumpuser[0], callback) | |
246 (likearray, callback) -> | |
247 return if not (likearray?) or likearray.length is 0 | |
248 likes = JSON.parse(likearray) | |
249 return if not (likes?) or likes.items.length is 0 | |
250 async.each likes.items,((note, cb) -> | |
251 async.waterfall [ | |
252 (callback) -> | |
253 FromESN.search {recipientUser: me, pumpPost: note.id}, callback | |
254 (fromesn, callback) -> | |
255 if (fromesn?) and fromesn.length isnt 0 and fromesn[0].sourcePost.indexOf('twitter.com') isnt -1 | |
256 #console.log fromesn[0] | |
257 obj = fromesn[0].postid.substr(0,fromesn[0].postid.indexOf('@')) | |
258 twit.post "/favorites/create.json", | |
259 id: obj | |
260 , (data) -> | |
261 console.log "Twitter " + obj + " liked" | |
262 ], (err, result) -> | |
263 ), (err) -> | |
264 ], (err, result) -> | |
265 return | |
266 | |
228 getOAuth: (site) -> | 267 getOAuth: (site) -> |
229 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 | 268 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 |
230 "User-Agent": site.userAgent() | 269 "User-Agent": site.userAgent() |
231 ) | 270 ) |
232 | 271 |