a
    h K                     @   sx   d dl mZ ddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZ G dd deZG dd deZG d	d
 d
eZdS )   )InfoExtractor   )ExtractorErrorfloat_or_noneformat_fieldint_or_noneparse_iso8601parse_qstruncate_stringurl_or_none)traverse_objvaluec                   @   s2   e Zd Zdd Zd
ddZdddZddd	ZdS )BandlabBaseIEc                 K   sB   | dd pi }| jd| d| |fdddddd|i|S )	Nheadersz!https://www.bandlab.com/api/v1.3//zapplication/jsonzhttps://www.bandlab.com/zBandLab-Webz10.1.124)acceptZrefererzx-client-idzx-client-version)popZ_download_json)selfendpointZasset_idkwargsr    r   M/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/bandlab.py	_call_api   s    zBandlabBaseIE._call_apiNc                 C   s   ddt  t jdt|dt|htddhfttfdthtfdd	thfdd	thfd
dt	hfdddt	hfdthfdd	thfddthfdt
hfd
dthfddthfddthfddthfddd	thfdS )NnonerevisionZvcodec
media_typeextractor_key	extractoridz#https://www.bandlab.com/revision/%stemplate
revisionIdr   ZsongnameZmixdownfilepictureurldescriptioncreatorusername	createdOndurationcountersplayslikescommentsgenres.)webpage_urlr   titletrackr'   	thumbnailr(   uploaderuploader_id	timestampr,   
view_count
like_countcomment_countr1   )	BandlabIEie_keyIE_NAMEr   r   r   filteranystrr   r   r   r   )r   revision_datar'   r   r   r   _parse_revision   s0    









zBandlabBaseIE._parse_revisionc                 C   s   ddt  t jdt|dt|htddhfttfdthtfddd	t	hfdd
thfdd
thfdthfdddt	htfddt
hfddt
hfddt
hfdddthfdd
thfddthfdthfdS )Nr   r4   r   r   https://www.bandlab.com/post/%sr    r"   sampleZaudioUrlr$   captionr&   originalr'   r-   r.   r/   r0   r,   r)   r*   r+   )r2   r   r'   r3   r4   r(   r5   r9   r:   r;   r,   r6   r7   r8   )r<   r=   r>   r   r   r   r?   r@   rA   r   r   r   r   )r   Z
track_datar'   r   r   r   _parse_track6   s.    







zBandlabBaseIE._parse_trackc                 C   s   dt  t jdt|dthfdt|htddhfttfddt	hfddd	 ht
d
dhfdthfdddt	hfdddthfdddthfddthfddthfddthfddthfdS )Nvideo)r   r   r   r   rD   r    r'   rF   c                 S   s   |  ddS )N
 replacexr   r   r   <lambda>Y       z,BandlabBaseIE._parse_video.<locals>.<lambda>H   )leftr&   r-   r.   r/   r0   r,   r)   r$   r*   )r   r2   r'   r3   r(   r5   r9   r:   r;   r,   r6   r7   )r<   r=   r>   r   rA   r   r   r?   r@   r   r
   r   r   )r   Z
video_datar'   r   r   r   _parse_videoO   s(    




zBandlabBaseIE._parse_video)N)N)N)__name__
__module____qualname__r   rC   rI   rU   r   r   r   r   r      s   

r   c                   @   s  e Zd ZddgZded  dgZdddd	d
dddeedddddgdeddddddd	d
dddeedddddgdeddddddd	edgddddd ed!ed"d#ddd$dd%d&d'd	d(d)d*d+d,d-eed+d.gd/ed0dd1dd2d3d4d5d6d7ed8d9d:ed8d;d<dd=d>d?d	ed@gdAdBdCedDdEdFdGdHdDeddIddJdKdLd	dMedNdMeedOdPdQdRdSdTdUddVdWdXgZdYdZd	ed[d\d]d^ed_gd`daedbdbdcddddegZdfdg ZdhS )ir<   zShttps?://(?:www\.)?bandlab.com/(?P<url_type>track|post|revision)/(?P<id>[\da-f_-]+)zThttps?://(?:www\.)?bandlab.com/(?P<url_type>embed)/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)<iframe[^>]+src=[\'"](?P<url>r   )[\'"]z_https://www.bandlab.com/track/04b37e88dba24967b9dac8eb8567ff39_07d7f906fc96ee11b75e000d3a428fffZ 46f7b43367dd268bbcf0bbe466753b2cz$02d7f906-fc96-ee11-b75e-000d3a428fffZm4aZender_milzezsweet blackzcomposed by juanjn3737i;uegp=
ףPK@Z20231210zUhttps://bl-prod-images.azureedge.net/v1.0/songs/fa082beb-b856-4730-9170-a57e4e32cc2c/ZLofizender milzer   )r   extr7   r4   r(   r8   r9   r:   r,   r3   upload_dater5   r1   r6   r;   r   )r'   md5	info_dictzAhttps://www.bandlab.com/post/07d7f906-fc96-ee11-b75e-000d3a428fffiEuezchttps://www.bandlab.com/track/048916c2-c6da-ee11-85f9-6045bd2e11f9?sharedKey=0NNWX8qYAEmI38lWAzCNDAZ 15174b57c44440e2a2008be9cae00250z$038916c2-c6da-ee11-85f9-6045bd2e11f9ZOtherZuser8353034818103753zUhttps://bl-prod-images.azureedge.net/v1.0/songs/51b18363-da23-4b9b-a29c-2933a3e561ca/ieZPodcastMaerchen4bg
ףp=B}@u#   Podcast: Neues aus der MärchenweltZ20240305zErna Wageneder)r   r[   r;   r1   r7   r5   r8   r4   r,   r9   r(   r:   r\   r6   r3   r   zmhttps://www.bandlab.com/track/130343fc-148b-ea11-96d2-0003ffd1fc09?revId=110343fc-148b-ea11-96d2-0003ffd1fc09Z 74e055ef9325d63f37088772fbfe4454z$110343fc-148b-ea11-96d2-0003ffd1fc09i ^zUhttps://bl-prod-images.azureedge.net/v1.0/users/b612e533-e4f7-4542-9f50-3fcfd8dd822c/zFinal Revision.zReplay ( Instrumental)David R Sparksdavesnothome69ZRockZ20200430g{Gvq@)r   r[   r8   r5   r(   r3   r6   r7   r9   r;   r4   r1   r\   r:   r,   r   zAhttps://www.bandlab.com/post/5cdf9036-3857-ef11-991a-6045bd36e0d9Z 8caa2ef28e86c1dacf167293cfdbeba9z$5cdf9036-3857-ef11-991a-6045bd36e0d9Zmp4g
ףp=ZF@zVhttps://bl-prod-images.azureedge.net/v1.0/videos/67c6cef1-cef6-40d3-831e-a55bc1dcb972/zbacking vocalsZ
marliashyaZauraarJ   )r   r[   r,   r5   r;   r3   r7   r6   r:   r(   r   zQhttps://www.bandlab.com/embed/?blur=false&id=014de0a4-7d82-ea11-a94c-0003ffd19c0fZ a4ad05cb68c54faaed9b0a8453a8cf4az$014de0a4-7d82-ea11-a94c-0003ffd19c0fZ
ElectroniczCharlie Hensoni^Z20200419zPositronic Meltdowngs@zUhttps://bl-prod-images.azureedge.net/v1.0/songs/87165bc3-5439-496e-b1f7-a9f13b541ff2/z1Checkout my tracks at AOMX http://aomxsounds.com/Zmicrofreaks)r   r[   r;   r1   r6   r8   r\   r9   r4   r,   r5   r(   r7   r3   r:   r   z_https://www.bandlab.com/track/55767ac51789ea11a94c0003ffd1fc09_2f007b0a37b94ec7a69bc25ae15108a5Z f05d68a3769952c2d9257c473e14c15fZA55767ac51789ea11a94c0003ffd1fc09_2f007b0a37b94ec7a69bc25ae15108a5ZinsamegRU@SorakimesorakimezUhttps://bl-prod-images.azureedge.net/v1.0/users/572a351a-0f3a-4c6a-ac39-1a5defdeeb1c/idZ20230804r4   )r   r[   r4   r:   r,   r3   r9   r;   r6   r7   r5   r8   r\   r   zEhttps://www.bandlab.com/revision/014de0a4-7d82-ea11-a94c-0003ffd19c0fTr'   Zonly_matchingzhttps://phantomluigi.github.io/z$e14223c3-7871-ef11-bdfd-000d3a980db3Z20240913ZphantommusicofficialiѤfZPhantomzProgresive Rockz$md5:a38cd668f7a2843295ef284114f18429g(\'l@zVermilion Pt. 2 (Cover)zThttps://bandlabimages.azureedge.net/v1.0/songs/62b10750-7aef-4f42-ad08-1af52f577e97/)r   r[   r9   r\   r7   r8   r6   r;   r1   r(   r,   r:   r3   r4   r5   r   )r'   r^   c           	      C   s   |  |dd\}}t|}t|ddtf}|dkr:|}d }|s| jd|dt|dd	id
}t|dthtf}t|dthf}|s|s|d}|dkr| j	||dS |dkr| j
||dS td||s| jd|dddid
}| j||dS )Nr   url_type)ZrevIdr       r   postszDownloading post data	sharedKey)rg   re   )notequery)r#   )r   r   typeVideo)r'   Trackz%Could not extract data for post type Z	revisionszDownloading revision dataZeditfalse)_match_valid_urlgroupr	   r   r@   r   rA   dictgetrU   rI   r   rC   )	r   r'   Z
display_idrd   qsZrevision_idrB   Z	post_data	post_typer   r   r   _real_extract  s2    
zBandlabIE._real_extractN)	rV   rW   rX   
_VALID_URL_EMBED_REGEXint_TESTSZ_WEBPAGE_TESTSrt   r   r   r   r   r<   f   sF    r<   c                   @   s   e Zd ZddgZded  dgZdddd	d	ed
deedddddddddeddddedd	dddddded d!ed"ed#d d
d$d%dd&ed'ed(ed)d*d+d+d,d-d.d/d0dd1d2d3gZd4d5 Zd6d7 Zd8S )9BandlabPlaylistIEzXhttps?://(?:www\.)?bandlab.com/(?:[\w]+/)?(?P<type>albums|collections)/(?P<id>[\da-f-]+)z[https?://(?:www\.)?bandlab.com/(?P<type>embed)/collection/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)rY   r   rZ   zRhttps://www.bandlab.com/davesnothome69/albums/89b79ea6-de42-ed11-b495-00224845aac7zVhttps://bl-prod-images.azureedge.net/v1.3/albums/69507ff3-579a-45be-afca-9e87eddec944/Z20221003ZRemnantsZLPz*A collection of some feel good, rock hits.z$89b79ea6-de42-ed11-b495-00224845aac7r_   r`   )r5   release_dater3   albumr:   
album_typer(   r;   r9   r   r6   r7   
   )r'   r^   Zplaylist_countzShttps://www.bandlab.com/slytheband/collections/955102d4-1040-ef11-86c3-000d3a42581bz$955102d4-1040-ef11-86c3-000d3a42581bi#fu   My Shit 🖤Z
slythebandu   𝓢𝓛𝓨Z20240712zZhttps://bandlabimages.azureedge.net/v1.0/collections/2c64ca12-b180-4b76-8587-7a8da76bddc8/)	r   r8   r9   r3   r7   r6   r\   r:   r5      zQhttps://www.bandlab.com/embed/collection/?id=12cc6f7f-951b-ee11-907c-00224844f303z$12cc6f7f-951b-ee11-907c-00224844f303Z20230706zEThis is a collection of songs I created when I had an Amiga computer.zMark Salud The Amiga CollectionZmssirmooth1962zVhttps://bl-prod-images.azureedge.net/v1.3/albums/d618bd7b-0537-40d5-bdd8-61b066e77d59/z
Mark Salud)r   rz   r(   r9   r3   r7   r;   r5   r:   r6   r{   r|      zQhttps://www.bandlab.com/embed/collection/?id=e98aafb5-d932-ee11-b8f0-00224844c719rb   ra   z$md5:4ec31c568a5f5a5a2b17572ea64c3825Z20230812ZArtZAlbumz$e98aafb5-d932-ee11-b8f0-00224844c719zVhttps://bl-prod-images.azureedge.net/v1.3/albums/20c890de-e94a-4422-828a-2da6377a13c8/)r:   r7   r;   r6   r9   r(   rz   r3   r{   r|   r   r5      zChttps://www.bandlab.com/albums/89b79ea6-de42-ed11-b495-00224845aac7Trc   c                 c   s~   t |ddd fD ]f}|d }|dkr:| |dV  q|dkrP| |V  q|dkrf| |V  q| d	| d
 qd S )Nrf   c                 S   s   |d S )Nrj   r   )_vr   r   r   rQ     rR   z,BandlabPlaylistIE._entries.<locals>.<lambda>rj   ZRevisionr   rl   rk   zSkipping unknown post type: "")r   rC   rq   rI   rU   Zreport_warning)r   Z
album_datapostrs   r   r   r   _entries  s    zBandlabPlaylistIE._entriesc                 C   s>  |  |dd\}}dgdgddgd|}|D ]:}| j||d|d d  dd	d
d}|ds4|} qpq4|d }rtd| d| j| ||fi t|dthfdthfddthfddthfdt	hfddd ht
fddthtfddthfddthfddthfd
|dkr6t|dthfdthfdni S )Nr   rj   albumscollections)r   r   embedzDownloading z dataFi  )rh   fatalZexpected_statusZ	errorCodez+Could not find playlist data. Error code: "r   r$   r(   r)   r*   r+   ZreleaseDatec                 S   s   |  ddS )N- rM   rO   r   r   r   rQ     rR   z1BandlabPlaylistIE._real_extract.<locals>.<lambda>r&   rG   r-   r/   r0   r.   )
r3   r(   r6   r7   r8   rz   r5   r:   r;   r9   )r{   r|   )rn   ro   rq   r   r   Zplaylist_resultr   r   rA   r   r?   r   r@   r   )r   r'   Zplaylist_idZplaylist_typeZ	endpointsr   Zplaylist_dataZ
error_coder   r   r   rt     sP    






zBandlabPlaylistIE._real_extractN)	rV   rW   rX   ru   rv   rw   rx   r   rt   r   r   r   r   ry   8  s   Hry   N)commonr   utilsr   r   r   r   r   r	   r
   r   Zutils.traversalr   r   r   r<   ry   r   r   r   r   <module>   s   (
W S