feat(cli):complete subcommands for anilist command

This commit is contained in:
Benex254
2024-08-05 09:47:00 +03:00
parent 9050e5f6cf
commit 6b308d26d1
9 changed files with 79 additions and 20 deletions

View File

@@ -1,3 +1,5 @@
from sys import exit
import click
from .. import __version__
@@ -14,6 +16,7 @@ commands = {
"download": download,
"anilist": anilist,
"config": configure,
"exit": exit,
}

View File

@@ -1,3 +1,5 @@
from sys import exit
import click
from ...interfaces.anilist_interfaces import anilist as anilist_interface
@@ -5,6 +7,7 @@ from ...utils.tools import QueryDict
from .favourites import favourites
from .popular import popular
from .recent import recent
from .scores import scores
from .search import search
from .trending import trending
from .upcoming import upcoming
@@ -15,7 +18,9 @@ commands = {
"search": search,
"popular": popular,
"trending": trending,
"scores": scores,
"upcoming": upcoming,
"exit": exit,
}

View File

@@ -1,6 +1,15 @@
import click
from ....libs.anilist.anilist import AniList
from ...interfaces.anilist_interfaces import select_anime
from ...utils.tools import QueryDict
@click.command()
def popular():
print("popular")
@click.pass_obj
def popular(config):
anime_data = AniList.get_most_popular()
if anime_data[0]:
anilist_config = QueryDict()
anilist_config.data = anime_data[1]
select_anime(config, anilist_config)

View File

@@ -1,6 +1,15 @@
import click
from ....libs.anilist.anilist import AniList
from ...interfaces.anilist_interfaces import select_anime
from ...utils.tools import QueryDict
@click.command()
def recent():
print("recent")
@click.pass_obj
def recent(config):
anime_data = AniList.get_most_recently_updated()
if anime_data[0]:
anilist_config = QueryDict()
anilist_config.data = anime_data[1]
select_anime(config, anilist_config)

View File

@@ -0,0 +1,15 @@
import click
from ....libs.anilist.anilist import AniList
from ...interfaces.anilist_interfaces import select_anime
from ...utils.tools import QueryDict
@click.command()
@click.pass_obj
def scores(config):
anime_data = AniList.get_most_scored()
if anime_data[0]:
anilist_config = QueryDict()
anilist_config.data = anime_data[1]
select_anime(config, anilist_config)

View File

@@ -1,12 +1,16 @@
import click
from ....libs.anilist.anilist import AniList
from .utils import get_search_result
from ...interfaces.anilist_interfaces import select_anime
from ...utils.tools import QueryDict
@click.command()
@click.option("--title", prompt="Enter anime title")
def search(title):
@click.pass_obj
def search(config, title):
success, search_results = AniList.search(title)
if search_results and success:
get_search_result(search_results)
if success:
anilist_config = QueryDict()
anilist_config.data = search_results
select_anime(config, anilist_config)

View File

@@ -1,11 +1,15 @@
import click
from ....libs.anilist.anilist import AniList
from .utils import get_search_result
from ...interfaces.anilist_interfaces import select_anime
from ...utils.tools import QueryDict
@click.command()
def trending():
success, trending = AniList.get_trending()
if trending and success:
get_search_result(trending)
@click.pass_obj
def trending(config):
success, data = AniList.get_trending()
if success:
anilist_config = QueryDict()
anilist_config.data = data
select_anime(config, anilist_config)

View File

@@ -1,6 +1,15 @@
import click
from ....libs.anilist.anilist import AniList
from ...interfaces.anilist_interfaces import select_anime
from ...utils.tools import QueryDict
@click.command()
def upcoming():
print("upcoming")
@click.pass_obj
def upcoming(config):
success, data = AniList.get_upcoming_anime()
if success:
anilist_config = QueryDict()
anilist_config.data = data
select_anime(config, anilist_config)

View File

@@ -15,7 +15,6 @@ from ..utils.tools import QueryDict
from ..utils.utils import clear, fuzzy_inquirer
# FIXME: BACK brocken
def player_controls(config: Config, anilist_config: QueryDict):
# user config
translation_type: str = config.translation_type
@@ -112,14 +111,14 @@ def player_controls(config: Config, anilist_config: QueryDict):
options = {
"Replay": _replay,
"Next Episode": _next_episode,
"Episodes": _episodes,
"Previous Episode": _previous_episode,
"Episodes": _episodes,
"Change Quality": _change_quality,
"Change Translation Type": _change_translation_type,
"Back to servers": _back,
"Go to Main Menu": lambda: anilist(config, anilist_config),
"Go to Anime Options Menu": lambda: anilist_options(config, anilist_config),
"Go to Search Results": lambda: select_anime(config, anilist_config),
"Main Menu": lambda: anilist(config, anilist_config),
"Anime Options Menu": lambda: anilist_options(config, anilist_config),
"Search Results": lambda: select_anime(config, anilist_config),
"exit": sys.exit,
}
@@ -350,6 +349,7 @@ def anilist_options(config, anilist_config: QueryDict):
"view info": _view_info,
"Change Translation Type": _change_translation_type,
"back": select_anime,
"exit": sys.exit,
}
action = fuzzy_inquirer("Select Action:", options.keys())
options[action](config, anilist_config)
@@ -396,6 +396,7 @@ def anilist(config: Config, anilist_config: QueryDict):
"most scored anime": AniList.get_most_scored,
"upcoming anime": AniList.get_upcoming_anime,
"recently updated anime": AniList.get_most_recently_updated,
"exit": sys.exit,
}
action = fuzzy_inquirer("Select Action:", options.keys())
anilist_data = options[action]()