From a70f70c9f66ee1779c9420ba17bc2ab1129ab466 Mon Sep 17 00:00:00 2001 From: Skullheadx <94652084+Skullheadx@users.noreply.github.com> Date: Mon, 14 Oct 2024 12:54:58 -0400 Subject: [PATCH] thumb + cover art works --- ytdl/__pycache__/funcmodule.cpython-312.pyc | Bin 1731 -> 3731 bytes ytdl/funcmodule.py | 76 ++++++++++---------- 2 files changed, 36 insertions(+), 40 deletions(-) diff --git a/ytdl/__pycache__/funcmodule.cpython-312.pyc b/ytdl/__pycache__/funcmodule.cpython-312.pyc index ca8b44a2d96b38f7a434c9bb262f6543bea4ec1e..f16f7650d8d95161ba2524f2a95014f40a41f79b 100644 GIT binary patch delta 2324 zcmX@iJ6V?RG%qg~0|NsCiw|%5CXS7K(JZPG3=9m+3=9mPAF(hnOlK%z1j&PN4Z~_E zyOweCG!{)`#wrE|h7xv=90+Hzfk;%G!UWS(#!w_#!Z~>ci=5qTh7{(xa0y0+N`@N7 zEN)bdAl_;a!N9=4$WX!wWiq6&OkThuRzI5o*?;5bFn}OTo{=GiFNGh)E_|NkuVG0MND)jCND)dAP7z5FO%Y2GPm!2BjYR{T zdQ!wwBx@M6)L>3Q(4eqR5l@jS(S(WBFlK4N*a#ZttrTfcK7i_ysbS30L8yVTK(cVB zn={lfW#I{@6mZ5$kxdt`Wh>E#8IffG3K(&CqGe<#F^0>TfaK~~U`|4ngQ-H$aHoJ= zf+rLa=2bE%GZ-=yGnO+kGDI>kGB7gqJg;DmWGH9Ul=G`%(aS9`sj6qy0@Gp&nZ*i; zIYp_7DU}K-`Q>>z`H3m1DODnFsU^u7nR)37#U(|liMa}C`9%sLnvA!&^7C>k;}c6$ zGV_Z-3A0MdFJB?CEHN`DF)1fi0W1O4Q+$g#F{!9Z)&*)T$TXOIJ={=DrXp1a28LU_ z#o3t!@u?M=#U+_}=~XOxSq160n97rGv8AQu7Nn+EG3jPjvFPR|7TjVqyv1lx#iW~j zizPX~pt4FpHzl*UAip@XBr`wHs?5sZ7EfYHNn&zFYD#=TW^xs$ZfThwtLi?6LN@`kSX--LeT4qjaUSe+QEsmnp!qU{@lHyy; z>8T~RcuO)$bCdECGjrlgi*jzUC+Fvtq~?{}V#zN^&AY`~UX)pqdW$Wwv?L?Hs7MOz zRtUash}u7IkmX>RtR%ZY2GcS{Nf@|ajnT-1S->SF;$k_ z;sHldJjDICSU{n6O9%*DjQfX2&-HcHoY!vcTw1GN9ko@*XzPw7lpkp3;Q(qJONpyxk72Z#!8J9QWv;P zuCSQiU=e^gWr@uOp6dp_7Y%$bEBjrDOS%AZUGf(;1|E@qoBB?h8BEtDG%iYLT;|ri z&TV*++pxjqj*P|%nd_R?7d5Rf%h+6yw%rkOLDK00i`X4b-V1yR3skOfs;@A-!NJ+j z-pM|JrHA)BGXs~#2Mz{K!5bVrJvlRMu1i~7l(x9cXL*Bz=K`O?4Gz8u%us@-Bkcx< z)C|8H9KsXI>gVLFFj{Z1(&Dn5$pu-{3!-Kq;qnp|Qg3B8TA( z4xSIveEe(;?qB2>Soz!i8vQ1iUty8{!p6YL-tOt&=y`!p;R=i59Tv8B&qhxaw_jzk z`mW2srE!5%{Z}y$0|UcRT_I0Z=98+do_g$>+(n>5vdDvhfuYC^MA$MgFiiGjQ)Tp@ XoX;l37&N(y&5%Qb(Yi>0fq?-4N^>HX delta 476 zcmbO%dzhE+G%qg~0|NuY%w;_3lQ}o?MYBxqX697c#=yWZouPygBn84X46C8+TE=vS z6vjo2wM>)ySTv29vRxP$ii~O)vsggtP_YX`tP%r5EprJwOuU9Mi(|4Pqi{WQ7T8*t zID}r!1fdxjdQ?~#Dj6ynG@1Q0*={jq=ig$=O1#BXm2rzHHLr>#Q7=0mM5g8yfwX9{ z6)`g~Fx+C!NzJ>(k(^jil9``Ze2cZ9C^N6*7HdgnNlxl5&YZ-&^!ViblvGWYqIzzS zdZx;fTY^yK@fn$^MTtep8I`x#p+dzVFDWP}C=~I5R12i1mc%FKrNpP?m*?f=C#Dpc zGB7YGGB7X{`!FytG%(!Z6qq2=E!*JqNs2+zk?{hH=pA;h4x@hSPV39;;xiO4u}j|& zmz-WbrMkn-{SJ@d1f}U36E$YIUzgFnD5HCoNADvugM{)2W(E$KA^`>l22Ji;Ea^G< zNw=8ti*IoimnIby 0, "No available audio streams" - # audio_stream = yt.streams.filter(only_audio=True).order_by("abr").last() + yt.check_availability() + print(f"Fetching stream for {yt.title}") + assert len(yt.streams.filter(only_audio=True)) > 0, "No available audio streams" + audio_stream = yt.streams.filter(only_audio=True).order_by("abr").last() - # hierarchy: - caption_hierarchy = ["ko", "ja", "zh", "en", "a.ko", "a.en"] - if len(yt.captions) > 0: - for caption in yt.captions: - print(yt.title, caption.lang_code) - # print(f"Downloading audio stream for {yt.title}") - # audio_stream.download(filename=fix_filename(audio_stream.default_filename), skip_existing=True) - # - # # create thumbnail file - # data = requests.get(yt.thumbnail_url).content - # thumbnail_filename = f'{fix_filename(audio_stream.title)}.jpg' - # with open(thumbnail_filename, 'wb') as f: - # f.write(data) - # - # command = [ - # 'ffmpeg', - # '-i', fix_filename(audio_stream.default_filename), - # '-i', thumbnail_filename, - # '-map', '0', - # '-map', '1', - # '-metadata', f'title={fix_filename(audio_stream.title)}', - # '-metadata', f'artist={yt.author}', - # '-metadata', f'date={yt.publish_date}', - # '-metadata', f'comment={big_num_format(yt.views) + " views"}', - # fix_filename(audio_stream.title) + ".mp4", - # '-y' - # ] - # subprocess.run(command) - # - # # clean up tmp files - # os.remove(thumbnail_filename) - # os.remove(fix_filename(audio_stream.default_filename)) + print(f"Downloading audio stream for {yt.title}") + audio_stream.download(filename=fix_filename(audio_stream.default_filename), skip_existing=True) + + # create thumbnail file + data = requests.get(yt.thumbnail_url).content + thumbnail_filename = f'{fix_filename(audio_stream.title)}.jpg' + with open(thumbnail_filename, 'wb') as f: + f.write(data) + + command = [ + 'ffmpeg', + '-i', fix_filename(audio_stream.default_filename), + '-i', thumbnail_filename, + '-map', '1', + '-map', '0', + '-c', 'copy', + '-disposition:v:0', 'attached_pic', + '-metadata', f'title={fix_filename(yt.title)}', + '-metadata', f'artist={yt.author}', + '-metadata', f'comment={big_num_format(yt.views) + " views"}', + '-metadata', f'date={yt.publish_date}', + fix_filename(audio_stream.title) + ".mp4", + '-y' + ] + subprocess.run(command) + + # clean up tmp files + os.remove(thumbnail_filename) + os.remove(fix_filename(audio_stream.default_filename)) -- 2.54.0