Ë
    š„jý)  ã                   ó¦   — d dl Z d dlZddlmZ ddlmZmZmZ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y)é    Né   )ÚInfoExtractoré   )ÚExtractorErrorÚstr_or_noneÚtry_getÚurl_or_nonec                   óT   ‡ — e Zd ZdZdZd„ Zˆ fd„Zed„ «       Z	 	 	 dˆ fd„	Z	d„ Z
ˆ xZS )	ÚAudiusBaseIENz/v1c                 óÄ   — t        |t        «      rF|j                  d«      }|�|S t        |«      dk(  r#d|v rt	        dj                  |d   «      d¬«      ‚t	        d«      ‚)NÚdatar   ÚmessagezAPI error: {}T©ÚexpectedúUnexpected API response)Ú
isinstanceÚdictÚgetÚlenr   Úformat)ÚselfÚresponseÚresponse_datas      úN/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/audius.pyÚ_get_response_datazAudiusBaseIE._get_response_data   sg   € Ü�h¤Ô%Ø$ŸL™L¨Ó0ˆMØÐ(Ø$Ð$Ü�8‹} Ò! i°8Ñ&;Ü$ _×%;Ñ%;¸HÀYÑ<OÓ%PØ.2ô4ð 4äÐ6Ó7Ð7ó    c                 ó¸   •— t         ‰| �  dddd¬«      }| j                  |«      }t        |t        «      rt        j                  |«      | _        yt        d«      ‚)z2Selecting one of the currently available API hostszhttps://api.audius.co/NzRequesting available API hostsz%Unable to request available API hosts©ÚnoteÚerrnotez!Unable to get available API hosts)	ÚsuperÚ_download_jsonr   r   ÚlistÚrandomÚchoiceÚ	_API_BASEr   )r   r   ÚhostsÚ	__class__s      €r   Ú_select_api_basezAudiusBaseIE._select_api_base   s]   ø€ ä‘7Ñ)Ø$ dØ1Ø;ð *ó =ˆð ×'Ñ'¨Ó1ˆÜ�eœTÔ"Ü#Ÿ]™]¨5Ó1ˆDŒNØÜÐ@ÓAÐAr   c                 óú   — t         j                  j                  | «      } t         j                  j                  |«      }d|v sd|v r4|j                  dd«      j                  dd«      }| j                  ||«      S | S )aŸ  
        Audius removes forward slashes from the uri, but leaves backslashes.
        The problem is that the current version of Chrome replaces backslashes
        in the address bar with a forward slashes, so if you copy the link from
        there and paste it into youtube-dl, you won't be able to download
        anything from this link, since the Audius API won't be able to resolve
        this url
        ú/z%2Fz%5C)ÚurllibÚparseÚunquoteÚreplace)ÚurlÚtitleÚfixed_titles      r   Ú_prepare_urlzAudiusBaseIE._prepare_url"   sl   € ô �l‰l×"Ñ" 3Ó'ˆÜ—‘×$Ñ$ UÓ+ˆØ�%‰<˜5 E™>ØŸ-™-¨¨UÓ3×;Ñ;¸EÀ5ÓIˆKØ—;‘;˜u kÓ2Ð2Øˆ
r   c                 ó  •— | j                   €| j                  «        	 t        ‰| �  | j                   › | j                  › |› �||||¬«      }| j                  |«      S # t
        $ r!}dt        |«      v rt        dd¬«      ‚|‚d }~ww xY w)N)r   r    Úexpected_statuszFailed to parse JSONz1An error occurred while receiving data. Try againTr   )r&   r)   r!   r"   Ú_API_Vr   Ústrr   )	r   ÚpathÚitem_idr   r    r5   r   Úexcr(   s	           €r   Ú_api_requestzAudiusBaseIE._api_request3   s    ø€ ð �>‰>Ð!Ø×!Ñ!Ô#ð		Ü‘wÑ-Ø—>‘>Ð" 4§;¡; -°¨vÐ6¸ÀdØ°ð .ó BˆHð ×&Ñ& xÓ0Ð0øô ò 	à%¬¨S«Ñ1Ü$Ð%XØ.2ô4ð 4àˆIûð	ús   Ÿ.A Á	BÁ'BÂBc                 ó0   — | j                  d|› �|d¬«      S )Nz/resolve?url=i”  )r5   )r;   )r   r0   r9   s      r   Ú_resolve_urlzAudiusBaseIE._resolve_urlD   s(   € Ø× Ñ  =°°Ð!6¸Ø14ð !ó 6ð 	6r   )NzDownloading JSON metadataz Unable to download JSON metadataN)Ú__name__Ú
__module__Ú__qualname__r&   r6   r   r)   Ústaticmethodr3   r;   r=   Ú__classcell__)r(   s   @r   r   r      sB   ø„ Ø€IØ€Fò8ô
Bð ñó ðð  5PØ?Ø%)õ1ö"6r   r   c                   óp   — e Zd ZdZdZddddddd	dd
ddeeedœdœddddddddddeeedœdœgZddddœZd„ Zy)ÚAudiusIEz_(?x)https?://(?:www\.)?(?:audius\.co/(?P<uploader>[\w\d-]+)(?!/album|/playlist)/(?P<title>\S+))z	Audius.coz]https://audius.co/test_acc/t%D0%B5%D0%B5%D0%B5est-1.%5E_%7B%7D/%22%3C%3E.%E2%84%96~%60-198631Ú 92c35d3e754d5a0f17eef396b0d33582Úxd8gYu/   TÐµÐµÐµest/ 1.!@#$%^&*()_+=[]{};'\":<>,.?/â„–~`Úmp3ÚDescriptioné   ÚtestÚ
Electroniczre:https?://.*\.jpg)Úidr1   ÚextÚdescriptionÚdurationÚtrackÚartistÚgenreÚ	thumbnailÚ
view_countÚ
like_countÚrepost_count)r0   Úmd5Ú	info_dictz%https://audius.co/voltra/radar-103692Ú 491898a0a8de39f20c5d6a8a80ab5132ÚKKdy2ÚRADARi>  ÚvoltraÚTrance)rL   r1   rM   rO   rP   rQ   rR   rS   rT   rU   rV   é–   ià  iè  )Ú150x150Ú480x480Ú	1000x1000c                 óœ  — | j                  |«      }t        |d„ «      }|€6|j                  d«      }| j                  ||«      }| j	                  ||«      }nd }| j                  d|› �|«      }t        |t        «      st        d«      ‚|j                  d«      }|€t        d«      ‚|j                  d«      }g }t        |t        «      r[|j                  «       D ]H  \  }}	t        |	«      sŒd|	i}
| j                  j                  |«      }|�||
d	<   |j                  |
«       ŒJ ||j                  d|«      | j                  › d
|› d�d|j                  d«      |j                  d«      |j                  d«      t        |d„ t        «      |j                  d«      ||j                  d«      |j                  d«      |j                  d«      dœS )Nc                 ó$   — | j                  d«      S )NÚtrack_id)Úgroup©Úxs    r   ú<lambda>z(AudiusIE._real_extract.<locals>.<lambda>|   s   € ¨1¯7©7°:Ó+>€ r   r1   z/tracks/r   rL   zUnable to get ID of the trackÚartworkr0   Ú
preferencez/v1/tracks/z/streamrG   rN   rO   c                 ó   — | d   d   S )NÚuserÚname© rf   s    r   rh   z(AudiusIE._real_extract.<locals>.<lambda>¤   s   € °A°f±I¸fÑ4E€ r   rR   Ú
play_countÚfavorite_countrV   )rL   r1   r0   rM   rN   rO   rP   rQ   rR   Ú
thumbnailsrT   rU   rV   )Ú_match_valid_urlr   re   r3   r=   r;   r   r   r   r   Úitemsr	   Ú_ARTWORK_MAPÚappendr&   r7   )r   r0   Úmobjrd   r1   Ú
track_dataÚartworks_datarq   Úquality_keyÚthumbnail_urlrS   Úquality_codes               r   Ú_real_extractzAudiusIE._real_extractz   sÌ  € Ø×$Ñ$ SÓ)ˆÜ˜4Ñ!>Ó?ˆØÐØ—J‘J˜wÓ'ˆEà×#Ñ# C¨Ó/ˆCØ×*Ñ*¨3°Ó6‰JàˆEà×*Ñ*¨X°h°ZÐ+@À(ÓKˆJä˜*¤dÔ+Ü Ð!:Ó;Ð;à—>‘> $Ó'ˆØÐÜ Ð!@ÓAÐAà"Ÿ™ yÓ1ˆØˆ
Ü�m¤TÔ*Ø.;×.AÑ.AÓ.Cò 	-Ñ*�˜]Ü" =Ô1Øà˜=ð�	ð  $×0Ñ0×4Ñ4°[ÓA�ØÐ+Ø.:�I˜lÑ+Ø×!Ñ! )Õ,ð	-ð Ø—^‘^ G¨UÓ3Ø—n‘nÐ% [°°
¸'ÐBØØ%Ÿ>™>¨-Ó8Ø"Ÿ™ zÓ2Ø—^‘^ GÓ,Ü˜jÑ*EÄsÓKØ—^‘^ GÓ,Ø$Ø$Ÿ.™.¨Ó6Ø$Ÿ.™.Ð)9Ó:Ø&ŸN™N¨>Ó:ñ
ð 	
r   N)	r>   r?   r@   Ú
_VALID_URLÚIE_DESCÚintÚ_TESTSrt   r|   rn   r   r   rD   rD   I   s•   „ Øw€JØ€Gð sØ5àØPØØ,ØØPØ Ø%Ø3Ø!Ø!Ø #ññ		
ð* ;Ø5àØ ØØØ Ø"Ø!Ø3Ø!Ø!Ø #ññ		
ð)&€FðR ØØñ€Ló0
r   rD   c                   ó,   — e Zd ZdZdZdZdddœdddœgZy)	ÚAudiusTrackIEzE(?x)(?:audius:)(?:https?://(?:www\.)?.+/v1/tracks/)?(?P<track_id>\w+)zaudius:trackz3Audius track ID or API link. Prepend with "audius:"zaudius:9RWloT)r0   Úonly_matchingzRaudius:http://discoveryprovider.audius.prod-us-west-2.staked.cloud/v1/tracks/9RWloN)r>   r?   r@   r}   ÚIE_NAMEr~   r€   rn   r   r   r‚   r‚   ­   s3   „ Ø]€JØ€GØC€Gð "Ø!ñ	
ð
 hØ!ñ	
ð	�Fr   r‚   c                   ó8   — e Zd ZdZdZdZdddddœd	d
œZd„ Zd„ Zy)ÚAudiusPlaylistIEzVhttps?://(?:www\.)?audius\.co/(?P<uploader>[\w\d-]+)/(?:album|playlist)/(?P<title>\S+)zaudius:playlistzAudius.co playlistsz7https://audius.co/test_acc/playlist/test-playlist-22910ÚDNvjNztest playlistzTest description

lol)rL   r1   rN   é¯   ©r0   rX   Úplaylist_countc                 ó  — g }|D ]|  }t        |t        «      st        d«      ‚t        |j	                  d«      «      }|st        d«      ‚|j                  | j                  d|› �t        j                  «       |¬«      «       Œ~ |S )Nr   rL   z$Unable to get track ID from playlistzaudius:)ÚieÚvideo_id)	r   r   r   r   r   ru   Ú
url_resultr‚   Úie_key)r   ÚtracksÚentriesrP   rd   s        r   Ú_build_playlistz AudiusPlaylistIE._build_playlistË   sˆ   € ØˆØò 	?ˆEÜ˜e¤TÔ*Ü$Ð%>Ó?Ð?Ü" 5§9¡9¨T£?Ó3ˆHÙÜ$Ð%KÓLÐLØ�N‰N˜4Ÿ?™?Ø˜(˜Ð$Ü ×'Ñ'Ó)°Hð +ó >õ ?ð	?ð ˆr   c                 ól  — | j                  «        | j                  |«      }|j                  d«      }| j                  ||«      }| j	                  ||«      }t        |t        «      rt        |«      dk7  rt        d«      ‚|d   }t        |t        «      st        d«      ‚|j                  d«      }|€t        d«      ‚| j                  d|› d�|d	d
¬«      }t        |t        «      st        d«      ‚| j                  |«      }| j                  |||j                  d|«      |j                  d«      «      S )Nr1   r   r   r   rL   zUnable to get playlist IDz/playlists/ú/tracksz$Downloading playlist tracks metadataz+Unable to download playlist tracks metadatar   Úplaylist_namerN   )r)   rr   re   r3   r=   r   r#   r   r   r   r   r;   r’   Úplaylist_result)	r   r0   rv   r1   Úplaylist_responseÚplaylist_dataÚplaylist_idÚplaylist_tracksr‘   s	            r   r|   zAudiusPlaylistIE._real_extractØ   sB  € Ø×ÑÔØ×$Ñ$ SÓ)ˆØ—
‘
˜7Ó#ˆà×Ñ  UÓ+ˆØ ×-Ñ-¨c°5Ó9ÐäÐ+¬TÔ2´cÐ:KÓ6LÐPQÒ6QÜ Ð!:Ó;Ð;à)¨!Ñ,ˆÜ˜-¬Ô.Ü Ð!:Ó;Ð;à#×'Ñ'¨Ó-ˆØÐÜ Ð!<Ó=Ð=à×+Ñ+Ø˜+˜ gÐ.ØÐ>ØAð ,ó Cˆô ˜/¬4Ô0Ü Ð!:Ó;Ð;à×&Ñ& Ó7ˆØ×#Ñ# G¨[Ø$1×$5Ñ$5°oÀuÓ$MØ$1×$5Ñ$5°mÓ$DóFð 	Fr   N)	r>   r?   r@   r}   r„   r~   Ú_TESTr’   r|   rn   r   r   r†   r†   ½   s9   „ Øj€JØ€GØ#€GàHàØ$Ø4ñ
ð
 ñ€EòóFr   r†   c                   ó2   — e Zd ZdZdZdZdddddœd	d
œZd„ Zy)ÚAudiusProfileIEzaudius:artistzAudius.co profile/artist pagesz6https?://(?:www)?audius\.co/(?P<id>[^\/]+)/?(?:[?#]|$)zhttps://audius.co/pzl/ÚezRo7z&TAMALE

Contact: officialpzl@gmail.comÚpzl)rL   rN   r1   é   r‰   c                 ój  — | j                  «        | j                  |«      }	 | j                  d|z   |«      }|d   d   }|d   j                  d«      }| j                  d|› d�|«      }| j                  | j                  |«      |||«      S # t        $ r}t        dt	        |«      z   «      ‚d }~ww xY w)Nz/full/users/handle/z!Could not download profile info; r   rL   Úbior”   )r)   Ú	_match_idr;   r   r7   r   r–   r’   )r   r0   Ú
profile_idÚ_profile_dataÚeÚprofile_audius_idÚprofile_bioÚapi_calls           r   r|   zAudiusProfileIE._real_extract  sÍ   € Ø×ÑÔØ—^‘^ CÓ(ˆ
ð	OØ ×-Ñ-Ð.CÀjÑ.PÐR\Ó]ˆMð *¨!Ñ,¨TÑ2ÐØ# AÑ&×*Ñ*¨5Ó1ˆà×$Ñ$Ð':¸:¸,ÀgÐ%NÐPZÓ[ˆØ×#Ñ# D×$8Ñ$8¸Ó$BÐDUÐWaÐcnÓoÐoøô ò 	OÜ Ð!DÄsÈ1ÃvÑ!MÓNÐNûð	Oús   £B Â	B2ÂB-Â-B2N)r>   r?   r@   r„   r~   r}   r›   r|   rn   r   r   r�   r�   ø   s4   „ Ø€GØ.€GØJ€Jà'àØEØñ
ð
 ñ€Eópr   r�   )r$   Úurllib.parser,   Úcommonr   Úutilsr   r   r   r	   r   rD   r‚   r†   r�   rn   r   r   ú<module>r­      sZ   ðÛ Û å !ß EÓ Eô>6�=ô >6ôBa
ˆ|ô a
ôH�Hô ô 8F�|ô 8FôvpÐ&õ pr   