U
    g                     @   sX   d dl 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 G dd deZdS )    N   )InfoExtractor   )

clean_htmlextract_attributesget_element_by_classget_element_html_by_class get_element_text_and_html_by_tagint_or_nonestrip_or_nonetraverse_objtry_callunified_strdatec                	   @   s<   e Zd ZdZddddddddd	d
gZdd Zdd ZdS )MonstercatIEz1https?://www\.monstercat\.com/release/(?P<id>\d+)z/https://www.monstercat.com/release/742779548009   zThe Secret Language of TreesZ742779548009z5https://www.monstercat.com/release/742779548009/coverZ20230711ZBT)titleid	thumbnailrelease_datealbumalbum_artist)urlZplaylist_countZ	info_dictc              
   #   s   t d|D ] tt fdd}tt fddp8d}|d}|d}tt fdd}|rl|s| d	| d
 | d|d| q||||tt fddd| d| |ddV  qd S )Nz<tr[^<]*>((?:(?!</tr>)[\w\W])+)c                      s   t d dd S )Nzd-inline-flex flex-columnz <spanr   r   	partition tdr   ?/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/monstercat.py<lambda>$       z.MonstercatIE._extract_tracks.<locals>.<lambda>c                      s
   t d S )Nz btn-play cursor-pointer mr-small)r   r   r   r   r   r   %   r    zdata-track-idzdata-release-idc                      s
   t d S )Nz	py-xsmallr   r   r   r   r   r   )   r   zSkipping track z, ID(s) not foundzrelease_id=z
 track_id=c                      s
   t d S )Nzd-block fs-xxsmallr!   r   r   r   r   r   3   r   z'https://www.monstercat.com/api/release/z/track-stream/Zmp3)r   tracktrack_numberZartistr   r   ext)	refindallr   r   r   getr
   Zreport_warningZwrite_debug)selftable
album_metar   idsZtrack_idZ
release_idr#   r   r   r   _extract_tracks!   s*    


zMonstercatIE._extract_tracksc                    s   |  |}| || t fddp(d}t fdd}t dd hdththf}||d| dt fd	d|d
}| j| ||fd|i|S )Nc                      s
   t d S )Nztable table-smallr!   r   htmlr   r   r   =   r   z,MonstercatIE._real_extract.<locals>.<lambda>r    c                      s   t d d S )Nh1r   )r	   r   r-   r   r   r   ?   r   c                 S   s   t d| dS )Nz1font-italic mb-medium d-tablet-none d-phone-blockz	Released r   r-   r   r   r   r   @   s   r   z#https://www.monstercat.com/release/z/coverc                      s
   t d S )Nz5h-normal text-uppercase mb-desktop-medium mb-smallishr!   r   r-   r   r   r   H   r   )r   r   r   r   r   Zplaylist_id)Z	_match_idZ_download_webpager   r   r   r   Zplaylist_resultr,   )r(   r   Zurl_idZtracklist_tabler   dater*   r   r-   r   _real_extract9   s0    
  

	
zMonstercatIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_TESTSr,   r1   r   r   r   r   r      s   r   )r%   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   <module>   s   0