
    VGhe2                         d dl Z 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 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 G d	 d
e	      Z G d de	      Zy)    N   )InfoExtractor   )
compat_ord)	ExtractorErrordetermine_extencode_data_uriint_or_none
orderedSetparse_iso8601str_or_noneurl_basenameurshiftc            
           e Zd ZdZdZdgZdZddddd	d
dddidddddddddidddddddddddiddddddddddgZd Zd  Z	e
d!        Zd" Zd# Zy$)%LeIEu	   乐视网zlhttps?://(?:www\.le\.com/ptv/vplay|(?:sports\.le|(?:www\.)?lesports)\.com/(?:match|video))/(?P<id>\d+)\.htmlCNz#http://www.le.com/ptv/vplay/%s.htmlz)http://www.le.com/ptv/vplay/22005890.html edadcfe5406976f42f9f266057ee5e4022005890mp4uB   第87届奥斯卡颁奖礼完美落幕 《鸟人》成最大赢家z$md5:a9cb175fd753e2962176b7beca21a47c)idexttitledescriptionhls_prefer_nativeT)urlmd5	info_dictparamsz(http://www.le.com/ptv/vplay/1415246.html1415246u   美人天下01z$md5:28942e650e82ed4fcc8e4de919ee854d)r   r   r   zFThis video is available only in Mainland China, thus a proxy is neededz(http://www.le.com/ptv/vplay/1118082.html 2424c74948a62e5f31988438979c5ad11118082u   与龙共舞 完整版z$md5:7506a5eeb1722bb9d4068f85024e3986)noter   r   r   r   z(http://sports.le.com/video/25737697.htmlr   only_matchingz-http://www.lesports.com/match/1023203003.htmlz*http://sports.le.com/match/1023203003.htmlc                 T    d}||k  r t        |d      |dz  dz  z   }|dz  }||k  r |S )Nr   r      )r   )selfparam1param2_loc3_s       _/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/leeco.pyrorzLeIE.rorM   sA    voVQ'FQJ2+=>FaKF vo     c                 6    d}| j                  ||dz        |z  S )NiC   )r,   )r'   r(   _loc2_s      r+   calc_time_keyzLeIE.calc_time_keyT   s!    xx,v55r-   c                    | d d j                  d      j                         dk7  r| S | dd  } t        dt        |       z        }t	        |       D ])  \  }}t        |      }|dz  |d|z  <   |dz  |d|z  dz   <   + t        |      dz
  }||d  |d | z   }t        t        |             }t        t        |             D ]  }|d|z     dz  |d|z  dz      z   ||<    t        |      S )N   utf-8vc_01r      r      )decodelower	bytearraylen	enumerater   rangebytes)encrypted_data_loc4_idxvalb_loc7_is          r+   decrypt_m3u8zLeIE.decrypt_m3u8Y   s   "1$$W-335@!!'+1s>223!.1 	)HC3A2gF1s7O"#b&F1s7Q;	) &kBt,3~./s>*+ 	?Aq1u*VAEAI->>F1I	? V}r-   c                 z    |d   d   }|d   dk(  r+|d   }|dk(  r| j                          y t        d|z  d	      y )
Nmsgs
playstatusstatusr   flagr   zGeneric error. flag = %dTexpected)raise_geo_restrictedr   )r'   	play_jsonrI   rK   s       r+   _check_errorszLeIE._check_errorsl   sT    v&|4
h1$f%Dqy))+$%?$%FQUVV %r-   c                 r     j                  |       j                  |      } j                  dddddd j                  t	        t        j
                                     ddd j                         	      } j                  |        fd
}g }g }|d   d   }|d   d   }|j                  dg       j                         D ]  \  }	}
|	|v r|j                  |	       ||
d   z   } |||	      j                         D ]X  \  }}|t        |
d         | d|	 |dk(  rdndt        |	      d}|	dd  dk(  rt        |	d d       |d<   |j                  |       Z  t         j                  d|dd       dt        j                   d            } j#                  d|d !      }||d"   |d#   ||d$d%S )&Nz.http://player-pc.le.com/mms/out/video/playJsonzDownloading flash playJson datar   i   i  z
www.le.comcn)r   platidsplatidformatsourcetkeydomainregion)queryheadersc           
          j                  | d| ddddd      }j                  |d   d   d	   d
|       }j                  |j                               }dt	        |d      iS )Nz"Download JSON metadata for format r      ios)m3vrV   expecttss)r[   nodelistr   locationz(Downloading m3u8 information for format )r"   hlszapplication/vnd.apple.mpegurl)_download_json_request_webpagerF   readr	   )	media_url	format_id
nodes_datareq	m3u8_datamedia_idr'   s        r+   get_flash_urlsz*LeIE._real_extract.<locals>.get_flash_urls   s    ,,84YK@ 	 - J '':&q)*5x?	{K ( MC ))#((*5I y2QR r-   rH   playurlrY   r   dispatch-re   m3u8_nativehttp)r   r   rj   protocolqualitypheightu   发布时间&nbsp;([^<>]+) zpublish time)default    )hours)	delimitertimezoner   Ffatalr   pic)resrv   )r   formatsr   	thumbnailr   	timestamp_format_sort_fields)	_match_id_download_webpagerf   r1   inttimegeo_verification_headersrP   getitemsappendr   r
   r   _html_search_regexdt	timedelta_html_search_meta)r'   r   pageplay_json_flashro   extracted_formatsr   rp   play_domainrj   format_datari   ru   
format_urlfpublish_timer   rn   s   `                @r+   _real_extractzLeIE._real_extractv   s   >>#&%%c84--<7**3tyy{+;<&	@ 113 . 5 	?+	* !&))4h'*&-kk*b&A&G&G&I 	""I{--$$Y/#k!n4I(6y)(L(R(R(T "$*%(Q8$,:Qyk!:19U1B*95 RS>S("-in"=AhKq!"	"( %T%<%<*D.$ &= &PBLLq$9; ,,]D,N W% &%#5
 	
r-   N)__name__
__module____qualname__IE_DESC
_VALID_URL_GEO_COUNTRIES_URL_TEMPLATE_TESTSr,   r1   staticmethodrF   rP   r    r-   r+   r   r      s    G AJVN9M ;1YA	
  
 :%A	
  
 Y91-A	
  
 : ? <U-F`6
  $WN
r-   r   c                   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gZe fd       Zd Z xZS )LePlaylistIEz;https?://[a-z]+\.le\.com/(?!video)[a-z]+/(?P<id>[a-z0-9_]+)zhttp://www.le.com/tv/46177.html46177u   美人天下z$md5:395666ff41b44080396e59570dbac01c)r   r   r   #   )r   r   playlist_countz(http://tv.le.com/izt/wuzetian/index.htmlwuzetianu   武媚娘传奇z$md5:e12499475ab3d50219e5bba00b3cb248`   )r   r   playlist_mincountz)http://tv.le.com/pzt/lswjzzjc/index.shtmlTr#   z"http://www.le.com/comic/92063.htmlz5http://list.le.com/listn/c1009_sc532002_d2_p1_o1.htmlc                 P    t         j                  |      rdS t        |   |      S )NF)r   suitablesuper)clsr   	__class__s     r+   r   zLePlaylistIE.suitable   s#    c*uE0@0EEr-   c                    | j                  |      }| j                  ||      }t        t        j                  d|            }|D cg c]&  }| j                  t        j                  |z  d      ( }}| j                  d|d      j                  d      d   }| j                  d	|d      }| j                  ||||
      S c c}w )Nz8<a[^>]+href="http://www\.letv\.com/ptv/vplay/(\d+)\.htmlLe)iekeywordsFr   u   ，r   r   )playlist_titleplaylist_description)r   r   r   refindall
url_resultr   r   r   splitplaylist_result)	r'   r   playlist_idr   	media_idsrn   entriesr   r   s	            r+   r   zLePlaylistIE._real_extract   s    nnS)%%c;7 rzzG O P	 $-. ??4#5#5#@T?J . . &&z4-2 ' 449E%LD,,]D,N##G[9D $ F 	F.s   +C)	r   r   r   r   r   classmethodr   r   __classcell__)r   s   @r+   r   r      s    OJ 1#A

  :&A
  	 ;
 4 G1F: F FFr-   r   c                   j    e 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ed        Zd Zd Z	y)LetvCloudIEu	   乐视云z)https?://yuntv\.letv\.com/bcloud.html\?.+z=http://yuntv.letv.com/bcloud.html?uu=p7jnfw5hw9&vu=467623dedf 26450599afd64c513bc77030ad15db44p7jnfw5hw9_467623dedfr   zVideo p7jnfw5hw9_467623dedf)r   r   r   )r   r   r   zvhttp://yuntv.letv.com/bcloud.html?uu=p7jnfw5hw9&vu=ec93197892&pu=2c7cd40209&auto_play=1&gpcflag=1&width=640&height=360 e03d9cc8d9c13191e1caf277e42dbd31p7jnfw5hw9_ec93197892zVideo p7jnfw5hw9_ec93197892z=http://yuntv.letv.com/bcloud.html?uu=p7jnfw5hw9&vu=187060b6fd cb988699a776b22d4a41b9d43acfb3acp7jnfw5hw9_187060b6fdzVideo p7jnfw5hw9_187060b6fdc                     | d   dk(  rd}g d}n| d   dk(  rd}g d}dj                  D cg c]
  }|| |   z    c}      z   }t        j                  |j                               j	                         | d	<   y c c}w )
Ncfflash 2f9d6924b33a165a6d8b5d3d42f4f987)r   rV   ranuuvervuhtml5fbeh5player12c43eccf2bec3300344)r   r   r   bverr    sign)joinhashlibr   encode	hexdigest)objsaltr   item
input_datas        r+   	sign_datazLetvCloudIE.sign_data  s    t95D>EY'!4D5EWW5A4dSY.ABTI
kk*"3"3"56@@BF Bs   A;c                      fd} ||t        j                                }|j                  d      dk(  r |||d         }|j                  d      s_|j                  d      rt        dj                  |d         d	      |j                  d      rt        d
|d   z  d	      t        d      d }g }|d   d   d   j	                         D ]  }	|	d   }
 ||
d         } |t        |            }|j                  |t        |      t        |
j                  d            t        |
j                  d            t        |
j                  d            t        |
j                  d            d        |S )Nc           	          | dddt        |      d}j                  |       j                  dt        j                  j                  |      z   d|        S )Nz2.2zfirefox44.0json)r   r   r   rV   r   r   r   z!http://api.letvcloud.com/gpc.php?z#Downloading playJson data for type )strr   rf   urllibparse	urlencode)r   r   datarn   r'   r   r   s      r+   get_play_jsonz/LetvCloudIE._get_formats.<locals>.get_play_json)  sj    % 9~D NN4 &&3fll6L6LT6RR?tDF Fr-   codeiW'  r   r   messagezLetv cloud said: {}TrL   zLetv cloud returned error %dz$Letv cloud returned an unknown errorc                 J    t        j                  |       j                  d      S )Nr4   )base64	b64decoder8   )ss    r+   r   z+LetvCloudIE._get_formats.<locals>.b64decodeE  s    ##A&--g66r-   
video_infomediaplay_urlmain_urlvtype
definitionvwidthvheight)r   r   rj   format_notewidthry   )
r   r   r   rV   valuesr   r   r   r   r
   )r'   r   r   r   rn   r   rO   r   r   r   r   r   decoded_urls   ` ```        r+   _get_formatszLetvCloudIE._get_formats(  sj   	F ""diik2	== E)%b)K*@AI}}V$}}Y'$%:%A%A)IBV%Wbfggv&$%CiPVFW%Wbfgg$%KLL	7 v&|4W=DDF 	EZ(HHZ01C#L$56KNN$[1(g)>?*8<<+EF$X\\(%;<%hll9&=> 		 r-   c                 :   t        j                  d|      }t        j                  d|      }|r|st        d| d      |j                  d      }|j                  d      }|dz   |z   }| j	                  d|||      | j	                  d	|||      z   }|d
| |dS )Nz
uu=([\w]+)z
vu=([\w]+)zInvalid URL: TrL   r   _r   r   zVideo )r   r   r   )r   searchr   groupr   )r'   r   uu_mobjvu_mobjr   r   rn   r   s           r+   r   zLetvCloudIE._real_extractX  s    ))M3/))M3/g =!6FF]]1]]18b=##GRX>ARARSZ\^`bdlAmm hZ(
 	
r-   N)
r   r   r   r   r   r   r   r   r   r   r   r-   r+   r   r      s     G=J O1)2
 H1)2
 O1)2
!F4 C C.`
r-   r   )r   datetimer   r   r   r   urllib.parser   commonr   compatr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r-   r+   <module>r	     sX       	   ! 
 
 
m
= m
`3F= 3Fll
- l
r-   