From dffb6afec94f21e786625b0af09ab0d9de06918d Mon Sep 17 00:00:00 2001 From: chu23465 <130033130+chu23465@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:57:44 +0530 Subject: [PATCH] Added a minimum video bitrate select feature --- README.md | 2 +- vinetrimmer/commands/dl.py | 15 ++++++++++++--- vinetrimmer/key_store.db | Bin 331776 -> 331776 bytes 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4366b8a..9490a89 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ Options: | -cr, --closest-resolution | If resolution specified is not found, defaults to closest resolution available | False | | -v, --vcodec | Video Codec | H264 | | -a, --acodec | Audio Codec | None | -| -vb, --vbitrate | Video Bitrate | Max | +| -vb, --vbitrate | Video Bitrate, "Min" or a number based on --list | Max | | -ab, --abitrate | Audio Bitrate | Max | | -aa, --atmos | Prefer Atmos Audio | False | | -r, --range | Video Color Range `HDR`, `HDR10`, `DV`, `SDR` | SDR | diff --git a/vinetrimmer/commands/dl.py b/vinetrimmer/commands/dl.py index 74740f3..a3c66a2 100644 --- a/vinetrimmer/commands/dl.py +++ b/vinetrimmer/commands/dl.py @@ -201,7 +201,7 @@ def get_credentials(service, profile="default"): help="Video Codec, defaults to H264.") @click.option("-a", "--acodec", callback=acodec_param, default=None, help="Audio Codec") -@click.option("-vb", "--vbitrate", "vbitrate", type=int, +@click.option("-vb", "--vbitrate", "vbitrate", type=str, default=None, help="Video Bitrate, defaults to Max.") @click.option("-ab", "--abitrate", "abitrate", type=int, @@ -402,10 +402,19 @@ def result(ctx, service, quality, closest_resolution, range_, wanted, alang, sla closest_res = min(available_resolutions, key=lambda x: abs(x - quality)) log.warning(f" - No {quality}p resolution available, using closest available: {closest_res}p") quality = closest_res - #title.tracks.select_videos(by_quality=quality, by_range=range_, one_only=True) + + # Modified video track selection to choose lowest bitrate if vbitrate == min + if vbitrate.lower() == "min": + available_bitrate = [int(track.bitrate) for track in title.tracks.videos] + if not available_resolutions: + log.error(" - No video tracks available") + continue + vbitrate = min(available_bitrate) + log.warning(f" - Choosing minimum bitrate: {vbitrate}") + else: + vbitrate = int(vbitrate) title.tracks.select_videos(by_quality=quality, by_vbitrate=vbitrate, by_range=range_, one_only=True) title.tracks.select_audios(by_language=alang, by_bitrate=abitrate, with_descriptive=audio_description) - # title.tracks.select_audios(by_language=alang, with_descriptive=audio_description) title.tracks.select_subtitles(by_language=slang, with_forced=True) except ValueError as e: log.error(f" - {e}") diff --git a/vinetrimmer/key_store.db b/vinetrimmer/key_store.db index 87b8c01a0e9e8f1f24d74fbf515288f9ffacc4af..aea49bee4376e342ed30061cc6efa985eb57301a 100644 GIT binary patch delta 913 zcmbu8KWG#|6vlUEc0J)P7mI*sM2%J&#hrgUGmtYwl(>%0Xj2Vjcls{_W3}hUII?R^4F9lU?iJLz`-)8Jy{tZt(|u3bx0y%m5>5c z&RH1ewGOG0Hm1a~IAT_DCO8cOOpFae90WdBA{3TlLL)=aT6Sn2d_OwuIF57@$K7^c zyCK+g`_UKl2vmFD_ulRutp2FJs9vn@=~?ZWf$w^TD!(gl!G+4z%8~N7@>3^ChgJZ+ z^vSyqmOPP@ic{ocTv%zXq=XaUvq0wdnCm!*q@uCOvtcSMV>~p3`&9TOf9p%lLyn_> zP}D9kseXw@($y8Pk!`lXz#GKCQd*jXH3*in@kw|V?6gB+>l;Rej=5zrunGrOht^Q# zQ=i8wint}3D?&)D4T}ZiOmpMM7E3LaLF?J3h6BIAVCpr|N$9>xNfRBPB1Iq`Nl`Kh&k6EOduQ2yAoaW!jU&OD? z_k?dQUl^YN?@8WfrX9RCJYRX%GYau!@F;QL=AJU$ZUdvSR10ezVSS-#^USC zG(B-4v%_?rjf~e>fl|&))1}=Q?Y2MO$f&rE*_iS1boK-$_w4}*Og@Yg7kF-eoXDj3 zj!|nmYXGzEbdvyPEhbiz?QsFjXBim}ZPy86E@zs~lnvDIDuh`oo7tCj#&-4t%(Iy` jPW;BSea2DdoGfMmj)Ljz4vdPM1syy%wij5iOt=mJmsVIN