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()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)