From 73d53c3efec54983358abc17581f4b94703ae5d6 Mon Sep 17 00:00:00 2001
From: Aswin <aswin3262005@gmail.com>
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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
M<Ht+#ll;;D0RzB1vj6}9

delta 1315
zcmX|B4NO&a6#xJ4J^%atfykPhXkdwnSlEX;b^6|OJr|14rCW+^kY8oPAT(<(Cr?ds
z;RlBAAf@t57}gS$^<J8p<QJtl?Q5;{!KNcc655h-ve~(S-R<7p|2e;N&hPxrxwo_?
zrL=wM&f#J)V=PpWHiIudQm{V6Yc?f9Wr+}{TZ$(_az>9MyFG+qbKU!HuiFz(E{24Q
zJt0W3YAnXwKF{iQHYKG^=1s}IFAYq~0}&T5!vi@<c1L-!Avfk0x}&V+@st8+cJPtg
zFf)1bb1RlldUoluCE0|?eI9aiF)E7y&}lZdU4WqXmV^19KrmJeJZ+Jl$<kRKlkUKD
zXEb!En%-x9CbpYv`5JAb9B~&}%j`Cmr%jXU)kb?hi#o0BrZQ1VReSYf{-n_<EwM%_
z-zx9wnR?7PXzy`{GOvAxwGo(w4=P~}?)eIQya3B~K@i_u31jd?0c^pp59xSgC-{X&
zlVj3$LS+sBYJ5=2M-RMTD~D1%Uj<KK<5CFY!u^z>Y%kPf*GvM9!10wZ8&5WXAN!&Y
z3$%Sq$nxFf_$@|Ri!eX((A8Z9VWG!ZkYm;+^5tMF@dD!@3u0j%1iYg4U}n=XqmDXQ
z9VLeL9uJ@2MEG?BtY%bGg?|oFg-HlAvBYa@=SRdexSO((2tjPGrSQKZM67KUe2yn8
z!SAUb#OhiIsNvBfccZOi*awf|euVG_LyEAcSr_Nc!h&=1t56D4<iF*^PKQ(D<T)vJ
zt6gUMt^3v&R*^N<yl(DwOU#$dA*{=|U~D#~^Jnyb^`m;Bo}smC)!G8hQClQU-Kb9E
z>y%!lQF&c?TqH!5cu@+;qok|6S&Fz>tj?PjT@_VhfHxDpg43kJl>;=m#2XM0L7I+)
z?_2|)%03tvl_#8(vlVxog;|6CQwh&sM)|IAEZqt|G0{CHt;IwOl*LaUgxegOF47Eq
zt?<L(z>7D75BFVyZFu4gln)xOP-uMkImqYOeExsv1V357`xFiVxW|ZMoky{xfvOYn
zSrTSnB|>aRtP!N74YybpJHWL0nysE!!|GJ!uF{~aR2~yoMMTUK2Apw^!$fzDJKp)j
ziS{dd$$sAsSbbK^Dz-As8|FT9p_$AMkgo3;GxU3~UT@M@>0>-y<vVh{yhKiwewKDf
zFGvzU!QbLfv0MEb_Ul-kj%}~V0#9~BKxRyiS7{<g#^@bdhs#3Di4Q*w!#JjrV)0*F
zppN6)%V>|jKSFZg1<1wT<>1G$Ahuy@2b5zsJqFeJW*cqbI2_kasU~<q)i<Ga(D(IG
zil5R+nhXqSNDk$<Z^H_X$GhlzyYwggh($#ZRBfU;LW!Yz8KxeoSfj*azrbwWPu7v@
zDdrw?SG!sLOSi}wYG1Us*gor?ddfO#6<Qf)yIE~6Fdd^sn`?xPsrp_0u>P8!uBqDZ
gyXT2vO=-RrYJdOnv#Ll}q5mJ$>4*SEuftFO0nv?}JOBUy

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")