Implemented retoots

This commit is contained in:
Manuel Cortez 2022-11-08 13:22:27 -06:00
parent 90f9f18deb
commit 9959ac24d9
No known key found for this signature in database
GPG Key ID: 9E0735CA15EFE790
2 changed files with 37 additions and 5 deletions

View File

@ -16,6 +16,7 @@ from mysc.thread_utils import call_threaded
from pubsub import pub from pubsub import pub
from extra import ocr from extra import ocr
from wxUI import buffers, dialogs, commonMessageDialogs, menus from wxUI import buffers, dialogs, commonMessageDialogs, menus
from wxUI.dialogs.mastodon import dialogs as dialogs
log = logging.getLogger("controller.buffers.mastodon.base") log = logging.getLogger("controller.buffers.mastodon.base")
@ -264,13 +265,17 @@ class BaseBuffer(base.Buffer):
def share_item(self, *args, **kwargs): def share_item(self, *args, **kwargs):
if self.can_share() == False: if self.can_share() == False:
return output.speak(_("This action is not supported on protected accounts.")) return output.speak(_("This action is not supported on protected accounts."))
toot = self.get_right_tweet() toot = self.get_item()
id = toot.id id = toot.id
pass if self.session.settings["general"]["boost_mode"] == "ask":
answer = dialogs.boost_question()
if answer == True:
self._direct_boost(id)
else:
self._direct_boost(id)
def _direct_retweet(self, id): def _direct_boost(self, id):
item = self.session.api_call(call_name="retweet", _sound="retweet_send.ogg", id=id) item = self.session.api_call(call_name="status_reblog", _sound="retweet_send.ogg", id=id)
pass
def onFocus(self, *args, **kwargs): def onFocus(self, *args, **kwargs):
toot = self.get_item() toot = self.get_item()

View File

@ -9,6 +9,7 @@ import config
import config_utils import config_utils
import output import output
import application import application
from mastodon import MastodonError, MastodonNotFoundError, MastodonUnauthorizedError
from pubsub import pub from pubsub import pub
from mysc.thread_utils import call_threaded from mysc.thread_utils import call_threaded
from sessions import base from sessions import base
@ -114,3 +115,29 @@ class Session(base.baseSession):
num = num+1 num = num+1
self.db[name] = objects self.db[name] = objects
return num return num
def api_call(self, call_name, action="", _sound=None, report_success=False, report_failure=True, preexec_message="", *args, **kwargs):
finished = False
tries = 0
if preexec_message:
output.speak(preexec_message, True)
while finished==False and tries < 25:
try:
val = getattr(self.api, call_name)(*args, **kwargs)
finished = True
except MastodonError as e:
output.speak(str(e))
val = None
if type(e) != MastodonNotFoundError and type(e) != MastodonUnauthorizedError :
tries = tries+1
time.sleep(5)
elif report_failure:
output.speak(_("%s failed. Reason: %s") % (action, str(e)))
finished = True
# except:
# tries = tries + 1
# time.sleep(5)
if report_success:
output.speak(_("%s succeeded.") % action)
if _sound != None: self.sound.play(_sound)
return val