
    yf$                     Z    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  G d de      Zy)    N   )InfoExtractor   )	ExtractorErrordetermine_extextract_attributesget_element_by_class get_element_text_and_html_by_tagparse_durationtraverse_objtry_callurl_or_nonec                   R   e 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d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(dd,dd/dd0d1d2d	d3d-dd	d.d(dd3dd/dd4d5d6d	d7d-dd	d.d(dd7dd/dd8d9d:d	d;d-dd	d.d(dd;d#d/dgd%gZd< Zy=)>NekoHackerIEz<https?://(?:www\.)?nekohacker\.com/(?P<id>(?!free-dl)[\w-]+)z!https://nekohacker.com/nekoverse/	nekoverse	Nekoverse)idtitlezBhttps://nekohacker.com/wp-content/uploads/2022/11/01-Spaceship.mp3 44223701ebedba0467ebda4cc07fb3aa1712mp3	SpaceshipzQhttps://nekohacker.com/wp-content/uploads/2022/11/Nekoverse_Artwork-1024x1024.jpgnone20221101Neko Hackerr   g     `h@)r   extr   	thumbnailvcodecacodecrelease_datealbumartisttracktrack_numberduration)urlmd5	info_dictzDhttps://nekohacker.com/wp-content/uploads/2022/11/02-City-Runner.mp3 8f853c71719389d32bbbd3f1a87b3f081713zCity Runnerr   g     b@zDhttps://nekohacker.com/wp-content/uploads/2022/11/03-Nature-Talk.mp3 5a8a8ae852720cee4c0ac95c7d1a74501714zNature Talk   g     e@zFhttps://nekohacker.com/wp-content/uploads/2022/11/04-Crystal-World.mp3 d8e59a48061764e50d92386a294abd501715zCrystal World   g     h@)r&   r(   playlistzhttps://nekohacker.com/susume/susumeu!   進め！むじなカンパニーu   https://nekohacker.com/wp-content/uploads/2021/01/進め！むじなカンパニー-feat.-六科なじむ-CV_-日高里菜-割戶真友-CV_-金元寿子-軽井沢ユキ-CV_-上坂すみれ-出稼ぎガルシア-CV_-金子彩花-.mp3 fb13f008aa81f26ba48f91fd2d6186ce711z$md5:1a5fcbc96ca3c3265b1c6f9f79f30fd0uE   https://nekohacker.com/wp-content/uploads/2021/01/OP表-1024x1024.png20210115)r   r   r   r   r   r   r    r!   r"   r#   r$   ut   https://nekohacker.com/wp-content/uploads/2021/01/むじな-de-なじむ-feat.-六科なじむ-CV_-日高里菜-.mp3 028803f70241df512b7764e73396fdd1709u@   むじな de なじむ feat. 六科なじむ (CV: 日高里菜 )ud   https://nekohacker.com/wp-content/uploads/2021/01/進め！むじなカンパニー-instrumental.mp3 adde9e9a16e1da5e602b579c247d0fb9710u0   進め！むじなカンパニー (instrumental)uY   https://nekohacker.com/wp-content/uploads/2021/01/むじな-de-なじむ-instrumental.mp3 ebb0443039cf5f9ff7fd557ed9b23599712u%   むじな de なじむ (instrumental)c                   
 | j                  |      }| j                  ||      
t        d
      }|swt        
fd      xs d}t	        t        |      j                  d            }|st        d      t        j                  d|      rt        dd	      | j                  |d
      S g }t        t        j                  d|      d      D ]i  \  }}t        t        |      dt        hfdt        hfdddddt        hfdd hdfdt        hfd	      }	|j!                  i |	|dd|	d   dk(  rdnd d       k | j#                  ||t        |d            S )Nr1   c                  "    t        d       d   S )Niframer   )r
   )webpages   =/usr/lib/python3/dist-packages/yt_dlp/extractor/nekohacker.py<lambda>z,NekoHackerIE._real_extract.<locals>.<lambda>   s    &FxQX&YZ[&\      srcz%No playlist or embed found in webpagez https?://(?:\w+\.)?spotify\.com/z Spotify embeds are not supportedT)expectedGenericz(<li[^>]+data-audiopath[^>]+>)r   zdata-audiopathzdata-trackidzdata-tracktitlezdata-albumtitlezdata-tracktimezdata-releasedatec                 N    t        j                  d| j                  dd            S )Nz\d{8}.rC   )rematchreplace)xs    r@   rA   z,NekoHackerIE._real_extract.<locals>.<lambda>   s!    STS\S\]`bdSe@f rB   r   zdata-albumart)	r&   r   r   r   r#   r!   r%   r    r   r   r   r   r   )r$   r"   r   r   )r   r!   )	_match_id_download_webpager	   r   r   r   getr   rI   rJ   
url_result	enumeratefindallr   r   r   appendplaylist_result)selfr&   playlist_idr1   r>   
iframe_srcentriesr$   r#   entryr?   s             @r@   _real_extractzNekoHackerIE._real_extract   s}   nnS)((k:'
G<\]cacF$%7%?%C%CE%JKJ$%LMM=zJ$%GRVWW??3	22#,RZZ8Y[c-dfg#h 	L% !3E!:(;-8(=/:$***-/?@!36f5gij k-}=
= 
E NN  ,' #(<5#8%d 	( ##G[,wP\:]^^rB   N)__name__
__module____qualname__
_VALID_URL_TESTSrZ    rB   r@   r   r      s   PJ2 
 \9  (!t$#$.(+($% %& ^9  *!t$#$.(+*$% %& ^9  *!t$#$.(+*$% %& `9  ,!t$#$.(+,$% %oI
Pb 08
 B9 C!h$#$.@+C$%$ N9 _!h$#$.@+_$%$ ~9 O!h$#$.@+O$%$ s9 D!h$#$.@+D$%iE
La\F|$_rB   r   )rI   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r`   rB   r@   <module>rc      s*    	 !
 
 
D_= D_rB   