
    V|h                         S SK rSSKJr  SSKJr  SSKJrJr   " S S	\\5      r	 " S
 S\\5      r
 " S S\5      r " S S\5      rg)    N   )YoutubeTabBaseInfoExtractor   )SearchInfoExtractor   )join_nonemptyparse_qsc                   J    \ rS rSrSrSrSrSrSSSSS	.S
.SSSSSS	.S./rSr	g)YoutubeSearchIE   zYouTube searchzyoutube:searchytsearchzEgIQAfABAQ==zytsearch5:youtube-dl test video   youtube-dl test videoidtitleurlplaylist_count	info_dictz Suicide/self-harm search warningz'ytsearch1:i hate myself and i wanna dier   zi hate myself and i wanna die)noter   r   r    N)
__name__
__module____qualname____firstlineno__IE_DESCIE_NAME_SEARCH_KEY_SEARCH_PARAMS_TESTS__static_attributes__r       Z/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/youtube/_search.pyr   r      sN    GGK#N0),
 3814
	Fr#   r   c                   R    \ rS rSr\R
                  S-   rSrSrSrSSSSS	.S
./r	Sr
g)YoutubeSearchDateIE   z:dateytsearchdatez#YouTube search, newest videos firstCAISAhAB8AEBz#ytsearchdate5:youtube-dl test videor   r   r   r   r   N)r   r   r   r   r   r   r   r   r    r!   r"   r   r#   r$   r&   r&      s>    %%/G K3G#N4),
 Fr#   r&   c                       \ rS rSrSr\R                  S-   rSrSSSSS.S	.S
SSSS.S	.SSSSS.S	.SSSS.SSSSSSSSSS\SSSS\	S.0/SSS.SS.SSS ./r
S! rS"rg#)$YoutubeSearchURLIE.   z3YouTube search URLs with sorting and filter support_urlzchttps?://(?:www\.)?youtube\.com/(?:results|search)\?([^#]+&)?(?:search_query|q)=(?:[^&]+)(?:[&#]|$)zchttps://www.youtube.com/results?baz=bar&search_query=youtube-dl+test+video&filters=video&lclk=videor   r   r   )r   playlist_mincountr   zGhttps://www.youtube.com/results?search_query=python&sp=EgIQAg%253D%253Dpythonz4https://www.youtube.com/results?search_query=%23catsr   z#catszKhttps://www.youtube.com/results?search_query=kurzgesagt&sp=EgIQAg%253D%253D
kurzgesagtr   r   UCsXVk37bltHxD1rDPwtNM8Qz8https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q
YoutubeTabu   Kurzgesagt – In a Nutshellz$md5:4ae48dfa9505ffc307dad26342d06bfcz@kurzgesagtz#https://www.youtube.com/@kurzgesagtT)_typer   r   ie_keychanneldescriptionr   
channel_idchannel_url
thumbnailsuploader_iduploader_urluploaderchannel_is_verifiedchannel_follower_count1)extract_flatplaylist_items)r   r   playlistparamsr.   z2https://www.youtube.com/results?q=test&sp=EgQIBBgB)r   only_matchingc           	          [        U5      nUR                  S5      =(       d    UR                  S5      S   nU R                  U R                  X2R                  SS5      S   5      X35      $ )Nsearch_queryqr   spN)r	   getplaylist_result_search_results)selfr   qsquerys       r$   _real_extract YoutubeSearchURLIE._real_extracto   s[    c]'6266#;:##D$8$8tW@UVW@X$Y[`hhr#   r   N)r   r   r   r   r   r   r   
_VALID_URLlistintr!   rP   r"   r   r#   r$   r+   r+   .   s    CG%%.GwJt),
 Y
 F
 ]!

 0Q&9E78  Z", E:'+*-#
 * $(3?;> Dq;Fzir#   r+   c                   x    \ rS rSrSrSrSrSSSSS.S	.S
SSSS.SS0S.SSSSS.SS0S./rSSSSSSS.rS r	Sr
g)YoutubeMusicSearchURLIEu   z?YouTube music search URLs with selectable sections, e.g. #songszyoutube:music:search_urlzThttps?://music\.youtube\.com/search\?([^#]+&)?(?:search_query|q)=(?:[^&]+)(?:[&#]|$)z5https://music.youtube.com/search?q=royalty+free+music   zroyalty free musicr   r   zYhttps://music.youtube.com/search?q=royalty+free+music&sp=EgWKAQIIAWoKEAoQAxAEEAkQBQ%3D%3D   zroyalty free music - songsr@   in_playlist)r   r.   r   rC   zIhttps://music.youtube.com/search?q=royalty+free+music#community+playlistsz(royalty free music - community playlistszEgWKAQIYAWoKEAoQAxAEEAkQBQ==zEgWKAQIgAWoKEAoQAxAEEAkQBQ==EgeKAQQoAEABagoQChADEAQQCRAFz!EgeKAQQoADgBagwQAxAJEAQQDhAKEAU==zEgWKAQIIAWoKEAoQAxAEEAkQBQ==zEgWKAQIQAWoKEAoQAxAEEAkQBQ==)albumsartistszcommunity playlistszfeatured playlistssongsvideosc                 ,  ^ [        U5      nUR                  S5      =(       d    UR                  S5      S   nUR                  SS5      S   mT(       a/  [        U4S jU R                  R	                  5        5       T5      nOg[
        R                  R                  / UR                  S5      QSPS	   5      R                  5       nU R                  R                  U5      mT(       d  S n[        X4S
S9nU R                  U R                  UTSS9XU5      $ )NrF   rG   r   rH   rI   c              3   <   >#    U  H  u  pUT:X  d  M  Uv   M     g 7frI   r   ).0kvrC   s      r$   	<genexpr>8YoutubeMusicSearchURLIE._real_extract.<locals>.<genexpr>   s     P*@$!AKAA*@s   	# r   z - )delim	web_music)default_client)r	   rJ   next	_SECTIONSitemsurllibparseunquote_plussplitlowerr   rK   rL   )rM   r   rN   rO   sectionr   rC   s         @r$   rP   %YoutubeMusicSearchURLIE._real_extract   s    c]'6266#;:g&q)P$..*>*>*@PRXYGll//1F399S>1F21F0JKQQSG^^''0FeE:##D$8$8Wb$8$cejrrr#   r   N)r   r   r   r   r   r   rR   r!   rm   rP   r"   r   r#   r$   rV   rV   u   s    OG(GhJF&)
 k.1
 "=1 [<?
 "=1F4 11=A/0Isr#   rV   )urllib.parsero   _tabr   commonr   utilsr   r	   r   r&   r+   rV   r   r#   r$   <module>rz      sR     - ( ,13F .57J Di4 DiN2s9 2sr#   