Ë
    š„j$K  ã                   ó  — d dl Z d dlZd dlZd dl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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 G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    Né   )ÚInfoExtractoré   )ÚExtractorErrorÚOnDemandPagedListÚ
clean_htmlÚint_or_noneÚjoin_nonemptyÚ
js_to_jsonÚstr_or_noneÚstrip_jsonpÚtraverse_objÚurl_or_noneÚurljoinc                   óR   — e Zd Zd	d„Zd„ Zd„ Zed„ «       Zed„ «       Z	d
d„Z
i fd„Zy)ÚQQMusicBaseIENc                 óX   — t        | j                  d«      j                  |«      d|«      S )Nzhttps://y.qq.comÚvalue)ÚgetattrÚ_get_cookiesÚget)ÚselfÚkeyÚdefaults      úO/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/qqmusic.pyÚ_get_cookiezQQMusicBaseIE._get_cookie   s)   € Ü�t×(Ñ(Ð);Ó<×@Ñ@ÀÓEÀwÐPWÓXÐXó    c                 óf   — d}| j                  dd«      D ]  }||dz  t        |«      z   z  }Œ |dz  S )Ni  Úqqmusic_keyÚ é   éÿÿÿ)r   Úord)r   ÚnÚcs      r   Ú	_get_g_tkzQQMusicBaseIE._get_g_tk   sD   € ØˆØ×!Ñ! -°Ó4ò 	#ˆAØ�!�q‘&œC ›FÑ"Ñ"‰Að	#à�:‰~Ðr   c                 ó>   — t        | j                  d«      «      xs dS )NÚuinr   )r	   r   ©r   s    r   Ú_get_uinzQQMusicBaseIE._get_uin!   s   € Ü˜4×+Ñ+¨EÓ2Ó3Ò8°qÐ8r   c                 óZ   — t        | j                  «       xr | j                  d«      «      S )NÚ	fqm_pvqid)Úboolr*   r   r)   s    r   Úis_logged_inzQQMusicBaseIE.is_logged_in$   s#   € ä�D—M‘M“OÒE¨×(8Ñ(8¸Ó(EÓFÐFr   c                  ó¦   — t        t        j                  «       dz  «      dz  } t        t        t        j                  «       dz  «      | z  dz  «      S )Niè  r"   g    _ B)ÚintÚtimeÚroundÚrandom)Úcur_mss    r   Ú_m_r_get_ruinzQQMusicBaseIE._m_r_get_ruin*   sA   € ä”T—Y‘Y“[ 4Ñ'Ó(¨4Ñ/ˆÜ”5œŸ™›¨:Ñ5Ó6¸Ñ?À$ÑFÓGÐGr   c                 ó`   — | j                  |||¬«      }| j                  d|d|t        |¬«      S )N©Úfatalzwindow\.__INITIAL_DATA__\s*=z	init data)Útransform_sourcer8   )Ú_download_webpageÚ_search_jsonr   )r   ÚurlÚmidr8   Úwebpages        r   Ú_download_init_dataz!QQMusicBaseIE._download_init_data/   sB   € Ø×(Ñ(¨¨c¸Ð(Ó?ˆØ× Ñ Ð!@À'Ø!,¨cÄJÐV[ð !ó ]ð 	]r   c                 ó¤   —  | j                   d|ft        j                  dddd| j                  «       dœi|¥d¬«      j	                  «       |d	œ|¤ŽS )
Nz%https://u.y.qq.com/cgi-bin/musicu.fcgÚcommr   é   Újson)ÚcvÚctÚformatr(   )ú,ú:)Ú
separators)ÚdataÚheaders)Ú_download_jsonrC   Údumpsr*   Úencode)r   Úreq_dictr=   rK   Úkwargss        r   Ú_make_fcu_reqzQQMusicBaseIE._make_fcu_req4   sy   € Ø"ˆt×"Ñ"Ø3°Sð	KÜ?C¿z¹zØØØØ$ØŸ=™=›?ñ	ðKð ðKð %ô@&÷ '-¡f£h¸ñ	Kð DJñ	Kð 		Kr   )N)T)Ú__name__Ú
__module__Ú__qualname__r   r&   r*   Úpropertyr.   Ústaticmethodr5   r?   rQ   © r   r   r   r      sO   „ óYòò9ð ñGó ðGð
 ñHó ðHó]ð
 46ô 
Kr   r   c                   ó  — e Zd ZdZdZdZdddddd	d
dddgdgddddœdœdddddddddgdgdddœ
ddœd d!d"d#dd$d%d&d'd(gg d)ddœ
d*œd+d,d-dd.d/d0d1dd2œd3d4id5d6œgZd7d8d7d9d:œd;d<d;d=d:œd>d?dd@dAdBœdCdDddEdFdBœdGdHdIdJdKdBœdLdMdIdJdNdBœdOœZdP„ ZyQ)RÚ	QQMusicIEÚqqmusicu   QQéŸ³ä¹�z:https?://y\.qq\.com/n/ryqq/songDetail/(?P<id>[0-9A-Za-z]+)z1https://y.qq.com/n/ryqq/songDetail/004Ti8rT003TaZÚ d7adc5c438d12e2cb648cca81593fd47Ú004Ti8rT003TaZÚmp3u'   æ°¸å¤œã�®ãƒ‘ãƒ¬ãƒ¼ãƒ‰ (æ°¸å¤œçš„æ¸¸è¡Œ)u    å¹»æƒ³é�Šåœ’éƒ· -Fantastic Park-Ú20111230i  u   ã‚±ãƒ¼ã‚­å§«ÚJUMAÚPopz$md5:b5261f3d595657ae561e9e6aee7eb7d9úre:^https?://.*\.jpg(?:$|[#?])zcount:1)ÚidÚextÚtitleÚalbumÚrelease_dateÚdurationÚcreatorsÚgenresÚdescriptionÚ	thumbnailÚ	subtitles)r<   Úmd5Ú	info_dictz1https://y.qq.com/n/ryqq/songDetail/004295Et37taLDÚ 5f1e6cea39e182857da7ffc5ef5e6bb8Ú004295Et37taLDu   å�¯æƒœæ²¡å¦‚æžœu!   æ–°åœ°ç�ƒ - äºº (Special Edition)Ú20150129i*  õ	   æž—ä¿Šæ�°z$md5:f568421ff618d2066e74b65a04149c4e©
rb   rc   rd   re   rf   rg   rh   ri   rj   rk   zpremium member only)r<   rm   rn   Úskipz)There is no mp3-320 version of this song.z1https://y.qq.com/n/ryqq/songDetail/004MsGEo3DdNxVÚ 028aaef1ae13d8a9f4861a92614887f9Ú004MsGEo3DdNxVu   å¦‚æžœu&   æ–°ä¼ åª’ç”µè§†è¿žç»­å‰§é‡‘æ›²ç³»åˆ—IIÚ20050626éÜ   u	   æ�Žå­£ç¾Žz$md5:fc711212aa623b28534954dc4bd67385)Únoter<   rm   rn   zlyrics not in .lrc formatz1https://y.qq.com/n/ryqq/songDetail/001JyApY11tIp6Ú001JyApY11tIp6zShadows Over TransylvaniaÚ19970225zDark Funeralz$md5:c9b20210587cbcd6836a1c597bab4525)rb   rc   rd   rf   Úcreatorrj   rk   Úskip_downloadTzno longer available)ry   r<   rn   Úparamsrt   ÚflacÚF000é<   )ÚnameÚprefixrc   Ú
preferenceÚapeÚA000é2   Ú320mp3ÚM800é(   i@  )r‚   rƒ   rc   r„   ÚabrÚ128mp3ÚM500é   é€   Ú96aacÚC400Úm4aé   é`   Ú48aacÚC200é0   )r€   r†   r‰   r�   r‘   r–   c                 ó8  ‡— | j                  |«      Š| j                  |‰d¬«      }| j                  ddd‰ddœdœi‰d	¬
«      d   d   d   }|d   d   }| j                  ddt        | j	                  «       «      ‰gt        | j                  «      z  dgt        | j                  «      z  t        | j                  «       «      dd| j                  j                  «       D �cg c]  }|d   › |› d|d   › �‘Œ c}dœdœddd‰idœdœ‰d| j                  «       ¬«      }t        |ddt        hf«      }|dk7  rt        d|xs d › �«      ‚g }t        |ddd!ˆfd"„f«      D ]±  }	t        |	d#t        hd$„ hf«      }
| j                  j                  |
«      xs i }|j                  d%«      }|j                  t        d&|	d'   «      ||t        |dd(|› �t         hf«      |j                  d)«      |j                  d*«      |j                  d«      d+d,œ«       Œ³ |s| j"                  s| j%                  «        t        |d-«      r| j'                  d.|d/   d   ›�«       t        |d/dd0d1„ hf«      }‰|d2œt        |d3t        hfd4d3t        ht(        fd5d6„ hfd7d8d%t        hfd9t        ht(        fd:t         hfd;œ«      ¥t        |d<d=t*        hfdd>d?d8d@t        hfddAd?d8d@t        ht,        fdBœfd¬C«      ¥}|r+dDdE|dFœgi|dG<   t/        |j                  dH«      |dI¬J«      |dH<   |S c c}w )KNFr7   Úinfozmusic.pf_song_detail_svrÚget_song_detail_yqqr   )Úsong_midÚ	song_type©ÚmoduleÚmethodÚparamzDownloading song info©ry   rJ   Ú
track_infoÚfileÚ	media_midzvkey.GetVkeyServerÚ
CgiGetVkeyr   Ú20rƒ   ú.rc   )ÚguidÚsongmidÚsongtyper(   Ú	loginflagÚplatformÚfilenamez!music.musichallSong.PlayLyricInfoÚGetPlayLyricInfoÚsongMID)Úreq_1Úreq_2zDownloading formats and lyric)ry   rK   r°   Úcodez+Failed to download format info, error code ÚunknownÚ
midurlinfoc                 ó"   •— |d   ‰k(  xr |d   S )Nr©   ÚpurlrW   )Ú_Úvr=   s     €r   ú<lambda>z)QQMusicIE._real_extract.<locals>.<lambda>·   s   ø€ ¸¸)¹ÈÑ8KÒ8YÐPQÐRXÑPY€ r   r­   c                 ó   — | d d S )Né   rW   ©Úxs    r   r¹   z)QQMusicIE._real_extract.<locals>.<lambda>¹   s   € ÐQRÐSUÐTUÐQV€ r   r‚   z https://dl.stream.qqmusic.qq.comr¶   Úsize_r„   r‹   Únone)r<   rF   Ú	format_idÚfilesizeÚqualityr‹   rc   Úvcodec)r±   r²   z Failed to download lyric, error r±   Úlyricc                 óJ   — t        j                  | «      j                  d«      S )Nzutf-8)Úbase64Ú	b64decodeÚdecoder¼   s    r   r¹   z)QQMusicIE._real_extract.<locals>.<lambda>Ì   s   € Ìv×O_ÑO_Ð`aÓOb×OiÑOiÐjqÓOr€ r   ©rb   Úformatsrd   re   Útime_publicc                 ó.   — | j                  dd«      xs d S )Nú-r    )Úreplacer¼   s    r   r¹   z)QQMusicIE._real_extract.<locals>.<lambda>Ô   s   € ¸1¿9¹9ÀSÈ"Ó;MÒ;UÐQU€ r   Úsinger.ÚsubtitleÚinterval)rd   re   rf   rh   Ú	alt_titlerg   ÚdetailÚpicurlÚintroÚcontentr   Úgenre)rk   rj   ri   )Úget_allÚoriginÚlrc)rc   rJ   rl   rj   ú
©Údelim)Ú	_match_idr?   rQ   Ústrr5   ÚlenÚ_FORMATSr*   ÚvaluesÚgeo_verification_headersr   r0   r   r   Úappendr   r	   r.   Úraise_login_requiredÚreport_warningÚfilterr   Úallr
   )r   r<   Ú	init_dataÚ	info_datar¤   ÚfrJ   r²   rÊ   Ú
media_infoÚ
format_keyÚformat_inforÀ   Úlrc_contentrn   r=   s                  @r   Ú_real_extractzQQMusicIE._real_extractŽ   sØ  ø€ Ø�n‰n˜SÓ!ˆà×,Ñ,¨S°#¸UÐ,ÓCˆ	Ø×&Ñ&¨Ø0Ø+àØññ1
ð (ð Ð-ð 'ó /ð 06ñ7ð 8>ñ?ð @LñMˆ	ð ˜fÑ% kÑ2ˆ	à×!Ñ!à.Ø&ä × 2Ñ 2Ó 4Ó5Ø #˜u¤s¨4¯=©=Ó'9Ñ9Ø!" ¤c¨$¯-©-Ó&8Ñ 8Ü˜tŸ}™}›Ó/Ø!"Ø $ØQU×Q^ÑQ^×QeÑQeÓQgÖ hÈA A h¡K =°°¸1¸Q¸u¹X¸JÒ!GÒ hññð >Ø,Ø# SÐ)ññ#
ð& Ð4¸d×>[Ñ>[Ó>]ð' "ó _ˆô* ˜D 7¨F´S°EÐ":Ó;ˆØ�1Š9Ü Ð#NÈtÒO`ÐW`ÐNaÐ!bÓcÐcØˆÜ& tØ�V˜\Ó+Yð.[ó 
ò 	ˆJô & j°:Ä¸uÁÐFWÐ2XÓYˆJØŸ-™-×+Ñ+¨JÓ7Ò=¸2ˆKØ#Ÿ™¨Ó/ˆIØ�N‰NÜÐAÀ:ÈfÑCUÓVØ#Ø&Ü(¨°V¸uÀYÀKÐ=PÔS^ÐR_Ð4`ÓaØ&Ÿ?™?¨<Ó8Ø"—‘ uÓ-Ø"—‘ uÓ-Ø ñ	õ 	ð	ñ" ˜t×0Ò0Ø×%Ñ%Ô'ä˜Ð/Ô0Ø×ÑÐ"BÀ4ÈÁ=ÐQWÑCXÐB[Ð \Ô]Ü" 4¨'°6¸7ÑErÐDsÐ)tÓuˆð Øñ
ô ˜9Ø!¤C 5Ð)Ø! 7¬S¨E´6Ð:Ø!.Ñ1UÐ0VÐ WØ% s¨F´S°EÐ:Ø(¬3¨%´Ð8Ø'¬+¨Ð7ñ'ó ð
ô ˜9 xØ&¬¨Ð6Ø &¨°¸CÀÌ3È%ÐPØ! 7¨I°s¸GÄcÀUÌCÐPñ2ð 'ð ô	ð
ˆ	ñ" Ø&.¸ÈÑ1TÐ0UÐ%VˆI�kÑ"Ü'4°Y·]±]À=Ó5QÐS^ÐfjÔ'kˆI�mÑ$ØÐùòu !is   Ã LN)	rR   rS   rT   ÚIE_NAMEÚIE_DESCÚ
_VALID_URLÚ_TESTSrá   rð   rW   r   r   rY   rY   A   s]  „ Ø€GØ€GØN€JàBØ1à"ØØ>Ø7Ø&ØØ'¨Ð0Ø�gØAØ:Ø"ñ
ñð" CØ1à"ØØ&Ø8Ø&ØØ$˜Ø�gØAØ:ñ
ð &ñð" <ØBØ1à"ØØØ=Ø&ØØ$˜ØØAØ:ñ
ñ	ð" ,ØBà"ØØ0Ø&Ø%ØAØ:ñ
ð # DÐ)Ø%ñða>€FðB  ¨6¸&ÐPRÑSØ¨&¸ÈbÑQØ!¨V¸EÐQSÐ\_Ñ`Ø!¨V¸EÐQSÐ\_Ñ`Ø ¨F¸5ÐPRÐ[]Ñ^Ø ¨F¸5ÐPRÐ[]Ñ^ñ€HóTr   rY   c                   óv   — 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ddddddgdgdddœ
igdœgZdZd„ Zd„ Z	y) ÚQQMusicSingerIEzqqmusic:singeru   QQéŸ³ä¹� - æ­Œæ‰‹z6https?://y\.qq\.com/n/ryqq/singer/(?P<id>[0-9A-Za-z]+)z-https://y.qq.com/n/ryqq/singer/001BLpXF2DyJe2Ú001BLpXF2DyJe2rr   z$md5:10624ce73b06fa400bc846f59b0305fara   )rb   rd   rj   rk   éd   )r<   rn   Úplaylist_mincountz-https://y.qq.com/n/ryqq/singer/000Q00f213YzNVÚ000Q00f213YzNVu	   æ¡ƒå‡ OvOu5   å°�ç ´ç«™å°�å”±è§�~å¸Œæœ›å¤§å®¶å–œæ¬¢å�¬æˆ‘å”±æ­Œ~ï¼�é   rn   Ú0016cvsy02mmClr]   u   ç¾¤é�’u   æ¡ƒå‡ 2021å¹´ç¿»å”±é›†Ú20210913éø   r`   z$md5:4296005a04edcb5cdbe0889d5055a7aers   )r<   rn   Úplaylist_countÚplaylistr‡   c           
   #   ó–   ‡ K  — ‰ j                  dddd|||z  |dœdœi|d|› �¬«      }t        |dd	d
dˆ fd„hf«      E d {  –—†  y 7 Œ­w)Nr°   zmusic.web_singer_info_svrÚget_singer_detail_infor!   )ÚsortÚ	singermidÚsinÚnumr�   zDownloading page r¡   rJ   Úsonglist.c                 ód   •— ‰j                  d| d   › �t        | d   | j                  d«      «      S )Nú#https://y.qq.com/n/ryqq/songDetail/r=   rd   )Ú
url_resultrY   r   )r½   r   s    €r   r¹   z-QQMusicSingerIE._fetch_page.<locals>.<lambda>  s:   ø€ ÐTX×TcÑTcØ1°!°E±(°Ð<¼iÈÈ5ÉÐST×SXÑSXÐY`ÓSaóUc€ r   )rQ   r   )r   r=   Ú	page_sizeÚpage_numrJ   s   `    r   Ú_fetch_pagezQQMusicSingerIE._fetch_page  sˆ   øè ø€ Ø×!Ñ! 7Ø1Ø.àØ Ø )Ñ+Ø ñ	ñ-ð #ð Ð.¨x¨jÐ9ð "ó ;ˆô    w°¸
ÀCó Kcð Jdð 'eó f÷ 	fò 	fús   ƒ>A	ÁAÁA	c                 ó>  — | j                  |«      }| j                  ||d¬«      } | j                  t        t	        j
                  | j                  || j                  «      | j                  «      |fi t        |dddt        hfddt        hfddt        hfd	œf«      ¤ŽS )
NFr7   ÚsingerDetailÚ
basic_infor‚   Úex_infoÚdescÚpic)rd   rj   rk   )rÞ   r?   Úplaylist_resultr   Ú	functoolsÚpartialr  Ú
_PAGE_SIZEr   rß   r   )r   r<   r=   ré   s       r   rð   zQQMusicSingerIE._real_extract  s¨   € Ø�n‰n˜SÓ!ˆØ×,Ñ,¨S°#¸UÐ,ÓCˆ	à#ˆt×#Ñ#Üœi×/Ñ/°×0@Ñ0@À#ÀtÇÁÓWÐY]×YhÑYhÓiØñä 	¨NØ&¨´°Ð6Ø )¨6´C°5Ð9Ø# U¬[¨MÐ:ñ=ð ,ó ñð 	r   N)
rR   rS   rT   rñ   rò   ró   rô   r  r  rð   rW   r   r   rö   rö   å   s�   „ Ø€GØ!€GØJ€Jà>à"Ø ØAØ:ñ	
ð !ñ	ð ?à"Ø ØRØ:ñ	
ð àØ&ØØ!Ø1Ø *ØØ(˜MØ ˜'ØEØ>ñð
ð ñð €FðD €Jòfó
r   rö   c                   ó   — e Zd Zd„ Zy)ÚQQPlaylistBaseIEc           	   #   ó®   K  — t        ||«      D ]B  }|j                  d«      }|sŒ| j                  d|› �t        ||j                  d«      «      –— ŒD y ­w)Nr©   r	  Úsongname)r   r   r
  rY   )r   Ú	info_jsonÚpathÚsongr›   s        r   Ú_extract_entriesz!QQPlaylistBaseIE._extract_entries(  s[   è ø€ Ü  ¨DÓ1ò 	;ˆDØ—x‘x 	Ó*ˆHÙØØ—/‘/Ø5°h°ZÐ@Ü˜8 T§X¡X¨jÓ%9ó;ó ;ñ		;ùs   ‚AAN)rR   rS   rT   r  rW   r   r   r  r  '  s   „ ó;r   r  c                   óF   — e Zd ZdZdZdZdddddœd	d
œdddddœdd
œgZd„ Zy)ÚQQMusicAlbumIEzqqmusic:albumu   QQéŸ³ä¹� - ä¸“è¾‘z;https?://y\.qq\.com/n/ryqq/albumDetail/(?P<id>[0-9A-Za-z]+)z2https://y.qq.com/n/ryqq/albumDetail/000gXCTb2AhRR1Ú000gXCTb2AhRR1u   æˆ‘ä»¬éƒ½æ˜¯è¿™æ ·é•¿å¤§çš„z$md5:179c5dce203a5931970d306aa9607ea6©rb   rd   rj   r»   ©r<   rn   rÿ   z2https://y.qq.com/n/ryqq/albumDetail/002Y5a3b3AlCu3Ú002Y5a3b3AlCu3u   ê·¸ë¦¬ê³ â€¦z$md5:a48823755615508a95080e81b51ba729é   c           
      óð   — | j                  |«      }| j                  d|d|ddœ¬«      d   }| j                  |d«      } | j                  ||fi t	        |dt
        hfd	t
        j                  hfd
œ«      ¤ŽS )Nz5http://i.y.qq.com/v8/fcg-bin/fcg_v8_album_info_cp.fcgzDownload album pagerC   )ÚalbummidrF   )ÚqueryrJ   )Úlist.r‚   r  ©rd   rj   )rÞ   rL   r  r  r   rß   Ústrip)r   r<   r=   Ú
album_jsonÚentriess        r   rð   zQQMusicAlbumIE._real_extractI  s˜   € Ø�n‰n˜SÓ!ˆà×(Ñ(ØCØÐ&Ø"¨fÑ5ð )ó 7ð 8>ñ?ˆ
ð
 ×'Ñ'¨
°MÓBˆà#ˆt×#Ñ# G¨Sñ ´LÀØœs˜e�_Ø"¤S§Y¡Y KÐ0ñN
ó 5ñ ð 	r   N©rR   rS   rT   rñ   rò   ró   rô   rð   rW   r   r   r!  r!  2  sY   „ Ø€GØ!€GØO€Jð Dà"Ø2ØAñ
ð
 ñð Dà"Ø#ØAñ
ð
 ñð€Fó$r   r!  c                   óX   — 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ddœdd
œgZd„ Zy)ÚQQMusicToplistIEzqqmusic:toplistu   QQéŸ³ä¹� - æŽ’è¡Œæ¦œz1https?://y\.qq\.com/n/ryqq/toplist/(?P<id>[0-9]+)z#https://y.qq.com/n/ryqq/toplist/123Ú123u*   re:ç¾Žå›½çƒ­é—¨éŸ³ä¹�æ¦œ \d{4}-\d{2}-\d{2}u*   ç¾Žå›½çƒ­é—¨éŸ³ä¹�æ¦œï¼Œæ¯�å‘¨ä¸€æ›´æ–°ã€‚r#  é_   r$  z!https://y.qq.com/n/ryqq/toplist/3Ú3u&   re:å·…å³°æ¦œÂ·æ¬§ç¾Ž \d{4}-\d{2}-\d{2}z$md5:4def03b60d3644be4c9a36f21fd33857rø   z#https://y.qq.com/n/ryqq/toplist/106Ú106u"   re:éŸ©å›½Mnetæ¦œ \d{4}-\d{2}-\d{2}z$md5:cb84b325215e1d21708c615cac82a6e7r‡   c           
      óÚ   — | j                  |«      }| j                  d|dd|ddœ¬«      }| j                  | j                  |d«      |t	        t        |d«      d	d
iŽt        |d«      ¬«      S )Nz2http://i.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcgzDownload toplist pageÚtoplistrC   )ÚtypeÚtopidrF   )ry   r)  )r  .rJ   )))ÚtopinfoÚListNameÚupdate_timeNrÝ   ú )r:  r™   )Úplaylist_titleÚplaylist_description)rÞ   rL   r  r  r
   r   )r   r<   Úlist_idÚtoplist_jsons       r   rð   zQQMusicToplistIE._real_extractx  s’   € Ø—.‘. Ó%ˆà×*Ñ*Ø@À'Ø(Ø$¨wÀ&ÑIð +ó Kˆð
 ×#Ñ#Ø×!Ñ! ,Ð0IÓJÈGÜ(¬,ØÐNó+Pð \ØWZñ\ä!-¨lÐ<OÓ!Pð	 $ó Rð 	Rr   Nr/  rW   r   r   r1  r1  Y  su   „ Ø€GØ$€GØE€Jð 5àØBØGñ
ð
 ñð 3àØ>ØAñ
ð
 ñð 5àØ:ØAñ
ð
 ñð!€Fó4Rr   r1  c                   ó4   — e Zd ZdZdZdZdddddœd	d
œgZd„ Zy)ÚQQMusicPlaylistIEzqqmusic:playlistu   QQéŸ³ä¹� - æ­Œå�•z2https?://y\.qq\.com/n/ryqq/playlist/(?P<id>[0-9]+)z+https://y.qq.com/n/ryqq/playlist/1374105607Ú
1374105607u   æ˜“å…¥äººå¿ƒçš„å�Žè¯­æ°‘è°£uí   æ°‘è°£çš„æ­Œæ›²æ˜“äºŽä¼ å”±ã€�ã€�æ­Œè¯�æœ—æœ—ä¼¤å�£ã€�æ—‹å¾‹ç®€å�•æ¸©é¦¨ã€‚å±žäºŽé‚£ç§�æ‰�å…¥è€³å­”ã€‚å�´ä¸Šå¿ƒå¤´çš„æ„Ÿè§‰ã€‚æ²¡æœ‰å¤ªå¤šçš„å¤�æ�‚æƒ…ç»ªã€‚ç®€å�•è€Œç›´æŽ¥åœ°è¡¨è¾¾ä¹�è€…çš„æƒ…ç»ªï¼Œå°±æ˜¯è¿™æ ·çš„ç®€å�•æ‰�æ˜“å…¥äººå¿ƒã€‚r#  r“   r$  c                 óŽ  — | j                  |«      }| j                  d|ddddd|dœt        d|i¬«      }t        |j	                  dg «      «      s3t        t        d	t        d
d|¬«      |j	                  d«      d¬«      «      ‚| j                  |d«      } | j                  ||fi t        |dddt        hfdt        hfdœf«      ¤ŽS )NzDhttp://i.y.qq.com/qzone-music/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcgzDownload list pager   r   )r8  rC   Úutf8ÚonlysongÚdisstidÚReferer)r)  r9   rK   ÚcdlistzUnable to get playlist infor²   Úsubcode)Ú	from_dictÚmsgz: rÜ   )rJ  r   r  .Údissnamer  r+  )rÞ   rL   r   rà   r   r   r
   r  r  r   rß   r   )r   r<   r@  Ú	list_jsonr.  s        r   rð   zQQMusicPlaylistIE._real_extract–  sï   € Ø—.‘. Ó%ˆà×'Ñ'ØRØÐ)Ø a°ÀÈgÑVÜ(°9¸cÐ2Bð	 (ó Dˆ	ô
 �9—=‘= ¨2Ó.Ô/Ü ¤Ø-Ü˜f i¸9ÔEØ—‘˜eÓ$¨Dô"2ó 3ð 3ð
 ×'Ñ'¨	Ð3QÓRˆà#ˆt×#Ñ# G¨Wñ ¼ÀYÐQYÐ[\Ø ¤3 %Ð(Ø"¤Z LÐ1ñ_
ð Qó 9ñ ð 	r   Nr/  rW   r   r   rC  rC  ‡  s=   „ Ø €GØ!€GØF€Jð =àØ2ð Kñ
ð
 ñð €Fór   rC  c                   óH   — e Zd ZdZdZdZdddddd	d
dddgedœ
dœgZd„ Zd„ Z	y)ÚQQMusicVideoIEz
qqmusic:mvu   QQéŸ³ä¹� - MVz2https?://y\.qq\.com/n/ryqq/mv/(?P<id>[0-9A-Za-z]+)z)https://y.qq.com/n/ryqq/mv/002Vsarh3SVU8KÚ002Vsarh3SVU8KÚmp4z The Chant (Extended Mix / Audio)r    ra   i€ÙªdÚ20230709i9  zDuke Dumont)
rb   rc   rd   rj   rk   Úrelease_timestamprf   rg   rh   Ú
view_count)r<   rn   c           	      óV   — t        |dd„ ddt        hfdt        hfdt        hfdœf«      S )NrS  c                 ó   — |d   S )NÚfreeflow_urlrW   )r·   r¸   s     r   r¹   z3QQMusicVideoIE._parse_url_formats.<locals>.<lambda>Â  s   € ¸1¸^Ñ;L€ r   rY  r   ÚfileSizeÚnewFileType)r<   rÁ   rÀ   )r   r   r	   r   )r   Úurl_datas     r   Ú_parse_url_formatsz!QQMusicVideoIE._parse_url_formatsÁ  sA   € Ü˜H uÑ.LØ" A¬ }Ð5Ø#¤k ]Ð3Ø'¬+¨Ð7ñO
ð 'ó ð 	r   c                 ó®  — | j                  |«      }| j                  dd|gg d¢dœdœddd|gidœd	œ|| j                  «       ¬
«      }t        |dd|df«      dk(  r| j	                  «        || j                  t        |dd|f«      «      dœt        |dd|dt        hfdt        hfdt        hfdt        hfdt        hfdddt        hfdt        hfdœf«      ¥S )Nzmusic.video.VideoDataÚget_video_info_batch)Úvidr8  ÚsidÚ	cover_picrg   ÚsingersÚ	video_payÚhintr²   rM  r‚   r  ÚplaycntÚpubdateÚplay_forbid_reason)ÚvidlistÚrequiredr�   zmusic.stream.MvUrlProxyÚ	GetMvUrlsÚvids)ÚmvInfoÚmvUrl)rK   rm  rJ   rh  é   rn  rÉ   r‚   r  rb  rg  rg   rc  .rf  )rd   rj   rk   rU  rg   rh   rV  )	rÞ   rQ   rã   r   Úraise_geo_restrictedr]  rß   r   r	   )r   r<   Úvideo_idÚ
video_infos       r   rð   zQQMusicVideoIE._real_extractÈ  s+  € Ø—>‘> #Ó&ˆà×'Ñ'à1Ø0à (˜zò!Dññ
ð 4Ø%Ø  8 *Ð-ññ)
ð" ˜T×:Ñ:Ó<ð# (ó >ˆ
ô$ ˜
 X¨v°xÐAUÐ$VÓWÐ[\Ò\Ø×%Ñ%Ô'ð Ø×.Ñ.¬|¸JÈÐRXÐZbÐHcÓ/dÓeñ
ô ˜:¨°&¸(Ø ¤3 %˜Ø &¬¨˜Ø)¬K¨=Ð9Ø&/´+°Ð%?Ø'¬+¨Ð7Ø&¨¨V´c°UÐ;Ø(¬;¨-Ð8ñEð (ó ð
ð 	
r   N)
rR   rS   rT   rñ   rò   ró   r0   rô   r]  rð   rW   r   r   rQ  rQ  ¬  sQ   „ Ø€GØ€GØF€Jð ;à"ØØ7ØØ:Ø!+Ø&ØØ&˜Øñ
ñð €Fò ó$
r   rQ  )rÆ   r  rC   r3   r1   Úcommonr   Úutilsr   r   r   r	   r
   r   r   r   r   r   r   r   rY   rö   r  r!  r1  rC  rQ  rW   r   r   ú<module>ru     sœ   ðÛ Û Û Û Û å !÷÷ ÷ ñ ô'K�Mô 'KôTa�ô aôH?�mô ?ôD;�}ô ;ô$Ð%ô $ôN+RÐ'ô +Rô\"Ð(ô "ôJ@
�]õ @
r   