
    }j                        d dl Z d dlZd dlZd dlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZ dd	lmZ  G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z! G d de!      Z" G d de!      Z# G d de!      Z$ G d de!      Z% G d de      Z& G d  d!ee      Z'y)"    N   )InfoExtractorSearchInfoExtractor   )HEADRequest)	HTTPError)ImpersonateTarget)ExtractorErrorfloat_or_noneint_or_nonejoin_nonemptymimetype2extparse_qsstr_or_nonetry_callunified_timestampupdate_url_queryurl_or_noneurlhandle_detect_ext)traverse_objc                       e Zd ZdZdgZdddgZdi ddd	d
ddddgddddddgdddedddddddddd d!dd"d#d$d%d&d'id(d)d*d+d+d,gd-d.d,d/d0d1	d2d3gZd4 Zy5)6SoundcloudEmbedIEzDhttps?://(?:w|player|p)\.soundcloud\.com/player/?.*?\burl=(?P<id>.+)zQ<iframe[^>]+src=(["\'])(?P<url>(?:https?://)?(?:w\.)?soundcloud\.com/player.+?)\1zhttps://w.soundcloud.com/player/?visual=true&url=https%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F922213810&show_artwork=true&maxwidth=640&maxheight=960&dnt=1&secret_token=s-ziYeyTurlonly_matchingzehttps://news.sophos.com/en-us/2023/08/10/s3-ep147-what-if-you-type-in-your-password-during-a-meeting/id
1588847423extm4atitlez=S3 Ep147: What if you type in your password during a meeting?artistszNaked Securitydescriptionz$md5:6931a0630b920413c8c904407bf4b3b2durationgjtv@genres
Technologylicenseall-rights-reservedrepost_counttagscount:4	thumbnail.re:https?://[ai]1\.sndcdn\.com/.+\.(?:jpg|png)	timestampi#dtrackupload_date20230809uploaderuploader_id61390843uploader_urlz%https://soundcloud.com/sophossecurityskip_downloadm3u8r   	info_dictparamszMhttps://www.guitarplayer.com/lessons/november-2023-guitar-player-lesson-audio
1695754080u,   A Tribute to Brian Setzer’s Guitar MasteryzGuitar Playerplaylist 	489924156z%https://soundcloud.com/user-630852220)	r   r    albumalbum_artists
album_typer"   r1   r2   r4      r   r8   playlist_mincountc                     t        |      }|d   d   }|j                  d      }|rt        |d|d   i      }| j                  |      S )Nr   r   secret_token)r   getr   
url_result)selfr   queryapi_urlrE   s        N/root/.hermes/venv/lib/python3.12/site-packages/yt_dlp/extractor/soundcloud.py_real_extractzSoundcloudEmbedIE._real_extractI   sM    ,q/yy0&wa0QRGw''    N)	__name__
__module____qualname__
_VALID_URL_EMBED_REGEX_TESTSint_WEBPAGE_TESTSrL    rM   rK   r   r      sS   XJhiL C F w
,
5
 T
 ()	

 A
 
 |n
 ,
 C
 I
 J
 
 T
 :
 (
  :!
" C#
& #F++. _CC-.$'&C

 -$NL(rM   r   c                       e Zd ZdZdZdZdZdZdZdZ	i Z
dZ ej                  d	      Zd
dddddddddd
Zg dZej$                  d        Zd Zd Zd Zd Zd Zd Zd Zd Zd$d Zed!        Zd" Zd# Z y)%SoundcloudBaseIE
soundcloudzhttps://api-v2.soundcloud.com/https://soundcloud.com/sMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36z?client_id=%sz;https://api-auth.soundcloud.com/web-auth/sign-in/password%sz1https://api-auth.soundcloud.com/connect/session%sz-[0-9a-z]+\.(?P<ext>jpg|png)z"([^"]+)"|([^ ]+)          /   C   d   i,  i  i  r   )
minitinysmallbadget67x67larget300x300cropt500x500original)http_aachls_aac	http_opushls_opushttp_mp3hls_mp3c                      t        j                  dj                  t         fd j	                  ddgt
              D                          j                  S )N|c              3      K   | ]a  }|d k7  r%t        j                  |      j                  dd      n2dj                  t	        t         j                  j
                               c yw)defaultz\*z.*rs   N)reescapereplacejoinmap_DEFAULT_FORMATS).0patternrH   s     rK   	<genexpr>z1SoundcloudBaseIE._is_requested.<locals>.<genexpr>q   s\      (
  9@98LBIIg&&ue4#bii)>)>?@A(
s   A'A*formatsru   )ie_key)rv   compilery   set_configuration_argSoundcloudIE	fullmatchrH   s   `rK   _is_requestedzSoundcloudBaseIE._is_requestedo   sQ    zz$))C (
  229ykR^2_(
 %
   I		rM   c                 >    | j                   j                  dd|       y NrY   	client_id)cachestore)rH   r   s     rK   _store_client_idz!SoundcloudBaseIE._store_client_idw   s    

{I>rM   c                    | j                  dd d      }t        t        j                  d|            D ]K  }| j                  |d dd      }|s| j	                  d|dd 	      }|s3|| _        | j                  |        y  t        d
      )NrZ   zDownloading main pagez<script[^>]+src="([^"]+)"zDownloading JS assetFfatalz#client_id\s*:\s*"([0-9a-zA-Z]{32})"z	client idru   zUnable to extract client id)_download_webpagereversedrv   findall_search_regex
_CLIENT_IDr   r
   )rH   webpagesrcscriptr   s        rK   _update_client_idz"SoundcloudBaseIE._update_client_idz   s    (()BDJabBJJ'CWMN 		C++C7MUZ+[F ..:K / 7	 &/DO)))4		 :;;rM   c                    |j                  d      du }|r|d= |j                  di       j                         }dD ]*  }| j                  |d<   ||d<   	  | j                  |i |c S  y # t        $ r}|rXt        |j                  t              r>|j                  j                  dv r&| j                  d        | j                          Y d }~|r | j                  t        |             Y d }~ y d }~ww xY w)Nr   FrI   )TFr   )    )rF   copyr   _download_jsonr
   
isinstancecauser   statusr   r   report_warningstr)rH   argskwargs	non_fatalrI   is_first_attemptes          rK   	_call_apizSoundcloudBaseIE._call_api   s    JJw'50	w

7B',,. - 	!%E+#F7O
*t**D;F;;		
 " #
177I(F177>>]gKg))$/**,''A/ s%   A))	C42AC/C/.C//C4c                     | j                   j                  dd      | _        | j                  ry | j                          y r   )r   loadr   r   r   s    rK   _initialize_pre_loginz&SoundcloudBaseIE._initialize_pre_login   s.    **//,D?? rM   c                 *   | j                  | j                  | j                  | j                  z  z  d ddt	        j
                  dd|ii      j                               r#d| | j                  d<   | j                          y | j                  d       y )	NzVerifying login token...Fsessionaccess_token)noter   datazOAuth Authorizationz<Provided authorization token is invalid. Continuing as guest)
_request_webpage_API_VERIFY_AUTH_TOKEN_API_AUTH_QUERY_TEMPLATEr   jsondumpsencode_HEADERSreport_loginr   rH   tokens     rK   _verify_oauth_tokenz$SoundcloudBaseIE._verify_oauth_token   s      ++t/L/Lt/^_5UZZ^U,C DELLN ! P 06eW-=DMM/* ^_rM   c                 d      j                   ry t         fd      x}r j                  |       y y )Nc                  T     j                   j                        d   j                  S )Noauth_token)_get_cookies	_BASE_URLvaluer   s   rK   <lambda>z3SoundcloudBaseIE._real_initialize.<locals>.<lambda>   s!    T%6%6t~~%F}%U%[%[ rM   )r   r   r   r   s   ` rK   _real_initializez!SoundcloudBaseIE._real_initialize   s2    ==[\\5\$$U+ ]rM   c                     |dk7  r t        d| j                  d       d      | j                  ry | j                  |       y )NoauthzLogin using username and password is not currently supported. Use "--username oauth --password <oauth_token>" to login using an oauth token, or else cookies)methodTexpected)r
   _login_hintr   r   )rH   usernamepasswords      rK   _perform_loginzSoundcloudBaseIE._perform_login   sZ    w ++9+=>@JNP P ==  *	rM   c           
      l   d}d}d}d}d}d}	d}
d}d}d	}d
}d}|}|}dj                  ||||||	|
|fD cg c]  }t        |       c}      }||z   |z   |z   |z   |z   |z   |z   }d}t        t        |            D ]&  }|dz	  d|z  dz  z   }|t	        ||         z  }|dz  }( | d| d|dd| S c c}w )N!   r   i; u   i@w i  %       0763ed7314c69015fd4a0dc16bbf4b908r[   -i>z    i :x)ry   r   rangelenord)rH   userpwclidaiswulbkcnyrr   tmIntdhmfs                          rK   signzSoundcloudBaseIE.sign   s   . BHHQ1aAq!,DEDc$iEFEAIMA!A%)s1v 	AaQUrM*AQqTNAMA	 AaS!Aas## Fs   B1Nc                    t        |d         }t               g }d}d| j                  i}|r||d<   |s|j                  d      r|j                  d      r	 | j	                  | j
                   d| d|d	|| j                  
      }	t!        |	dt"        hf      x}r| j%                  t'        |      |ddd      }|ra|j(                  }j+                  |       |j-                  dt/        |      t1        |j2                  j                  d            |dddd       fd}t!        |ddd f      D ]8  }|r n3|d   }|d   }|j5                  d       d!   }t!        |d"d#t         hf      xs d$}|j7                  d%      rd&}S|d'k(  rd$}|d(k7  rd)|v rd(}|d*k(  sd+|v rd,}| d | }|d-k(  r| j                  d.| d/       | j9                  |      s| j                  d0| d1       	 t!        | j;                  ||d2| d3|| j                  
      dt"        hf      } ||      rj+                  |       t!        |d"d7t         hf      }| j=                  d8|d9d :      }d;d<d=j                  |r|d d> nd       xs t?        |d :      }|r|d?k(  r|}|j                  d@      dAk(  }t1        | j=                  dB|d-d :      xs! | j=                  dC|d-d :      xs
 |rdD|v rdEnd       }|j                  dF      xs dG|v xs tA        jB                  dH|      }|j-                  tE        |||xr dId J      |||d||dKv rdLnd$|d;k(  rdMnd |rdNn
|r|dOk\  rd!ndP|rdQnd |rdRnd dS       ; |s9|r| jG                  |       |j                  dT      dUk(  r| jI                  d&V       i t!        |i dWdXdYt         hfdZdXd[tJ        htL        fd\dXd]t"        hfd^d_tN        hfd`d`t         hfdad`t         hfdbdbt         hfdcdctQ        dde      hfdfd]t"        hfdgdgt         hfdhdit0        hfdjdkt0        htL        fdldlt0        hfdmdnt0        hfdodptN        hfdqdrtN        hfdsdtt         htR        tT        tR        fdu| jV                  jX                  hdvdvtR        fdwdxt         htR        tT        tR        fdy      || j[                  |      |s|nd | j]                  |      dzS # t        $ r}
t        |
j                  t              r<|
j                  j                  dk(  r#| j                  d| j                                 nt        |
j                  t              r+|
j                  j                  dk(  r| j                  d       nOt        |
j                  t              r|
j                  j                  dk(  r | j                  |
j                         d }	Y d }
~
[d }
~
ww xY w# t        $ rU}
t        |
j                  t              r5|
j                  j                  d4k(  r| j                  | d5|6       Y d }
~
 d }
~
ww xY w){Nr   Fr   rE   downloadablehas_downloads_lefttracks/z	/downloadz.Downloading original download format info JSONrI   headersr   zAOriginal download format is only available for registered users. r   z9Original download format is not available for this client  redirectUriz.Checking original download format availabilityz)Original download format is not availabler   downloadzContent-Length
   Originalnone)	format_idr   filesizer   qualityformat_notevcodecc                     |  xs | v S NrV   )r   format_urlss    rK   invalid_urlz8SoundcloudBaseIE._extract_info_dict.<locals>.invalid_url)  s    70c[00rM   mediatranscodingsc                 ,    t        |d         xr |d   S )Nr   preset)r   _vs     rK   r   z5SoundcloudBaseIE._extract_info_dict.<locals>.<lambda>-  s    ;WXY^W_K`Kpefgoep rM   r   r  r  r   formatprotocolhttp)zctr-zcbc-Tprogressivehlsz/hlszencrypted-hlsz/encrypted-hlshls-aesabrzSkipping broken "z" format"z%" is not a requested format, skippingzDownloading z format info JSONi  z format not found)video_id	mime_typezcodecs="([^"]+)"codecr   r   opus)mp4ar     r6   r  hqz(\d+)k$z\.(\d+)\.(?:opus|mp3)[/?]aac   snippedz	/preview/z/(?:preview|playlist)/0/30/preview)delim)r  r  m3u8_nativem4a_dashr      Premiumi)r  r   r   acodecr  r  r  	containerr  r  
preferencepolicyBLOCK)metadata_availabler1   r   r   r2   )r   	permalinkr4   permalink_urlr-   
created_atr    r.   r"   r#     scalewebpage_urlr&   
view_countplayback_count
like_count)favoritings_countlikes_countcomment_countr(   reposts_countrelease_timestamprelease_datemodified_timestamplast_modifiedr$   genretag_list.publisher_metadataartist)r)   r!   )r   
thumbnailsr   __post_extractor)/r   r   r   rF   r   _API_V2_BASEr   r
   r   r   r   r   r   r   write_debugmsgr   r   r   r   r   addappendr   r   r   	partition
startswithr   r   r   r   rv   searchr   
report_drmraise_geo_restrictedr   anyr   r   filterall_TAGS_REr   _extract_thumbnailsextract_comments)rH   info
full_titlerE   extract_flattrack_idr   has_drmrI   download_datar   redirect_urlurlh
format_urlr	  r   r  preset_baser  short_identifier
stream_urlr  r  r   
is_premiumr  
is_previewr  s                              @rK   _extract_info_dictz#SoundcloudBaseIE._extract_info_dict   s_   tDz?edoo.$0E.! 8TXXFZ=[% $ 3 3(()
)DhDE[_[h[h !4 !j"  ,MMK=;YZZ|Z,,-x9i?u - N !%JOOJ/NN%/3D9$/0@0@AQ0R$S)#%'1"($ 	1 dWn>p$qr H	A5Jx[F **3/2K#A*se'DEOH""#34=(!5 Vz%9 ?*.>*.L$"*1[M:e#  #45E4Fh!OP%%&67  1%5$66[!\])$..L9I8JJ[*\ +9 +8:?+9OQ
 :&OOJ'$Q;(FGI&&':IwX\&]E cu%)$/Y 4@	SW3X  #-!y)T1J"":vud"K G%%&BJPU_c%dG&5F?CHC
 %%	* S(J6SYY'EzR  NN*8VZ=UI]`a! -59K-KMQW+.%<ZT *1ccSjr,6yD%/cT yH	T )xx!W,))T)B
4 "VZ#7"(;k]CP" ;- H" l->,?@	"
 'C5)" 'C5)" u5" Z-d*C)DE" +?" Iu-" /+?" Ck]TWX"  /K=!A" ;- @" $n7H6I%J"  %9J8K&L!"" 7SE63?#"$ $dmm&;&;%<c3O0(SE63PVW'" 
, 2248&2w $ 5 5h ?3
 	
g " %aggy1aggnn6K''1151A1A1C0DFG  3#8M$$%`a3#8M''. $%D " aggy1aggnn6K''+;*<<M(NYa'b	s8   0S( .5W+(	W(1C,W##W(+	Y	4A	YYY	c                 &    | j                   dz   |z   S )Nzresolve?url=)rH  )clsr   s     rK   _resolv_urlzSoundcloudBaseIE._resolv_url  s    .0366rM   c              #     K   d}| j                  dd gd      d   }|s,|d   }| j                  d| ddj                  |              n(||vrt        d	| d
      | j                  d|        t	        | j
                   d| d|dddd      }t        j                  d      D ]  }| j                  ||d|       }t        |dd f      D ]~  }t        |dt        ht        hfddt        ht        hfddt        hfddt        hfddt        hfddt        hfdt        hfdt        hfd t!        d!"      hfd t!        d!"      hfd#
        |j#                  d$      }|r y  y w)%N)newestoldestztrack-timestampcomments_sort_byrY   )ru   r   r   zDefaulting to sort comments by z`. Configure this with  --extractor-args soundcloud:comments_sort_by=FILTER . Available filters: z, z!Invalid comments_sort_by filter: Tr   zSorting comments by r   z	/comments2001)sortlimitoffsetthreadedr   zDownloading comments page )r   
collectionc                 (    t        |d   t              S )Nr   )r   rT   r  s     rK   r   z0SoundcloudBaseIE._get_comments.<locals>.<lambda>  s    zZ[\`ZacfOg rM   r   r   r   
avatar_urlr1  verifiedr2  bodyr-   r3  r4  )
r   	author_idauthorauthor_thumbnail
author_urlauthor_is_verifiedr-   text
start_timeend_time	next_href)r   	to_screenry   r
   r   rH  	itertoolscountr   r   rT   r   r   r   boolr   r   rF   )rH   r[  available_filterssort_bynext_urlpage_numpagecomment_dicts           rK   _get_commentszSoundcloudBaseIE._get_comments  s    C))*<tfUa)bcde'*GNN1' ;&&*ii0A&B%CEF -- #DWI!NY]^^NN1';<#  !
)<	? "* 	H>>(H=WX`Wa;b>cD ,TLBg3h i "<#6"($}!E%zC59)/}(M#)?[M"J+1:v*F".1B0C!D#cUO#.T1J0K"L!,}4/H.I J2   xx,H'	s   E$E+'E+c           	         t        |dt        hf      }|xs t        |ddt        hf      }|sy g }t        j                  | j                  |      x}r| j
                  j                         D ]  \  }}|dk(  r|j                  d      nd}|t        j                  | j                  d| d| |      d	}	|d
k(  r|sd}nx|dk(  rsd|	d<   | j                  t        |	d         t        |d         ddd| j                        }
|
s3|dk(  rdnd}t        j                  | j                  d| d| |      |	d<   |r|	j                  ||d       |j                  |	        |S d|ig}|S )Nartwork_urlr   rw  rk   r   jpgr   .r   r   rc      r   r,  r   r   zChecking thumbnail extensionF)r   errnoter   r   png)widthheight)r   r   rv   rO  _IMAGE_REPL_RE_ARTWORK_MAPitemsgroupsubr   r   r   r   updaterL  )rH   rX  r  thumbnail_urlrF  mobjimage_idsizer   r+   reqs              rK   rV  z$SoundcloudBaseIE._extract_thumbnails  s   "4-+)GH#`|D6<R]Q^:_'`
99T00-@@4@"&"3"3"9"9"; -$+3z+Adjj'u"66$"5"58*AcU7K][	 v%kD+.0Il+//#Ie$45s4:Mk %UDMM 0 KC '*e|e+-66$2E2E8*TUVYUZG[]j+k	%($$!%"&&  !!),1-6  !-01JrM   )NNF)!rN   rO   rP   _NETRC_MACHINErH  r   _USER_AGENTr   _API_AUTH_URL_PWr   r   r  rv   r   rU  r  r{   	functoolscached_propertyr   r   r   r   r   r   r   r   r   rf  classmethodri  r  rV  rV   rM   rK   rX   rX   R   s    !N3L)I HK.TPH4Nrzz./H L _ ?<(!`,(V$:]
~ 7 7(T#rM   rX   c                   6   e Zd ZdZdZdZdi ddddd	d
dd
dddddddddddddddededededdd d!d"d#d$d%d&d'id(d)d*i dd+dd,d	d-dd-dd.dd/dd0dd1dd2dd3dddedededed d4ddd5gd1d2d6d7d8d*i dd+dd,d	d-dd-dd.dd/dd0dd1dd2dd3dddedededed d4ddd5gd1d2d6d7d9i dd:ddd	d;dd;dd<dd=dd>d d?dd@ddAddBdddddededededCgd=gdDdEdFdGdHdId&d'idJgdKdLdMi ddNdd,d	dOddOddPddQddRddSddTddUdddededededdd dVdWgdXgdYdZd[d\dJgd]d^d_i dd`ddd	daddaddbddcdddddeddfddgdddddedededed dhdigdjdkdld&d'idmdndoi ddpddd	dqddqddrddsddtdduddvddwdddddededededxdygdzd{d|d}d~d&d'idmdi ddddd	ddd<ddddd ddededededdddgdddddddddddddddddddddddddddddddddddddddddddg
dd'ddd(di ddddd	ddd<ddddd ddededededdddddgdddddddddddd'dd(dddddddddgZd Zy)r   a]  Information extractor for soundcloud.com
       To access the media, the uid of the song and a stream token
       must be extracted from the page source and the script must make
       a request to media.soundcloud.com/crossdomain.xml. Then
       the media can be grabbed by requesting from an url composed
       of the stream token and uid
     a  (?x)^(?:https?://)?
                    (?:(?:(?:www\.|m\.)?soundcloud\.com/
                            (?!stations/track)
                            (?P<uploader>[\w\d-]+)/
                            (?!(?:tracks|albums|sets(?:/.+?)?|reposts|likes|spotlight|comments)/?(?:$|[?#]))
                            (?P<title>[\w\d-]+)
                            (?:/(?P<token>(?!(?:albums|sets|recommended))[^?]+?))?
                            (?:[?].*)?$)
                       |(?:api(?:-v2)?\.soundcloud\.com/tracks/(?:soundcloud%3Atracks%3A)?(?P<track_id>\d+)
                          (?:/?\?secret_token=(?P<secret_token>[^&]+))?)
                    )
                    rY   z9http://soundcloud.com/ethmusic/lostin-powers-she-so-heavyr   62986583r   r   r    zELostin Powers - She so Heavy (SneakPreview) Adrian Ackers Blueprint 1r.   r"   z$md5:7b6074e00887ad79f59b647c8fb6d5aer1   zE.T. ExTerrestrial Musicr2   1571244r-   iV'vPr/   20121011r#   g;Oa@r&   r'   r7  r9  r<  r(   r+   r,   r4   zhttps://soundcloud.com/ethmusiczcount:14i.zP20121014)r)   r@  modified_dater5   r6   r7   zDhttps://soundcloud.com/jaimemf/youtube-dl-test-video-a-y-baw/s-8Pjrp aa0dd32bfea9b0c5ef4f02aacd080604	123998367mp3u!   Youtube - Dl Test Video '' Ä↭z$md5:610b729ee06ac4cedaa28607212948f3jaimeMF69767071ixR20131209gv#@zhttps://soundcloud.com/jaimemf	youtubedl)r$   r@  r  )r   md5r8   z@https://api.soundcloud.com/tracks/123998367?secret_token=s-8Pjrpz+https://soundcloud.com/the80m/the-following	343609555zThe Followingr<   80M	312384765zhttps://soundcloud.com/the80m20170922iYgx@zDance & EDMr*   iY20170926i-1b20220316)r$   r!   r)   r>  r?  r@  r  z?Original download format is only available for registered users)r   r8   r9   expected_warningszBhttps://soundcloud.com/oriuplift/uponly-238-no-talking-wav/s-AyZUd 59ed00579679f3b660dfdb8d2dbf8589	340344461zOUplifting Only 238 [No Talking] (incl. Alex Feed Guestmix) (Aug 31, 2017) [wav]z$md5:fa20ee0fca76a3d6df8c7e57f3715366zOri Uplift Music12563093i]Y20170831gjt@z https://soundcloud.com/oriupliftTrancez
Ori Upliftzcount:6i)Y20170901)r$   r!   r)   r@  r  )r   r  r8   r  z5https://soundcloud.com/garyvee/sideways-prod-mad-real 59c7872bc44e5d99b7211891664760c2	309699954zSideways (Prod. Mad Real)z$md5:d41d8cd98f00b204e9800998ecf8427egaryvee2366352iYgX20170226gV-i@zhttps://soundcloud.com/garyveeMadRealiX20170228)r!   r@  r  )r   r  r8   r9   z2https://soundcloud.com/giovannisarani/mezzo-valzer 8227c3473a4264df6b02ad7e5b7527ac	583011102zMezzo Valzerz$md5:f4d5f39d52e0ccc2b4f665326428901azGiovanni Sarani3352531i{ex\20190228g?5^If@r$   Pianoz%https://soundcloud.com/giovannisaranizcount:10i/cd20230821)r4   r)   r@  r  z*https://soundcloud.com/skorxh/audio-dealer
2011421339zaudio dealerz$KORCH	150292288zhttps://soundcloud.com/skorxhg^Ij@r!   z$KORXHig20250117i Lg20250116igrb   z?https://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-mini.jpgr  rc   z?https://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-tiny.jpgrd   z@https://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-small.jpgre   z@https://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-badge.jpgrf   zAhttps://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-t67x67.jpgrg   z@https://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-large.jpgrh   zChttps://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-t300x300.jpgri   z?https://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-crop.jpgrj   zChttps://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-t500x500.jpgrk   zChttps://i1.sndcdn.com/artworks-a1wKGMYNreDLTMrT-fGjRiw-original.png)r>  r?  r@  r  r+   rF  hls_aac_160k)r5   r  z,https://soundcloud.com/user615617514/dagames	309858375zJBENDY AND THE INK MACHINE SONG (Build Our Machine) INSTRUMENTAL by DAGAMESxXwolffykittyXx	157677999z$https://soundcloud.com/user615617514gZd;3n@z?https://i1.sndcdn.com/artworks-000209893581-orfv6t-original.jpgz@BENDY AND THE INK MACHINE SONG (Build Our Machine) INSTRUMENTAL i{X20170227iU&b20220216)r&   r@  r  T)get_commentsr5   zQhttps://soundcloud.com/wandw/the-chainsmokers-ft-daya-dont-let-me-down-ww-remix-1r   zChttps://soundcloud.com/taylorswiftofficial/look-what-you-made-me-dozBhttps://api.soundcloud.com/tracks/soundcloud%3Atracks%3A1083788353c                    | j                  |      }|j                  d      }i }|r-| j                  dz   |z   }|}|j                  d      }|r`||d<   nZ dj                  |j                  dd       x}}|j                  d      }|r|d| z  }| j	                  | j
                  |z         }| j                  ||d	|| j                  
      }	| j                         D ]  }
	 | j                  |	||      c S  y # t        $ rb}t        |j                  t              r|j                  j                  dk7  r | j                  dd       |j                  |
_        Y d }~d }~ww xY w)Nr[  r   rE   z{}/{}r1   r    r   /zDownloading info JSONr   r   zYou have reached the API rate limit, which is ~600 requests per 10 minutes. Use the --extractor-retries and --retry-sleep options to configure an appropriate retry count and wait timeT)	only_once)_match_valid_urlr  rH  r  ri  r   r   r   RetryManagerrf  r
   r   r   r   r   r   error)rH   r   r  r[  rI   info_json_urlrY  r   resolve_titlerX  retryr   s               rK   rL   zSoundcloudIE._real_extract  sq   $$S)::j) --	9HDM!JJJ~.E(-n%)7JPW9X)YYJJJw'E1UG, ,,T^^m-KLM~~:'>eUYUbUb  d &&( 
	&E	&..tZGG
	& " &!!''9539N##LW[ $ ]  gg&s   "C99	E$AEE$N)	rN   rO   rP   __doc__rQ   IE_NAMErT   rS   rL   rV   rM   rK   r   r     s	   	J GJ
*
5
 \
 \	

 A
 2
 9
 
 :
 
 ,
 #
 #
 S
 C
  J!
" =#
$ ",')
, #F+16 V1
+
5
 :
 :	

 A
 	
 :
 
 :
 
 ,
 #
 #
 S
 C
  <!
" J#
$ #m",')
	8 R1
+
5
 :
 :	

 A
 	
 :
 
 :
 
 ,
 #
 #
 S
 C
  <!
" J#
$ #m",')
	8 =
+
5
 _
 _	

 2
 
 ;
 ;
 :
 
 
 J
 ,
 #
 S
  C!
" ##
$ %ow!+&",'1
4 #F+_`=D T1
+
5
 f
 f	

 A
 *
 :
 
 :
 
 ,
 #
 #
 S
 C
  J!
" >#
$  j$~",'-
0 ``;@ G1
+
5
 0
 0	

 A
 	
 9
 
 :
 
 J
 ,
 #
 #
 S
  C!
" <#
$ "{",')
, #F+58 D1
+
5
 ^
 ^	

 A
 )
 9
 
 :
 
 J
 ,
 #
 #
 S
  C!
" wi#
$ D",'+
. #F+5: <#
,#
5#
 ^#
 2	#

 #
 ;#
 ;#
 S#
 ##
 ##
 C#
 #
 z#
 ^#
 #
  :!#
" ,##
$ ",&",'J&gh&gh'ij'ij(kl'ij!*op&gh!*op!*op/#
H %+nEO(R >
+
5
 a
 2	

 )
 ;
 B
 S
 #
 #
 C
 
 Z
 Z[
 a
  !
" :#
$ -",')
, $(&A16 c U
 TSLF\ &rM   r   c                       e Zd ZddZy)SoundcloudPlaylistBaseIENc                 j   t        |d         }|j                  d      xs g }t        d |D              s\|rZ| j                  | j                  dz   |ddj                  |D cg c]  }t        |d          c}      ||d| j                        }t        |dt         hfd	d
t         hfdt         hd hfd      }g }|D ]  }t        |j                  d            }	|j                  d      }
|
s|	s3| j                  dz   |	z   }
|r|
d|z   z  }
|j                   | j                  |
t        j                         |	fddi|         | j                  |||j                  d      |j                  d      fi |t        |d	d
t         hfd	dt        hfd	dt        hfdt        hfdt        ht         fdt        hfdt#        d      hfdt         hfdt$        hfdt$        hfdt         ht&        t        t&        fd| j(                  j*                  hddt&        fd       d!| j-                  |      iS c c}w )"Nr   tracksc              3   >   K   | ]  }|j                  d         yw)r1  N)rF   )r|   r   s     rK   r~   z8SoundcloudPlaylistBaseIE._extract_set.<locals>.<genexpr>8  s     :a155):s   zDownloading tracks,)ids
playlistIdplaylistSecretTokenr   r    r   r   set_typec                     | xs dS )Nr;   rV   r   s    rK   r   z7SoundcloudPlaylistBaseIE._extract_set.<locals>.<lambda>C  s
    j rM   )r>   album_artistr@   r1  r   z?secret_token=url_transparentTr"   r2  )r?  published_atrA  r#   r3  r4  r&   r;  r=  rB  rC  .)r1   r2   r4   r-   r>  r@  r#   r&   r9  r(   r$   r)   rF  )r   rF   rT  r   rH  ry   r   r   r   rL  rG   r   r   playlist_resultr   r   rR  r   r   rS  rU  r   rV  )rH   r;   r   playlist_idr  r   
album_infoentriesr.   r[  r   s              rK   _extract_setz%SoundcloudPlaylistBaseIE._extract_set5  s~   (4.)h'-2:6::u^^!!H,k$886$BaS4\$BC"-+0-  == $ *F "(u%#Z#7%u/H.IJ-
 

  
	[E"599T?3H))O,C'')3h>+e33CNN?4??\((*HZFJZNXZ [
	[ $t##[LL!LL'
 	

 8#Z#7 &{m<!';- H*->,?@&FIZH[]`%a'69J8K&L'-d*C)DE%u-,{m<!0;- @"SE63?#dmm&;&;%<c3O& 
& //9'
 	
+ %Cs   "H0r  )rN   rO   rP   r  rV   rM   rK   r  r  4  s    0
rM   r  c                      e Zd ZdZdZdi dddddd	d
dddddddddgddddddddddddddd d!d"d#d$gd%d&d'd(d)d'd*d+d'd,d-d'd.d/d'd0d1d'd2d3d'd4d5d'd6d7d'd8d9d'g
d:d;d<d=i dd>dd?dd@d
dAddBddCdd?ddAgddddDddEdFdGdHdEddIddEddJdddKdLdMgg dNd%dOd'd(dPd'd*dQd'd,dRd'd.dSd'd0dTd'd2dUd'd4dVd'd6dWd'd8dXd'g
dYdZd[d\d]d^d_d]d^d`d]d^dad]d^gZdb Zyc)dSoundcloudSetIEzuhttps?://(?:(?:www|m)\.)?soundcloud\.com/(?P<uploader>[\w\d-]+)/sets/(?P<slug_title>[:\w\d-]+)(?:/(?P<token>[^?/]+))?zsoundcloud:setzAhttps://soundcloud.com/the-concept-band/sets/the-royal-concept-epr   2284613r    zThe Royal Concept EPr"   z$md5:71d07087c7a449e8941a70a29e34671er1   zThe Royal Conceptr2   9615865r4   z'https://soundcloud.com/the-concept-bandr>   r?   r@   epr-   i&Pr/   20120728r@  i!Pr  20130118r#   g{Gaڕ@r&   r'   r9  i  r(   c   z	Indie/poprb   z;https://i1.sndcdn.com/artworks-000030896212-o16m9v-mini.jpgr  rc   z;https://i1.sndcdn.com/artworks-000030896212-o16m9v-tiny.jpgrd   z<https://i1.sndcdn.com/artworks-000030896212-o16m9v-small.jpgre   z<https://i1.sndcdn.com/artworks-000030896212-o16m9v-badge.jpgrf   z=https://i1.sndcdn.com/artworks-000030896212-o16m9v-t67x67.jpgrg   z<https://i1.sndcdn.com/artworks-000030896212-o16m9v-large.jpgrh   z?https://i1.sndcdn.com/artworks-000030896212-o16m9v-t300x300.jpgri   z;https://i1.sndcdn.com/artworks-000030896212-o16m9v-crop.jpgrj   z?https://i1.sndcdn.com/artworks-000030896212-o16m9v-t500x500.jpgrk   z?https://i1.sndcdn.com/artworks-000030896212-o16m9v-original.jpg)r$   rF  r   rB   z1https://soundcloud.com/leviryan/sets/out-of-spite
1524158182zout of spiter<   z	Levi Ryan	229146182zhttps://soundcloud.com/leviryaniijc20221108r>  i icr?  ijcg/$@   (   zHip-hop & Rap)zDrum & BassAlternativeAmbientz?https://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-mini.jpgz?https://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-tiny.jpgz@https://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-small.jpgz@https://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-badge.jpgzAhttps://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-t67x67.jpgz@https://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-large.jpgzChttps://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-t300x300.jpgz?https://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-crop.jpgzChttps://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-t500x500.jpgzChttps://i1.sndcdn.com/artworks-2hmuDCrcvCzzCaXZ-1rztZA-original.jpgr9  r(   r$   r)   rF     r   r8   playlist_countzGhttps://soundcloud.com/the-concept-band/sets/the-royal-concept-ep/tokenTr   z6https://soundcloud.com/discover/sets/weekly::flacmaticz<https://soundcloud.com/discover/sets/charts-top:all-music:dez<https://soundcloud.com/discover/sets/charts-top:hiphoprap:krc                    | j                  |      } dj                  |j                  dd       }|j                  d      }|r|d|z   z  }| j                  | j	                  | j
                  |z         || j                        }d|v r5d |d   D        }t        d	j                  d
j                  |                  | j                  ||      S )Nz
{}/sets/{}r1   
slug_titler   r  r   errorsc              3   8   K   | ]  }t        |d            ywerror_messageNr   r|   errs     rK   r~   z0SoundcloudSetIE._real_extract.<locals>.<genexpr>  s     H#CO,-H   z$unable to download video webpage: {}r  )
r  r  r  r   ri  r   r   r
   ry   r  )rH   r   r  rY  r   rX  msgss          rK   rL   zSoundcloudSetIE._real_extract  s    $$S)(\(($**Z*NO


7##+%J~~d..NNZ')*4dmm  M tHhHD !G!N!NsxxX\~!^__  u--rM   NrN   rO   rP   rQ   r  rS   rL   rV   rM   rK   r  r  h  s    JJG S
)
+
 A
 +	

 9
 E
 +
 12
 $
 
 :
 !*
 Z
 
 ,
  #!
" B#
$ #m&cd&cd'ef'ef(gh'ef!*kl&cd!*kl!*kl'
@ G$L C"
,"
^"
 2"
 	"

 ;"
 ="
 ^"
 k]"
 '"
 "
 :"
  "
 J"
 !*"
 Z"
  !"
" ,#"
$ &'=&gh&gh'ij'ij(kl'ij!*op&gh!*op!*op-"
F M'P Y H N NiWFr.rM   r  c                   <    e Zd Zd Zej
                  d        Zd Zy)SoundcloudPagedPlaylistBaseIEc                 0    d||| j                  ||      dS )Nr;   )_typer   r    r  )_entries)rH   base_urlr  playlist_titles       rK   _extract_playlistz/SoundcloudPagedPlaylistBaseIE._extract_playlist  s#    #}}X{;	
 	
rM   c                 $   | j                   j                         }|syt        dddd      }d }t        |D cg c]*  }|d   j                  dk(  r|d   j
                  dv r|d   , c}|	      }|r ||d
          ||      k  r|S |d
   S c c}w )NTchrome116windows10c                 H    | j                   rt        | j                         S dS )Nr   )versionfloatr  s    rK   r   zKSoundcloudPagedPlaylistBaseIE._browser_impersonate_target.<locals>.<lambda>  s    U199%5  rM   r   )r&  macos)keyr(  )_downloader"_get_available_impersonate_targetsr	   sortedclientos)rH   available_targetsMIN_SUPPORTED_TARGETversion_as_floattargetfiltereds         rK   _browser_impersonate_targetz9SoundcloudPagedPlaylistBaseIE._browser_impersonate_target  s     ,,OOQ   15)TRI $5
 ay8+q	@T0T 1I
  !
 +HRL9<LMa<bb ('|
s   /Bc              #   F   K   dddd}t        j                         D ]  } j                         D ]5  }	  j                  ||| j                  d|dz     j
                        } n  fd	}d
   xs g D ],  } |||j                  d      |j                  d             . |j                  d      }|s y |j                  dd         y # t        $ rE}t        |j                  t              r|j                  j                  dk7  r ||_        Y d }~d }~ww xY ww)N   rp  r   rr  linked_partitioningrs  zDownloading track page r   )rI   r   r   impersonatei  c            
      :   | D ]  }t        |t              st        |j                  d            }|s1j	                  |t
        j                  |      rt
        j                         nd t        |j                  d            |j                  d            c S  y )Nr1  r   r    )	r   dictr   rF   rG   r   suitabler   r   )
candidatescandr1  rH   s      rK   resolve_entryz=SoundcloudPagedPlaylistBaseIE._entries.<locals>.resolve_entry  s    & LD%dD1 $/0I$JM$#)5A5J5J=5YL//1_c'7'9J L LLrM   ru  r.   r;   r  rs  )r  r  r  r   r   r7  r
   r   r   r   r   r  rF   pop)	rH   r   r  rI   r   r  responser   rB  s	   `        rK   r  z&SoundcloudPagedPlaylistBaseIE._entries  s0     #&
 " "	&A**, #~~[t}}6q1ug>$($D$D	  .  FH
  	L l+1r J#AquuW~quuZ7HIIJ ,,{+CIIh%E"	& &  &aggy9QWW^^s=R"#EKs/   1D!1C&A*D!	D;DD!DD!N)rN   rO   rP   r"  r  r  r7  r  rV   rM   rK   r  r    s&    
  .+&rM   r  c                       e Zd ZdZdZddddddd	dd
dddddddddddddddddddddddddddddddddddd dddgZd!d"d#d$d%d&d'd(d)Zd* Zy+),SoundcloudUserIEam  (?x)
                        https?://
                            (?:(?:www|m)\.)?soundcloud\.com/
                            (?P<user>[^/]+)
                            (?:/
                                (?P<rsrc>tracks|albums|sets|reposts|likes|spotlight|comments)
                            )?
                            /?(?:[?#].*)?$
                    zsoundcloud:userz)https://soundcloud.com/soft-cell-official	207965082zSoft Cell (All)r   r       rB   z0https://soundcloud.com/soft-cell-official/trackszSoft Cell (Tracks)   z0https://soundcloud.com/soft-cell-official/albumszSoft Cell (Albums)r   z"https://soundcloud.com/jcv246/sets12982173zJordi / cv (Sets)r   z%https://soundcloud.com/jcv246/repostszJordi / cv (Reposts)   z%https://soundcloud.com/clalberg/likes11817582zclalberg (Likes)r   z*https://soundcloud.com/grynpyret/spotlight7098329zGrynpyret (Spotlight)r   z4https://soundcloud.com/one-thousand-and-one/comments	992430331z7x11x13-testing (Comments)zstream/users/%szusers/%s/trackszusers/%s/albumszusers/%s/playlistszstream/users/%s/repostszusers/%s/likeszusers/%s/spotlightzusers/%s/comments)rT  r  albumssetsrepostslikes	spotlightcommentsc           	         | j                  |      }|j                  d      }| j                  | j                  | j                  |z         |d| j
                        }|j                  d      xs d}| j                  | j                  | j                  |   |d   z  z   t        |j                  d            dj                  |d   |j                                     S )	Nr   Downloading user infor  rsrcrT  r   {} ({})r   )r  r  r   ri  r   r   r"  rH  _BASE_URL_MAPr   rF   r  
capitalize)rH   r   r  r1   r   resources         rK   rL   zSoundcloudUserIE._real_extractu  s    $$S)::f%~~T^^h67-t}}  F ::f%.%% 2 28 <tDz II'T*-x/B/B/DEG 	GrM   NrN   rO   rP   rQ   r  rS   rZ  rL   rV   rM   rK   rF  rF  %  s   J  G:&
   B)
   B)
  4(
  7+
  7'
  <,
  F1
 c8Fv !##$,!)'	MGrM   rF  c                   .    e Zd ZdZdZddddddgZd	 Zy
)SoundcloudUserPermalinkIEz/https?://api\.soundcloud\.com/users/(?P<id>\d+)zsoundcloud:user:permalinkz)https://api.soundcloud.com/users/3090986930909869neilcicrH     rB   c                    | j                  |      }| j                  | j                  |      |d| j                        }| j	                  | j
                   d|d    dt        |d         |j                  d            S )NrW  r  zusers/r   z/tracksr   )	_match_idr   ri  r   r"  rH  r   rF   )rH   r   user_idr   s       rK   rL   z'SoundcloudUserPermalinkIE._real_extract  s    ..%~~S!7,CT]]  \ %%  !T
|7;Sd_dhhWaNbd 	drM   Nr  rV   rM   rK   r_  r_    s1    CJ)G:
   FdrM   r_  c                   .    e Zd ZdZdZddddddgZd	 Zy
)SoundcloudTrackStationIEzNhttps?://(?:(?:www|m)\.)?soundcloud\.com/stations/track/[^/]+/(?P<id>[^/?#&]+)zsoundcloud:trackstationz?https://soundcloud.com/stations/track/officialsundial/your-text	286017854zTrack station: your textrH  r_   rB   c                 2   | j                  |      }| j                  | j                  |      || j                        }| j	                  d|d   d      }| j                  | j                  dj                  |d         z   |dj                  |d               S )Nr  zsoundcloud:track-stations:(\d+)r   ztrack idzstations/{}/trackszTrack station: {}r    )rd  r   ri  r   r   r"  rH  r  )rH   r   
track_namer.   r[  s        rK   rL   z&SoundcloudTrackStationIE._real_extract  s    ^^C(
t//4j$--X%%.dZI %% 4 ; ;E$K HH)00w@B 	BrM   Nr  rV   rM   rK   rg  rg    s1    bJ'GP/
   F	BrM   rg  c                   Z    e Zd ZdZdZddddddd	dd
dddddddddgZddddZd Zy)SoundcloudRelatedIEzjhttps?://(?:(?:www|m)\.)?soundcloud\.com/(?P<slug>[\w\d-]+/[\w\d-]+)/(?P<relation>albums|sets|recommended)zsoundcloud:relatedz;https://soundcloud.com/wajang/sexapil-pingers-5/recommended
1084577272z!Sexapil - Pingers 5 (Recommended)rH  1   rB   z6https://soundcloud.com/wajang/sexapil-pingers-5/albumszSexapil - Pingers 5 (Albums)r   z4https://soundcloud.com/wajang/sexapil-pingers-5/setszSexapil - Pingers 5 (Sets)r  ztracks/%s/albumsz"tracks/%s/playlists_without_albumsztracks/%s/related)rP  rQ  recommendedc           	      .   | j                  |      j                  dd      \  }}| j                  | j                  | j                  |z         |d| j
                        }|j                  d      r6t        | j                   ddj                  d |d   D              z  d	
      | j                  | j                  | j                  |   |d   z  z   t        |d         dj                  |j                  d      xs ||j                                     S )NslugrelationzDownloading track infor  r  z	 said: %sr  c              3   8   K   | ]  }t        |d            ywr  r  r  s     rK   r~   z4SoundcloudRelatedIE._real_extract.<locals>.<genexpr>  s#      GF.1C()GFr  Tr   r   rY  r    )r  r  r   ri  r   r   rF   r
   r  ry   r"  rH  rZ  r   r  r[  )rH   r   rq  rr  r.   s        rK   rL   z!SoundcloudRelatedIE._real_extract  s   ..s399&*MhT^^d23*DMM  C 99X DLL>!;chh GF5:8_GF ?F "FPTV V %% 2 28 <uT{ JJCPUVZP[L\UYYw/749L9L9NOQ 	QrM   Nr]  rV   rM   rK   rl  rl    sy    ~J"GL8
   H3
  F1
 F0 %4*MQrM   rl  c                      e Zd ZdZdZdi dddddd	d
dddddddgdddddddddddddddddd d!d"d#d#d$gg d%d&d'd(d)d*d(d+d,d(d-d.d(d/d0d(d1d2d(d3d4d(d5d6d(d7d8d(d9d:d(g
d;d<d=d>d?d@dAd?d@gZdB ZyC)DSoundcloudPlaylistIEzhttps?://api(?:-v2)?\.soundcloud\.com/playlists/(?:soundcloud(?:%3A|:)playlists(?:%3A|:))?(?P<id>[0-9]+)(?:/?\?secret_token=(?P<token>[^&]+?))?$zsoundcloud:playlistz,https://api.soundcloud.com/playlists/4110309r   4110309r    z=TILT Brass - Bowery Poetry Club, August '03 [Non-Site SCR 02]r"   z$md5:e4373f7177fe3db292a8552b4ec41bc6r1   Non-Site Recordsr2   33660914r4   z'https://soundcloud.com/non-site_recordsr?   r@   r;   r>   r-   igCQr/   20130316r>  i CQr?  r@  iVr  20151013r#   gQ^Ѡ@r&   r'   r   Downtown)
rw  z
TILT BrasszTILT Creative Brass BandzBowery Poetry ClubzNick Didkovskyz	Tom WaitszDave BallouzElliott SharpzAFKA PrinceNPGrb   z;https://i1.sndcdn.com/artworks-000043059944-9zwy8g-mini.jpgr  rc   z;https://i1.sndcdn.com/artworks-000043059944-9zwy8g-tiny.jpgrd   z<https://i1.sndcdn.com/artworks-000043059944-9zwy8g-small.jpgre   z<https://i1.sndcdn.com/artworks-000043059944-9zwy8g-badge.jpgrf   z=https://i1.sndcdn.com/artworks-000043059944-9zwy8g-t67x67.jpgrg   z<https://i1.sndcdn.com/artworks-000043059944-9zwy8g-large.jpgrh   z?https://i1.sndcdn.com/artworks-000043059944-9zwy8g-t300x300.jpgri   z;https://i1.sndcdn.com/artworks-000043059944-9zwy8g-crop.jpgrj   z?https://i1.sndcdn.com/artworks-000043059944-9zwy8g-t500x500.jpgrk   z?https://i1.sndcdn.com/artworks-000043059944-9zwy8g-original.pngr
  rL  r  zHhttps://api.soundcloud.com/playlists/soundcloud%3Aplaylists%3A1759227795Tr   z_https://api.soundcloud.com/playlists/soundcloud:playlists:2104769627?secret_token=s-wmpCLuExeYXc                     | j                  |      }|j                  d      }i }|j                  d      }|r||d<   | j                  | j                  dz   |z   |d|| j                        }| j                  ||      S )Nr   r   rE   z
playlists/zDownloading playlistr   )r  r  r   rH  r   r  )rH   r   r  r  rI   r   r   s          rK   rL   z"SoundcloudPlaylistIE._real_extract  s    $$S)jj&

7#$)E.!~~,{:/udmm  U   u--rM   Nr  rV   rM   rK   ru  ru    s    eJ#G=#
)#
U#
 A#
 *	#

 :#
 E#
 01#
 *#
 U#
 #
 :#
  #
 J#
 !*#
 Z#
  !#
" ,##
$ !lj &cd&cd'ef'ef(gh'ef!*kl&cd!*kl!*kl/#
H M'P Z qU-F^.rM   ru  c                   @    e Zd ZdZdZdZddddddgZd	Zd
Zd Z	d Z
y)SoundcloudSearchIEzsoundcloud:searchzSoundcloud searchscsearchzscsearch15:post-avant jazzcorezpost-avant jazzcorerH     r  r9  2   c           
   +     K   t        |j                  d| j                        | j                        }|j	                  |ddd       t        | j                  |z   |      }t        j                  d      D ]  }| j                  ||d| d| j                        }|j                  d      xs g D ]A  }|s | j                  |d	   t        j                         fi | j                  |d
       C |j                  d      }|r y  y w)Nrr  r   r   r:  zDownloading page zUnable to download API pager  ru  uriT)rZ  r  )minrF   _DEFAULT_RESULTS_PER_PAGE_MAX_RESULTS_PER_PAGEr  r   rH  r  r  r   r   rG   r   r   rf  )	rH   endpointcollection_idrI   rr  r  r   rD  items	            rK   _get_collectionz"SoundcloudSearchIE._get_collection4  s"    IIgt==>&&( 	#$
 	
 $D$5$5$@%H# 	A~~-+<QC)@-t}} & FH !\28b p)$//U\%8%8%:p>B>U>UVZim>U>np pp
  ||K0H	s   B4D7AD	Dc           
          | j                  t        j                  | j                  d|||      d|t	        d      k(  rd n|      ||      S )Nzsearch/tracks)rr  qr   inf)r  r  islicer  r*  )rH   rI   r   s      rK   _get_n_resultsz!SoundcloudSearchIE._get_n_resultsM  sR    ##I$4$4  %qE JqE%L(ta%127@ 	@rM   N)rN   rO   rP   r  IE_DESC_SEARCH_KEYrS   r  r  r  r  rV   rM   rK   r  r  $  sI    !G!GK/'*
  F   "2@rM   r  )(r  r  r   rv   commonr   r   
networkingr   networking.exceptionsr   networking.impersonater	   utilsr
   r   r   r   r   r   r   r   r   r   r   r   utils.traversalr   r   rX   r   r  r  r  rF  r_  rg  rl  ru  r  rV   rM   rK   <module>r     s       	 6 $ - 6    +4( 4(nX} XvD&# D&N
1
/ 1
hk.. k.\L&$4 L&^]G4 ]G@d = d*B< B0-Q7 -Q`?.3 ?.D,@)+> ,@rM   