
    V|h")                         S SK r S SKrS SKrS SKrSSKJr  SSKJrJr  SSK	J
r
  SSKJr  SSKJrJrJrJrJrJr  \(       a  S S	KJrJr  S S
KJrJr  S SKJr  S SKJr   " S S\5      r " S S\5      rg)    N   )PostProcessor)FFmpegPostProcessorFFmpegThumbnailsConvertorPP   )imghdr)mutagen)PopenPostProcessingErrorcheck_executableencodeArgumentprepend_extensionshell_quote)FLACPicture)MP4MP4Cover)OggOpus)	OggVorbisc                       \ rS rSrSrg)EmbedThumbnailPPError    N)__name__
__module____qualname____firstlineno____static_attributes__r       ]/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/postprocessor/embedthumbnail.pyr   r      s    r   r   c                   V    \ rS rSrS
S jrS rS r\R                  " SS9S 5       r	S	r
g)EmbedThumbnailPP   NFc                 <    [         R                  " X5        X l        g )N)r   __init___already_have_thumbnail)self
downloaderalready_have_thumbnails      r    r%   EmbedThumbnailPP.__init__    s    $$T6'=$r   c                 J  ^ U4S jn SnU R                  US S/SS9n[        R                  " XE5      nUc  U" 5       $  [        UR                  S5      5      [        UR                  S5      5      4$ ! [         a%  nU R	                  SU 35        U" 5       s S nA$ S nAff = f)	Nc                  l   > TR                  S5      TR                  S5      pU (       a  U(       a  X4$ g g )Nwidthheightget)r-   r.   thumbnail_dicts     r    guess9EmbedThumbnailPP._get_thumbnail_resolution.<locals>.guess%   s4    *..w79K9KH9U6}$  ur   z!,\s*(?P<w>\d+)x(?P<h>\d+)\s*[,\[]z-hide_banner)r   )expected_retcodesz)unable to find the thumbnail resolution; wh)
run_ffmpegresearchr   report_warningintgroup)r'   filenamer1   r2   
size_regexsize_resultmobjerrs     `     r    _get_thumbnail_resolution*EmbedThumbnailPP._get_thumbnail_resolution$   s    	%
	=J//(D>:J^b/cK99Z5D|w 
 4::c?#SC%999 # 	"KC5 QR7N	s   4A3 3
B"=BB"B"c                 2    U R                  U SU S35        g )Nz: Adding thumbnail to "")	to_screen)r'   exer=   s      r    _report_runEmbedThumbnailPP._report_run5   s    #5hZqABr   )imagesc           	         US   n[        US5      nUR                  S5      (       d  U R                  S5        / U4$ [        S [	        US   S S S2   S5       5       S 5      nUc  U R                  S5        / U4$ US   U   S   n[
        R                  R                  U5      (       d  U R                  S	5        / U4$ [        U R                  5      nUR                  X5        US   U   S   =pu[
        R                  R                  U5      S   SS  nUS
   S;  a  US;  a  UR                  US5      nSn[
        R                  " U5      R                  n	Sn
US
   S:X  a+  / SQnU R!                  SU5        U R#                  X%/X;5        GOUS
   S;   a  [%        U R'                  5       5      nSUR)                  SS5       3nU R+                  USU5      u  pUb  UR-                  SSU 3/5        US-  nUR-                  SU R/                  U5      SU 3SU 3SU 3SU 3/5        U R!                  SU5        U R1                  X#U5        GOUS
   S;   Ga  SU R3                  S/ 5      ;   n[4        (       a  U(       a  Sn
OU R!                  S U5        [6        R8                  [6        R:                  S!.n [=        US"5       nUR?                  5       nS S S 5        [@        RB                  " WS#9nU(       d  [E        S$5      eUU;  a  [E        S%U 35      e[G        U5      n[7        UUU   S&9/URH                  S''   URK                  5         UnU
(       Gd8  Sn
[        S) S* 5       S 5      nUc  U R                  S+5        Sn
GOU(       d  U R                  S,5        UU[O        S-5      U[O        S.5      U/nUU RQ                  S/5       Vs/ s H  n[O        U5      PM     sn-  nU R!                  S0U5        U RS                  S1[U        U5       35        [V        RX                  " US[Z        R\                  [Z        R\                  S29u  nnnU(       a%  U R                  S3UR_                  5        35        Sn
OS4U;   a  U R                  S55        Sn
U
(       d  Sn
 / U R'                  5       QSPS6PnU R+                  US7S5      u  pUb  UR-                  SSU 3/5        US-  nUR-                  S8U 3S9/5        U R!                  SU5        U R#                  X%/X;5        GOCGOAUS
   S;;   Ga,  [4        (       d  [c        S<5      eU R!                  S U5        [d        [f        [h        S=.US
      " U5      n[k        5       nS[@        RB                  " U5       3Ul6        [=        US"5       nUR?                  5       Ul7        S S S 5        S>Ul8        U Rs                  XQS   U   5      nUb  Uu  Ul:        Ul;        US
   S?:X  a  URy                  U5        O6[z        R|                  " UR                  5       5      R                  S@5      USA'   URK                  5         UnO[c        SB5      eU
(       a  X2:w  a  [
        R(                  " X25        U R                  X)U	5        Xu:g  nU R                  U(       d  U R                  (       d  UOS U(       a  U R                  (       d  UOS USC9  / U4$ ! , (       d  f       GN= f! [L         a!  nU R                  S(U 35        Sn
 S nAGNS nAff = fs  snf ! [`         a  nSn
[c        S:U 35      eS nAff = f! , (       d  f       GN= f)DNfilepathtemp
thumbnailsz$There aren't any thumbnails to embedc              3   \   #    U  H"  u  pUR                  S 5      (       d  M  U* v   M$     g7f)rL   Nr/   ).0its      r    	<genexpr>'EmbedThumbnailPP.run.<locals>.<genexpr>A   s$     _#I41QUUS]M^BQB#Is   ,
,r   zThere are no thumbnails on diskz=Skipping embedding the thumbnail because the file is missing.ext)mkvmka)jpgjpegpngr[   Tmp3)z-ccopy-mapz0:0r^   z1:0z-write_id3v11z-id3v2_version3-metadata:s:vztitle=Album coverra   zcomment=Cover (front)ffmpegzimage/rY   rZ   )tagsmimetyper^   z-0:z-attachz-metadata:s:z	mimetype=zfilename=cover.)m4amp4m4vmovzembed-thumbnail-atomicparsleycompat_optsFr	   )rZ   r[   rb)r6   zcould not determine image typezincompatible image type: )dataimageformatcovrzunable to embed using mutagen; c              3   N   #    U  H  n[        US /5      (       d  M  Uv   M     g7f)z-vN)r   )rP   xs     r    rS   rT      s%      &4X!'D62 AXs   %	%)AtomicParsleyatomicparsleyzlibatomicparsley.sozCNeither mutagen nor AtomicParsley was found. Falling back to ffmpegz4mutagen was not found. Falling back to AtomicParsleyz	--artworkz-orp   rq   zAtomicParsley command line: )textstdoutstderrz0Unable to embed thumbnails using AtomicParsley; z
No changesz5The file format doesn't support embedding a thumbnailr_   )dispositionattached_picz-disposition:rv   z(Unable to embed using ffprobe & ffmpeg; )oggopusflaczSmodule mutagen was not found. Please install using `python3 -m pip install mutagen`)rx   ry   rw      ry   asciiMETADATA_BLOCK_PICTUREz]Supported filetypes for thumbnail embedding are: mp3, mkv/mka, ogg/opus/flac, m4a/mp4/m4v/mov)info)Dr   r0   rF   next	enumerateospathexistsr:   r   _downloader
fixup_webpsplitextconvert_thumbnailstatst_mtimerH   run_ffmpeg_multiple_filesliststream_copy_optsreplaceget_stream_numberextend_ffmpeg_filename_argumentr7   	get_paramr	   r   FORMAT_JPEG
FORMAT_PNGopenreadr   what
ValueErrorr   rc   save	Exceptionr   _configuration_argswrite_debugr   r
   run
subprocessPIPEstripr   r   r   r   r   r   mimerk   typerB   r-   r.   add_picturebase64	b64encodewritedecode	try_utime_delete_downloaded_filesr&   )r'   r}   r=   temp_filenameidxthumbnail_filename	convertororiginal_thumbnailthumbnail_extmtimesuccessoptionsrd   
old_stream
new_streamprefer_atomicparsleyf	thumbfile
thumb_datatype_metarA   rq   cmdors   rt   
returncodepicres	converteds                                  r    r   EmbedThumbnailPP.run8   si   
#)(F;xx%%NNBCt8O_9T,-?"-Eq#I_aef;NN<=t8O!,/4Z@ww~~011 _`t8O 00@0@A	T'26|2DS2I*2UU (();<Q?C;n,F\1\!*!<!<=OQV!W!M!**;%`G Xx0**H+I=b%[N*40023G 5 5eV DEFH%)%;%;.&:"J%#j\(:;<a
NN499:LMzl+y
-Czl+}o-NP Q
 Xx0OOHW=%[88#BdnnUbdfFg#g 72  H5%11(:M:MN$0$79%.^^%5
 8 #KK*5E ()IJJa(+DUG)LMMx=D *2zqQVx)X(YDIIf%IIK$,M  $ &4X&4 6:!; !(NN#hi#G/']^(#)+6-)$/(*C t7O7OP_7`a7`!N1-7`aaC$$_h?$$'CKPSDTCU%VW163TR\RaRajtjyjy1z.FFJ!++.^_e_k_k_m^n,op"' &/++,de"'
 bE 5 5 7EEEG-1-C-C "A1.F*J!-#j\0B'CD"a
NNmJ<$@.#QR$$Xx822H3QS`j $ %[337+  -B  C  CY1 $yA$u+NxXA)C,> ?@ACH($/9$>>+ 0CH001C,EWX[E\]C(+%	3:E{f$c" /5.>.>syy{.K.R.RSZ.[*+FFH$M (  )H  I  I}0JJ}/x.&<	%%"+43O3OUY"+D4P4PVZ 	& 	 4x[ 87 ! $''*I#(OP#G$. b> + b#G/2Z[^Z_0`aab 0/s\   9[6 [$A:[6 \$B\) &]$
[3.[6 6
\! \\!)
]3]]
])r&   )NF)r   r   r   r   r%   rB   rH   r   _restrict_tor   r   r   r   r    r"   r"      s3    >:"C u-p .pr   r"   ) r   r   r8   r   commonr   rb   r   r   compatr   dependenciesr	   utilsr
   r   r   r   r   r   mutagen.flacr   r   mutagen.mp4r   r   mutagen.oggopusr   mutagen.oggvorbisr   r   r"   r   r   r    <module>r      sT     	 	  ! D  "  *)'+	/ 	K* Kr   