Quote tweets properly according to Twitter's API V2 docs

This commit is contained in:
Manuel Cortez 2021-11-11 15:13:58 -06:00
parent b329ac8e3e
commit d6571a95cb
2 changed files with 5 additions and 4 deletions

View File

@ -459,11 +459,11 @@ class BaseBuffer(base.Buffer):
retweet = messages.tweet(session=self.session, title=_("Quote"), caption=_("Add your comment to the tweet"), max=256, thread_mode=False) retweet = messages.tweet(session=self.session, title=_("Quote"), caption=_("Add your comment to the tweet"), max=256, thread_mode=False)
if retweet.message.ShowModal() == widgetUtils.OK: if retweet.message.ShowModal() == widgetUtils.OK:
text = retweet.message.text.GetValue() text = retweet.message.text.GetValue()
text = text+" https://twitter.com/{0}/status/{1}".format(self.session.get_user(tweet.user).screen_name, id)
tweet_data = dict(text=text, attachments=retweet.attachments, poll_period=retweet.poll_period, poll_options=retweet.poll_options) tweet_data = dict(text=text, attachments=retweet.attachments, poll_period=retweet.poll_period, poll_options=retweet.poll_options)
tweet_data.update(quote_tweet_id=id)
call_threaded(self.session.send_tweet, *[tweet_data]) call_threaded(self.session.send_tweet, *[tweet_data])
if hasattr(retweet.message, "destroy"): if hasattr(retweet.message, "destroy"):
retweet.message.destroy() retweet.message.Destroy()
def _direct_retweet(self, id): def _direct_retweet(self, id):
item = self.session.api_call(call_name="retweet", _sound="retweet_send.ogg", id=id) item = self.session.api_call(call_name="retweet", _sound="retweet_send.ogg", id=id)

View File

@ -620,8 +620,9 @@ class Session(base.baseSession):
""" Convenience function to send a thread. """ """ Convenience function to send a thread. """
in_reply_to_status_id = None in_reply_to_status_id = None
for obj in tweets: for obj in tweets:
# When quoting a tweet, the tweet_data dict might contain a parameter called quote_tweet_id. Let's add it, or None, so quotes will be posted successfully.
if len(obj["attachments"]) == 0: if len(obj["attachments"]) == 0:
item = self.api_call_v2(call_name="create_tweet", text=obj["text"], _sound="tweet_send.ogg", in_reply_to_tweet_id=in_reply_to_status_id, poll_duration_minutes=obj["poll_period"], poll_options=obj["poll_options"]) item = self.api_call_v2(call_name="create_tweet", text=obj["text"], _sound="tweet_send.ogg", in_reply_to_tweet_id=in_reply_to_status_id, poll_duration_minutes=obj["poll_period"], poll_options=obj["poll_options"], quote_tweet_id=obj.get("quote_tweet_id"))
in_reply_to_status_id = item.data["id"] in_reply_to_status_id = item.data["id"]
else: else:
media_ids = [] media_ids = []
@ -630,7 +631,7 @@ class Session(base.baseSession):
if i["type"] == "photo": if i["type"] == "photo":
self.api_call(call_name="create_media_metadata", media_id=img.media_id, alt_text=i["description"]) self.api_call(call_name="create_media_metadata", media_id=img.media_id, alt_text=i["description"])
media_ids.append(img.media_id) media_ids.append(img.media_id)
item = self.api_call_v2(call_name="create_tweet", status=obj["text"], _sound="tweet_send.ogg", in_reply_to_tweet_id=in_reply_to_status_id, media_ids=media_ids, poll_duration_minutes=obj["poll_period"], poll_options=obj["poll_options"]) item = self.api_call_v2(call_name="create_tweet", status=obj["text"], _sound="tweet_send.ogg", in_reply_to_tweet_id=in_reply_to_status_id, media_ids=media_ids, poll_duration_minutes=obj["poll_period"], poll_options=obj["poll_options"], quote_tweet_id=obj.get("quote_tweet_id"))
in_reply_to_status_id = item.data["id"] in_reply_to_status_id = item.data["id"]
def reply(self, text="", in_reply_to_status_id=None, attachments=[], *args, **kwargs): def reply(self, text="", in_reply_to_status_id=None, attachments=[], *args, **kwargs):