Initial support for extended tweets

This commit is contained in:
2016-09-28 17:25:03 -05:00
parent b131f50d42
commit df345b5eec
10 changed files with 98 additions and 76 deletions

View File

@@ -67,8 +67,11 @@ class timelinesStreamer(TwythonStreamer):
self.friends = friends
def on_success(self, data):
try:
if "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
self.check_tls(data)
except:
pass
# try:
if "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
if data.has_key("extended_tweet"):
data["full_text"] = data["extended_tweet"]["full_text"]
data["entities"] = data["extended_entities"]
self.check_tls(data)
# except:
# pass

View File

@@ -135,6 +135,10 @@ class streamer(TwythonStreamer):
self.friends = data["friends"]
pub.sendMessage("friends-receibed")
elif "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
if data.has_key("extended_tweet"):
data["full_text"] = data["extended_tweet"]["full_text"]
data["entities"] = data["extended_entities"]
log.error("Extended tweet")
if data["user"]["id"] in self.muted_users: return
self.check_mentions(data)
self.check_send(data)

View File

@@ -40,24 +40,23 @@ def compose_tweet(tweet, db, relative_times):
ts = tweet["created_at"]
if tweet.has_key("message"):
value = "message"
log.error(tweet["message"])
elif tweet.has_key("full_text"):
value = "full_text"
else:
value = "text"
log.exception(tweet.keys())
text = StripChars(tweet[value])
if tweet.has_key("sender"):
source = "DM"
if db["user_name"] == tweet["sender"]["screen_name"]: user = _(u"Dm to %s ") % (tweet["recipient"]["name"],)
else: user = tweet["sender"]["name"]
elif tweet.has_key("user"):
user = tweet["user"]["name"]
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
if tweet.has_key("retweeted_status"):
if tweet.has_key("message") == False and tweet["retweeted_status"]["is_quote_status"] == False:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], StripChars(tweet["retweeted_status"]["text"]))
elif tweet["retweeted_status"]["is_quote_status"]:
text = "%s" % (StripChars(tweet[value]))
else:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], StripChars(tweet[value]))
if text[-1] in chars: text=text+"."
user = tweet["user"]["name"]
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
if tweet.has_key("retweeted_status"):
if tweet.has_key("message") == False and tweet["retweeted_status"]["is_quote_status"] == False:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], StripChars(tweet["retweeted_status"][value]))
elif tweet["retweeted_status"]["is_quote_status"]:
text = "%s" % (StripChars(tweet[value]))
else:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], StripChars(tweet[value]))
if text[-1] in chars: text=text+"."
if tweet.has_key("message") == False:
urls = utils.find_urls_in_text(text)
for url in range(0, len(urls)):
@@ -67,20 +66,41 @@ def compose_tweet(tweet, db, relative_times):
# return [user+", ", text, ts+", ", source]
return [user+", ", text, ts+", ", source]
def compose_dm(tweet, db, relative_times):
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
if system == "Windows":
original_date = arrow.get(tweet["created_at"], "ddd MMM DD H:m:s Z YYYY", locale="en")
if relative_times == True:
ts = original_date.humanize(locale=languageHandler.getLanguage())
else:
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
else:
ts = tweet["created_at"]
text = StripChars(tweet["text"])
source = "DM"
if db["user_name"] == tweet["sender"]["screen_name"]: user = _(u"Dm to %s ") % (tweet["recipient"]["name"],)
else: user = tweet["sender"]["name"]
if text[-1] in chars: text=text+"."
urls = utils.find_urls_in_text(text)
for url in range(0, len(urls)):
try: text = text.replace(urls[url], tweet["entities"]["urls"][url]["expanded_url"])
except IndexError: pass
return [user+", ", text, ts+", ", source]
def compose_quoted_tweet(quoted_tweet, original_tweet):
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
text = StripChars(quoted_tweet["text"])
text = StripChars(quoted_tweet["full_text"])
quoting_user = quoted_tweet["user"]["name"]
source = re.sub(r"(?s)<.*?>", "", quoted_tweet["source"])
try: text = "rt @%s: %s" % (quoted_tweet["retweeted_status"]["user"]["screen_name"], StripChars(quoted_tweet["retweeted_status"]["text"]))
except KeyError: text = "%s" % (StripChars(quoted_tweet["text"]))
try: text = "rt @%s: %s" % (quoted_tweet["retweeted_status"]["user"]["screen_name"], StripChars(quoted_tweet["retweeted_status"]["full_text"]))
except KeyError: text = "%s" % (StripChars(quoted_tweet["full_text"]))
if text[-1] in chars: text=text+"."
original_user = original_tweet["user"]["screen_name"]
if original_tweet.has_key("message"):
original_text = StripChars(original_tweet["message"])
else:
original_text = StripChars(original_tweet["text"])
quoted_tweet["message"] = _(u"{0}. Quoted tweet from @{1}: {2}").format( quoted_tweet["text"], original_user, original_text)
original_text = StripChars(original_tweet["full_text"])
quoted_tweet["message"] = _(u"{0}. Quoted tweet from @{1}: {2}").format( quoted_tweet["full_text"], original_user, original_text)
quoted_tweet = tweets.clear_url(quoted_tweet)
return quoted_tweet

View File

@@ -25,6 +25,8 @@ def find_urls (tweet):
urls = []
if tweet.has_key("message"):
i = "message"
elif tweet.has_key("full_text"):
i = "full_text"
else:
i = "text"
return [s[0] for s in url_re.findall(tweet[i])]
@@ -57,6 +59,7 @@ def is_audio(tweet):
if i["text"] == "audio":
return True
except:
print tweet["entities"]["hashtags"]
log.exception("Exception while executing is_audio hashtag algorithm")
def is_geocoded(tweet):
@@ -120,7 +123,7 @@ def is_allowed(tweet, clients):
for i in clients:
if i.lower() == source.lower():
allowed = False
log.exception("Tuit not allowed: %s" % (tweet["text"],))
# log.exception("Tuit not allowed: %r" % (tweet,))
return allowed
def twitter_error(error):