
    V|h                     n    S SK r SSKJr  SSKJrJrJr   " S S\5      r " S S	\5      r " S
 S\5      r	g)    N   )PostProcessor   )	Namespacefilter_dictfunction_with_reprc                      ^  \ rS rSrU 4S jr\S 5       r\S 5       r\S 5       r	S r
\S 5       r\S 5       r\" \\S	9rS
rU =r$ )MetadataParserPP   c                    > [         TU ]  U5        / U l        U H9  nUtpEX@R                  ;   d   eU R                  R	                  U" U /UQ76 5        M;     g N)super__init___actionsActionsappend)self
downloaderactionsfactionargs	__class__s         ]/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/postprocessor/metadataparser.pyr   MetadataParserPP.__init__   sT    $AMF\\)))MM  !4t!45     c                 R    XR                   ;  a  [        U< S35      eU" U /UQ76   g)z_Each action can be:
(Actions.INTERPRET, from, to) OR
(Actions.REPLACE, field, search, replace)
z is not a valid actionN)r   
ValueError)clsr   datas      r   validate_action MetadataParserPP.validate_action   s.     $z)?@AAsTr   c                     [         R                  " SU 5      (       a  SU  S3$ SSKJn  UR                  U 5      nU(       a  UeU $ )Nz[a-zA-Z_]+$z%(z)sr   )	YoutubeDL)rematchr$   validate_outtmpl)tmplr$   errs      r   field_to_template"MetadataParserPP.field_to_template   sA    88ND))vR= )((.Ir   c                 |   [         R                  " SU 5      (       d  U $ SnSn[         R                  " SU 5       HT  nU[         R                  " XUR	                  5        5      -  nUSUR                  S5       S3-  nUR                  5       nMV     U[        U 5      :  a  U[         R                  " XS 5      -  nU$ )	zk
Converts a string like
   '%(title)s - %(artist)s'
to a regex like
   '(?P<title>.+)\ \-\ (?P<artist>.+)'
z	%\(\w+\)sr    z%\((\w+)\)sz(?P<r   z>.+)N)r%   searchfinditerescapestartgroupendlen)fmtlastposregexr&   s       r   format_to_regex MetadataParserPP.format_to_regex%   s     yys++J[[5ERYYs5;;=9::EU[[^,D11EiikG 6 SXRYYs8}--Er   c                 @    U R                    H  nU" U5        M     / U4$ r   r   )r   infor   s      r   runMetadataParserPP.run:   s     AdG 4xr   c                    ^ ^^^^ UUUU U4S jnT R                  T5      m[        R                  " T R                  T5      5      mU$ )Nc           	        > TR                   R                  T	U 5      nTR                  STR                  < ST	< 35        TR	                  U5      nUc  TR                  ST< ST< 35        g [        UR                  5       5      R                  5        H%  u  p4X@U'   TR                  SU ST	< SU< 35        M'     g )NzSearching for  in zCould not interpret z as zParsed z from z: )	_downloaderevaluate_outtmplwrite_debugpatternr.   	to_screenr   	groupdictitems)
r<   data_to_parser&   	attributevalueinpoutout_rer   templates
        r   r   (MetadataParserPP.interpretter.<locals>.fA   s     ,,==hMM~fnn-?tH<PQMM-0E}!5cWDHI$/0A$B$H$H$J 	"'Y6(RyQR %Kr   )r*   r%   compiler8   )r   rL   rM   r   rN   rO   s   ``` @@r   interpretterMetadataParserPP.interpretter?   s?    		S 		S ))#.D0056r   c                 P   ^ ^^^^ UUUUU 4S jn[         R                  " T5      mU$ )Nc                   > U R                  T5      nUc  TR                  ST 35        g [        U[        5      (       d+  TR	                  ST S[        U5      R                   35        g TR                  ST< ST ST< 35        TR                  TU5      u  U T'   nU(       a  TR                  ST SU T    35        g TR                  S	T< ST 35        g )
NzVideo does not have a zCannot replace in field z since it is a zReplacing all rA   z with zChanged z to: zDid not find )	getrF   
isinstancestrreport_warningtype__name__rD   subn)r<   valnfieldreplacer.   	search_rer   s      r   r   $MetadataParserPP.replacer.<locals>.fR   s    ((5/C{!7w?@S))##&>ug_UYZ]U^UgUgTh$ij~fZtE7&TU&^^GS9NDK%d5k]CDvjUGDEr   )r%   rQ   )r   r_   r.   r`   r   ra   s   ```` @r   replacerMetadataParserPP.replacerP   s$    	F 	F JJv&	r   )	INTERPRETREPLACEr;   )r[   
__module____qualname____firstlineno__r   classmethodr!   staticmethodr*   r8   r=   r   rR   rc   r   r   __static_attributes____classcell__r   s   @r   r
   r
      s    6      (
     & ,AGr   r
   c                   8   ^  \ rS rSr\S 5       rU 4S jrSrU =r$ )MetadataFromFieldPPg   c                     [         R                  " SU5      nUc  [        SU< 35      eU R                  R                  UR                  S5      R                  SS5      UR                  S5      4$ )Nz#(?s)(?P<in>.*?)(?<!\\):(?P<out>.+)$zit should be FROM:TO, not inz\::rM   )r%   r&   r   r   re   r2   r`   )r   r   r&   s      r   	to_actionMetadataFromFieldPP.to_actionh   sg    ?C=9!?@@KK!!KK%%eS1KK
 	
r   c           	      l   > [         TU ]  X Vs/ s H  o0R                  U5      PM     sn5        g s  snf r   )r   r   ru   )r   r   formatsr   r   s       r   r   MetadataFromFieldPP.__init__s   s+    %IAnnQ&7%IJ%Is   1
 )	r[   rg   rh   ri   rj   ru   r   rl   rm   rn   s   @r   rp   rp   g   s!    
 
K Kr   rp   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )MetadataFromTitlePPx   c                 v   > [         TU ]  XR                  R                  SU4/5        U R	                  S5        g )Ntitlezyt_dlp.postprocessor.MetadataFromTitlePP is deprecated and may be removed in a future version. Use yt_dlp.postprocessor.MetadataFromFieldPP instead)r   r   r   re   deprecation_warning)r   r   titleformatr   s      r   r   MetadataFromTitlePP.__init__y   s9    ||'='=w&T%UV  k	lr   rz   )r[   rg   rh   ri   r   rl   rm   rn   s   @r   r|   r|   x   s    l lr   r|   )
r%   commonr   utilsr   r   r   r
   rp   r|   rz   r   r   <module>r      s@    	 ! > >]B} ]B@K* K"l* lr   