Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(self, text: str, hotkey: str, color: int):
self.text = text
self.hotkey = hotkey
self.color = color
@staticmethod
def from_config():
return Action.__dict__.get(ytcc_core.config.default_action, Action.PLAY_VIDEO)
SHOW_HELP = (None, terminal.Keys.F1, None)
PLAY_VIDEO = (_("Play video"), terminal.Keys.F2, COLORS.prompt_play_video)
PLAY_AUDIO = (_("Play audio"), terminal.Keys.F3, COLORS.prompt_play_audio)
MARK_WATCHED = (_("Mark as watched"), terminal.Keys.F4, COLORS.prompt_mark_watched)
REFRESH = (None, terminal.Keys.F5, None)
DOWNLOAD_AUDIO = (_("Download audio"), terminal.Keys.F7, COLORS.prompt_download_audio)
DOWNLOAD_VIDEO = (_("Download video"), terminal.Keys.F6, COLORS.prompt_download_video)
class Interactive:
def __init__(self, videos: List[Video]):
self.videos = videos
self.previous_action = Action.PLAY_AUDIO if NO_VIDEO else Action.from_config()
self.action = self.previous_action
def makef(arg):
return lambda: self.set_action(arg)
self.hooks = {action.hotkey: makef(action) for action in list(Action)}
def set_action(self, action: Action) -> bool:
self.previous_action = self.action
exit: bool
nargs: int
is_action: bool
class Action(Enum):
def __init__(self, text: str, hotkey: str, color: int):
self.text = text
self.hotkey = hotkey
self.color = color
@staticmethod
def from_config():
return Action.__dict__.get(ytcc_core.config.default_action, Action.PLAY_VIDEO)
SHOW_HELP = (None, terminal.Keys.F1, None)
PLAY_VIDEO = (_("Play video"), terminal.Keys.F2, COLORS.prompt_play_video)
PLAY_AUDIO = (_("Play audio"), terminal.Keys.F3, COLORS.prompt_play_audio)
MARK_WATCHED = (_("Mark as watched"), terminal.Keys.F4, COLORS.prompt_mark_watched)
REFRESH = (None, terminal.Keys.F5, None)
DOWNLOAD_AUDIO = (_("Download audio"), terminal.Keys.F7, COLORS.prompt_download_audio)
DOWNLOAD_VIDEO = (_("Download video"), terminal.Keys.F6, COLORS.prompt_download_video)
class Interactive:
def __init__(self, videos: List[Video]):
self.videos = videos
self.previous_action = Action.PLAY_AUDIO if NO_VIDEO else Action.from_config()
self.action = self.previous_action
def makef(arg):
terminal.clear_screen()
print(_(
" Display this help text.\n"
" Set action: Play video.\n"
" Set action: Play audio.\n"
" Set action: Mark as watched.\n"
" Refresh video list.\n"
" Set action: Download video.\n"
" Set action: Download audio.\n"
" Accept first video.\n"
" Exit.\n"
))
input(_("Press Enter to continue"))
elif self.action is Action.REFRESH:
self.action = self.previous_action
terminal.clear_screen()
update_all()
self.videos = ytcc_core.list_videos()
self.run()
break
def command_line(self, tags: List[str], alphabet: Set[str]) -> Tuple[str, bool]:
def print_prompt():
prompt_format = "{prompt_text} > "
prompt = prompt_format.format(prompt_text=self.get_prompt_text())
printt(prompt, foreground=self.get_prompt_color(), bold=True, replace=True)
print()
print(_("Type a valid TAG. for help."))
print_prompt()
tag = ""
hook_triggered = False
while tag not in tags:
char = terminal.getkey()
if char in self.hooks:
hook_triggered = True
if self.hooks[char]():
break
if char in {"\x04", "\x03"}: # Ctrl+d, Ctrl+d
break
if char in {"\r", ""}:
tag = tags[0]
break
if char == "\x7f": # DEL
tag = tag[:-1]
elif char in alphabet: