From 73d53c3efec54983358abc17581f4b94703ae5d6 Mon Sep 17 00:00:00 2001 From: Aswin Date: Mon, 7 Apr 2025 19:31:40 +0530 Subject: [PATCH] Changes Added a `--latest-episode` flag. Updated README to include correct ASIN display script. Fixed MAX seasons length. --- README.md | 2 +- vinetrimmer/commands/dl.py | 7 ++++++- vinetrimmer/key_store.db | Bin 323584 -> 331776 bytes vinetrimmer/services/max.py | 3 +-- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8c8ed9b..fb88fa5 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,7 @@ Usage: vt.cmd AMZN [OPTIONS] [TITLE] Region is chosen automatically based on domain extension found in cookies. Prime Video specific code will be run if the ASIN is detected to be a prime video variant. Use 'Amazon Video ASIN Display' for Tampermonkey addon for ASIN - https://greasyfork.org/en/scripts/381997-amazon-video-asin-display + https://greasyfork.org/en/scripts/496577-amazon-video-asin-display vt dl --list -z uk -q 1080 Amazon B09SLGYLK8 diff --git a/vinetrimmer/commands/dl.py b/vinetrimmer/commands/dl.py index 8332fb6..dbfa404 100644 --- a/vinetrimmer/commands/dl.py +++ b/vinetrimmer/commands/dl.py @@ -211,6 +211,8 @@ def get_credentials(service, profile="default"): help="Video Color Range, defaults to SDR.") @click.option("-w", "--wanted", callback=wanted_param, default=None, help="Wanted episodes, e.g. `S01-S05,S07`, `S01E01-S02E03`, `S02-S02E03`, e.t.c, defaults to all.") +@click.option("-le", "--latest-episode", is_flag=True, default=False, + help="Download the latest episode on episodes list.") @click.option("-al", "--alang", callback=language_param, default="orig", help="Language wanted for audio.") @click.option("-sl", "--slang", callback=language_param, default="all", @@ -305,7 +307,7 @@ def dl(ctx, profile, cdm, *_, **__): @dl.result_callback() @click.pass_context def result(ctx, service, quality, range_, wanted, alang, slang, audio_only, subs_only, chapters_only, audio_description, - list_, keys, cache, no_cache, no_subs, no_audio, no_video, no_chapters, atmos, vbitrate: int, abitrate: int, no_mux, mux, selected, *_, **__): + list_, keys, cache, no_cache, no_subs, no_audio, no_video, no_chapters, atmos, vbitrate: int, abitrate: int, no_mux, mux, selected, latest_episode, *_, **__): def ccextractor(): log.info("Extracting EIA-608 captions from stream with CCExtractor") track_id = f"ccextractor-{track.id}" @@ -342,6 +344,9 @@ def result(ctx, service, quality, range_, wanted, alang, slang, audio_only, subs titles.order() titles.print() + if latest_episode: + titles = Titles(as_list(titles[-1])) + for title in titles.with_wanted(wanted): if title.type == Title.Types.TV: log.info("Getting tracks for {title} S{season:02}E{episode:02}{name} [{id}]".format( diff --git a/vinetrimmer/key_store.db b/vinetrimmer/key_store.db index e02d63cef4c9547b36024fcd7efbb32af1e21c50..f454e12e02c0688e499f3e2135171c6428ead039 100644 GIT binary patch delta 11522 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 diff --git a/vinetrimmer/services/max.py b/vinetrimmer/services/max.py index fbbf392..9ca1df6 100644 --- a/vinetrimmer/services/max.py +++ b/vinetrimmer/services/max.py @@ -122,8 +122,7 @@ class Max(BaseService): seasons = [int(season["value"]) for season in season_data["options"]] - season_parameters = [(int(season["value"]), season["parameter"]) for season in season_data["options"] - for season_number in seasons if int(season["id"]) == int(season_number)] + season_parameters = [(int(season["id"]), season["parameter"]) for season in season_data["options"]] #[(int(season["value"]), season["parameter"]) for season in season_data["options"] for season_number in seasons if int(season["id"]) == int(season_number)] if not season_parameters: raise self.log.exit("season(s) %s not found")