
    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 )YinboLiveStreamzL
    A class for fetching and processing Yinbo live stream information.
    N
proxy_addrcookiesc                 P    t         |   ||       | j                         | _        y N)super__init___get_mobile_headersmobile_headers)selfr   r   	__class__s      V/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/yinbo/live_stream.pyr   zYinboLiveStream.__init__   s#    W-"668    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://live.ybw1666.com/800005143?promoters=0 )z
user-agentacceptzaccept-languagereferercookie)r   )r   s    r   r   z#YinboLiveStream._get_mobile_headers   s$    W9\G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   }
 fd}|	dd}|
dk(  r2 ||       d{   \  }}|d   }| d| d}| d| d}|d|||dz  }|S 7 n7 *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.ybw1666.com/)roomidx
currentUrlz5https://wap.ybw1666.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_domainz>YinboLiveStream.fetch_web_stream_data.<locals>.get_live_domain2   s     &xDOOUYUhUhiiH jj)L)1299>>?AAGVWAXYZ\\a\a\c #zz/: 01G H 01G H$&777 j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_data	room_datar@   live_statusr?   result
flv_domain
hls_domainlive_idrD   rC   s   `                 r   fetch_web_stream_dataz%YinboLiveStream.fetch_web_stream_data   s0     ))C.#**3*;B?4WI>
 K6<<KaKabhKiJjk"8QUQdQdeeJJx(	f%j1	
+,	8 "-?!+:3+?%?"J
)G#AgYd3G$Qwiu5H$H`ghhF- f" &@s%   A8C.;C*<AC.C,)C.,C.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   rV   s     r   fetch_stream_urlz YinboLiveStream.fetch_stream_urlD   s"     
 	j.11	9%%s   )NN)Tr   )__name__
__module____qualname____doc__strr   dictr   boolrU   staticmethodintr   rY   __classcell__)r   s   @r   r
   r
   
   s~    93: 9sTz 9
T 
's '$ 'RV 'R &$ &sSy4?O &[e & &r   r
   )r7   r2   urllib.parserG   r*   r   r   requests.async_httpr   baser   r
    r   r   <module>rh      s%     	  + , !@&n @&r   