
    OJni                     Z    d dl Z d dlZd dlZddlmZmZ ddlmZ ddl	m
Z
  G d de
      Zy)	    N   )
StreamDatawrap_stream)	async_req   )BaseLiveStreamc                        e Zd ZdZddedz  dedz  f fdZdefdZdded	edefd
Z	e
ddedeez  dz  defd       Z xZS )ChangliaoLiveStreamzP
    A class for fetching and processing Changliao live stream information.
    N
proxy_addrcookiesc                 P    t         |   ||       | j                         | _        y N)super__init___get_pc_headers
pc_headers)selfr   r   	__class__s      Z/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/changliao/live_stream.pyr   zChangliaoLiveStream.__init__   s"    W-..0    returnc                 .    dddd| j                   xs ddS )Nz;ios/7.830 (ios 17.0; ; iPhone 15 (A2846/A3089/A3090/A3092))z!application/json, text/plain, */*z;zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2z-https://wap.tlclw.com/phone/15777?promoters=0 )z
user-agentacceptzaccept-languagereferercookie)r   )r   s    r   r   z#ChangliaoLiveStream._get_pc_headers   s$    W9\Fll(b
 	
r   urlprocess_datac                    K   |j                  d      d   j                  dd      d   }|d| d}d	t        j                  j	                  |       }t        | j                   j                  
       d{   }t        j                  |      }|d   d   d   }|d   d   d   }	 fd}
|dd}|	dk(  r8 |
|       d{   \  }}|d   d   d   }| d| d}| d| d}|d|||dz  }|S 7 x7 0w)a)  
        Fetches web stream data for a live room.

        Args:
            url (str): The room URL.
            process_data (bool): Whether to process the data. Defaults to True.

        Returns:
            dict: A dictionary containing anchor name, live status, room URL, and title.
        ?r   /   maxsplitzhttps://wap.tlclw.com/)roomidx
currentUrlz3https://wap.tlclw.com/api/ui/room/v1.0.0/live.ashx?r   headersNdataroomInfonickname	live_statc                 >  K   t        | j                  j                         d {   }t        j                  d|t        j
                        d   j                  dd      d   j                         }t        j                  |      }|d   }|d   }||fS 7 qw)	Nr(   z!var config = (.*?)config.webskinsr   ;r"   r#   domainpullstream_flvdomainpullstream_hls)
r   r   r   refindallDOTALLrsplitstripjsonloads)page_urlhtml_strconfig_json_strconfig_json_datastream_flv_domainstream_hls_domainr   s         r   get_live_domainzBChangliaoLiveStream.fetch_web_stream_data.<locals>.get_live_domain1   s     &xDOOUYUdUdeeH jj)L)1299>>?AAGVWAXYZ\\a\a\c #zz/: 01G H 01G H$&777 fs   &BBA2BF)anchor_nameis_liveliveIDz.flvz.m3u8T)rA   m3u8_urlflv_url
record_url)
splitr5   urllibparse	urlencoder   r   r   r7   r8   )r   r   r   room_idparamsplay_apijson_str	json_datar@   live_statusr?   result
flv_domain
hls_domainlive_idrD   rC   s   `                r   fetch_web_stream_dataz)ChangliaoLiveStream.fetch_web_stream_data   s?     ))C.#**3*;B?27)<
 II_I_`fIgHhi"8QUQ`Q`aaJJx(	'
3J?'
3K@	8 "-?!+:3+?%?"J
'
3H=G#AgYd3G$Qwiu5H$H`ghhF+ b  &@s%   A8C8;C4<A	C8C6/C86C8rN   video_qualityc                 .   K   | ddiz  } t        |       S w)z_
        Fetches the stream URL for a live room and wraps it into a StreamData object.
        platformu   畅聊直播)r   )rN   rU   s     r   fetch_stream_urlz$ChangliaoLiveStream.fetch_stream_urlC   s"     
 	j.11	9%%s   )NN)Tr   )__name__
__module____qualname____doc__strr   dictr   boolrT   staticmethodintr   rX   __classcell__)r   s   @r   r
   r
   
   s~    13: 1sTz 1
 
&s &$ &RV &P &$ &sSy4?O &[e & &r   r
   )r7   r2   urllib.parserG   r*   r   r   requests.async_httpr   baser   r
    r   r   <module>rg      s#     	  + , !?&. ?&r   