Beispiel #1
0
 def test_format_tweet(self):
     event = Mock ()
     event.get_number_of_days = mock.Mock(return_value=0)
     now_utc = timezone.now()
     event.date_time_begin = now_utc
     event.get_absolute_url = mock.Mock(return_value='/events/java-event-1')
     event.title = 'Testevent'
     tweet = twitter.format_tweet(event, '')
     now_local = timezone.localtime(now_utc)
     now_local_str = now_local.strftime("%d.%m.%Y %H:%M")
     self.assertEqual(tweet, u'Testevent - ' + now_local_str + ' ' + settings.HTTP_URL + '/events/java-event-1')
Beispiel #2
0
def twitter_context(arg):
   import json
   import urllib
   from util import rfc3339
   import datetime

   import twitter
   from twitter import format_tweet

   if "arg" not in arg["qs"] and arg["oauth"] == False:
      err(noarg)

   _default(arg, "oauth", False)
   _default(arg, "token_name", None)
   _default(arg, "infinite_retries", True)
   _default(arg, "source_filter", False)

   p = twitter.Twitter(db=arg["cursor"], oauth=arg["oauth"], token_name=arg["token_name"], infinite_retries=arg["infinite_retries"])

   if "mentions" in arg and arg["mentions"] == True:
      tweets = p.mentions()
      uname = p.me().screen_name
   else:
      uname = arg["qs"]["arg"]
      tweets = p.user_timeline(uname)

   tweet_cache = {}
   for tweet in tweets:
      tweet_cache[tweet.id] = tweet

   rval = {"id": "http://twitter.com/%s#atom_maker_context_feed" % uname,
           "link": "http://twitter.com/%s" % uname,
           "title": "Twitter / %s / context" % uname,
           "author": tweets[0].user.name,
           "entries": []}

   if 'lang' in arg["qs"]:
      rval["lang"] = arg["qs"]['lang']

   parent_skip_list = set()
   for tweet in tweets:
      if tweet.id in parent_skip_list:
         continue
      if arg["source_filter"] and tweet.source in arg["source_filter"]:
         continue

      content = []
      tweet_url = "http://twitter.com/%s/status/%s" % (tweet.user.screen_name, tweet.id_str)

      entry = {"id": tweet_url,
               "title": "%s: " % tweet.user.screen_name + tweet.text,
               "content_type": "html",
               "updated": rfc3339(tweet.created_at),
               "link": tweet_url}
      content.append(format_tweet(tweet.user.screen_name, tweet.user.name, tweet.text, tweet_url, tweet.created_at))
      parent_id = tweet.in_reply_to_status_id
      while parent_id:
         if parent_id in tweet_cache:
            parent_tweet = tweet_cache[parent_id]
         else:
            try:
               parent_tweet = p.get_tweet(parent_id)
            except:
               break
            tweet_cache[parent_id] = parent_tweet

         # don't make a new RSS entry for tweets in a conversation chain
         if parent_tweet.user.id == tweet.user.id:
            parent_skip_list.add(parent_tweet.id)

         content.append(format_tweet(parent_tweet.user.screen_name, parent_tweet.user.name, parent_tweet.text, "http://twitter.com/%s/status/%s" % (parent_tweet.user.screen_name, parent_id), parent_tweet.created_at))

         # continue to next parent or terminate
         parent_id = parent_tweet.in_reply_to_status_id
      entry["content"] = "".join(reversed(content))
      rval["entries"].append(entry)
   rval["updated"] = rval["entries"][0]["updated"] # first tweet is newest
   return rval