
    VGhq%                         d dl Z d dlZd dl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  G d de      Z G d	 d
e      Z G d de      Zy)    N   )InfoExtractor)VideaIE   )InAdvancePagedListint_or_nonestr_or_nonetraverse_objtry_callupdate_url_queryc                       e Zd ZdgZy)XimalayaBaseIECNN)__name__
__module____qualname___GEO_COUNTRIES     b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/ximalaya.pyr   r      s	    VNr   r   c                       e Zd ZdZdZdZdddddd	d
ddddddddddgdgdeedddddddd	d
ddddddddddgdgdeedddddgZed        Z	ed        Z
d Zy)
XimalayaIEximalayau   喜马拉雅FMzKhttps?://(?:www\.|m\.)?ximalaya\.com/(?:(?P<uid>\d+)/)?sound/(?P<id>[0-9]+)z'http://www.ximalaya.com/sound/47740352/47740352m4au   小彬彬爱听书61425525z'http://www.ximalaya.com/zhubo/61425525/u7   261.唐诗三百首.卷八.送孟浩然之广陵.李白u   contains:《送孟浩然之广陵》
作者：李白
故人西辞黄鹤楼，烟花三月下扬州。
孤帆远影碧空尽，惟见长江天际流。zre:^https?://.*\.jpg	cover_urlnameurlcover_url_142   )r   r    widthheightu   其他]   )idextuploaderuploader_iduploader_urltitledescription	thumbnail
thumbnails
categoriesduration
view_count
like_count)r    	info_dictz.http://m.ximalaya.com/61425525/sound/47740352/u   人文z(https://www.ximalaya.com/sound/562111701T)r    only_matchingc                 H   dd}|D ]V  }t        t        d|z  dz         dz        }t        |dz  t        |      z        }||   z  |j                  ||   d      }X | j	                  d      }dj                  fd|D              }|j                  d      sd|z   }|S )	N zDabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\:._-1234567890   iOu  i   *c              3   \   K   | ]#  }|j                         st        |          % y w)N)	isdecimalint).0partcgstrs     r   	<genexpr>z/XimalayaIE._decrypt_filename.<locals>.<genexpr>e   s#     RAQ5T+Rs   ,,/)floatr;   lenreplacesplitjoin
startswith)file_idseedkey_rpartsfilenamer>   s          @r   _decrypt_filenamezXimalayaIE._decrypt_filename[   s    U 	*AS4Z%/0589DD5L3s8+,ASVOE++c!fb)C		*
 c"77RRR""3'X~Hr   c                     t        j                  t        j                  |       d      j	                  d      }|d   |d   |d   fS )Nxkt3a41psizxrh9l-r   r      )r   rc4base64	b64decoderD   )encrypted_paramsparamss     r   _decrypt_url_paramszXimalayaIE._decrypt_url_paramsj   sJ    -.0BDDIE#J 	 ay&)VAY..r   c                    |j                  d      rdnd}| j                  |      }| j                  | d| d|dd      g }j                  d      r@t	        t        j
                               }| j                  | d| d	| |d
ddd|d      }| j                  |d   |d         }| j                  |d         \  }}	}
t        |d    d|d    | ||	|
|d   |d   d      }d|ddd|v rT| j                  d| j                                 j                  ddd t        |d!t        hfd"t        hfd#             n,j                  t        |d$t        hfdt        hfd#             t        fd%      d&<   |j                         |j!                  d'D cg c]#  \  }}j                  |      r| d(|   |dd)% c}}       g }D ]<  }|j                  d*      s||   d+}|d,k(  r
d-|d.<   d-|d/<   |j                  |       > j                  d0      }t        fd1      }|j                  d2      t#        |      |r| d3| d	nd d4   ||t%        t'        d j                  d5      g            j                  d      j                  d6      j                  d7      |d8S c c}}w )9Nhttpshttpz://m.ximalaya.com/tracks/z.jsonzDownloading info jsonzUnable to download info fileis_paidz&://mpay.ximalaya.com/mobile/track/pay/r@   zDownloading VIP info jsonz Unable to download VIP info filepctrue)device	isBackendrJ   )queryfileIdrH   epdomainz
/download/
apiVersionbuyKeyr0   )signtoken	timestampbuy_keyr0   vipnone)	format_idr    vcodec	_preview_z<This tracks requires a VIP account. Using a sample instead. Samplei)format_note
preferencesampleLengthsampleDuration)filesizer0   totalLengthc                  &     d   dz   d   z  dz  S )Nru      r0   i   r   )fmts   r   <lambda>z*XimalayaIE._real_extract.<locals>.<lambda>   s    #j/A*=J*ORV*V r   abr))   play_path_32)@   play_path_64k)rm   r    r{   rn   r   r   r!   r"   r#   r$   uidc                  N     d   j                  dd      j                  dd      S )Nintroz


 
z
)rC   )
audio_infos   r   rz   z*XimalayaIE._real_extract.<locals>.<lambda>   s'    Jw'//FNNvW[\ r   nicknamez://www.ximalaya.com/zhubo/r+   category_name
play_countfavorites_count)r&   r(   r)   r*   r+   r.   r,   r/   r0   r1   r2   formats)rF   	_match_id_download_jsongetr;   timerN   rX   r   report_warning_login_hintupdater
   r   r   appendextendr	   listfilter)selfr    schemeaudio_idr   tsvip_inforM   rg   rh   ri   vip_urlbpsr   r.   r-   audio_uploader_idaudio_descriptionr   ry   s                     @@r   _real_extractzXimalayaIE._real_extractq   s\   NN73>>#&((h/z?#%CE
 >>)$TYY[!B**(@
!B4P57Y!%FD + FH --hx.@(6BRSH%)%=%=htn%M"D%&H%&j,1G0H
S "!*'1 ( 4VG # C
 g%##RSWScScSeRfgi

#+"% #8%3k]$C%5}$E.   

<!. >!+k] ;3  
 ""VWCJNN3
 E[
 c1
WXHY	  5a=	
 [ 	\ 
 	-A||K(%&z!}=	'),Ig&*-Ih'!!),	- 'NN51$\^ "z2&'89Yjvh&@AR@SSTUpt($,vdZ^^O-L,MNO"z2$..6$..):;
 	
-[s   '(J=
N)r   r   r   IE_NAMEIE_DESC
_VALID_URLr;   _TESTSstaticmethodrN   rX   r   r   r   r   r   r      s   GG_J = 0) IR  {4 !,6
 !06!$"%	  (j!!1	
< D 0) IR  {4 !,6
 !06!$"%	  (j!!1	
> >!	
w@FD   / /V
r   r   c                   N    e Zd ZdZdZdZdddddd	d
ddddd	gZd Zd Zd Z	y)XimalayaAlbumIEzximalaya:albumu   喜马拉雅FM 专辑zBhttps?://(?:www\.|m\.)?ximalaya\.com/(?:\d+/)?album/(?P<id>[0-9]+)z/http://www.ximalaya.com/61425525/album/5534601/u   唐诗三百首（含赏析）5534601)r+   r&   iC  )r    r3   playlist_mincountz&https://www.ximalaya.com/album/6912905u'   埃克哈特《修炼当下的力量》6912905)   c                       j                  |       j                  d      t        j                  d   d   z        }t	         fd|d         }t        dt              } j                  ||      S )Nr   trackTotalCountpageSizec                 \    j                  | rj                  | dz               S       S )Nr   )_get_entries_fetch_page)idx
first_pageplaylist_idr   s    r   rz   z/XimalayaAlbumIE._real_extract.<locals>.<lambda>   s.    ))TW$*:*:;a*Ph ]gh r   )tracksr   
albumTitle)expected_type)r   r   mathceilr   r
   strplaylist_result)r   r    
page_countentriesr+   r   r   s   `    @@r   r   zXimalayaAlbumIE._real_extract   s    nnS)%%k15
YYz*;<z*?UUV
$h
:.0 Z)DTWX##G[%@@r   c                 >    | j                  d|d| ||d      d   S )Nz8https://www.ximalaya.com/revision/album/v1/getTracksListzDownloading tracks list page )albumIdpageNum)notera   data)r   )r   r   page_idxs      r   r   zXimalayaAlbumIE._fetch_page   sA    ""F =hZH)h? # A BHI 	Ir   c           	   #      K   |d   D ]O  }| j                  | j                  d|d          t        |j                  d      |j                  d             Q y w)Nr   z//www.ximalaya.comr    trackIdr+   )
url_result_proto_relative_urlr   r   )r   	page_dataes      r   r   zXimalayaAlbumIE._get_entries   s]     8$ 	>A//((+=ahZ)HIAEE),aeeGn> >	>s   AAN)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s[    G%GVJ@5
 ! 8>
  F AI>r   r   )rT   r   r   commonr   videar   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   <module>r      sE       !  ] r
 r
j,>n ,>r   