
    OJni                     R    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 )BigoLiveStreamzK
    A class for fetching and processing Bigo live stream information.
    N
proxy_addrcookiesc                 P    t         |   ||       | j                         | _        y N)super__init___get_pc_headers
pc_headers)selfr   r   	__class__s      U/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/bigo/live_stream.pyr   zBigoLiveStream.__init__   s"    W-..0    returnc                 *    dd| j                   xs ddS )NzPMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0z;zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 )z
user-agentzaccept-languagecookie)r   )r   s    r   r   zBigoLiveStream._get_pc_headers   s    l\ll(b
 	
r   urlprocess_datac                    K   d|vrdt        || j                  | j                         d{   }t        j                  d|      j                  d      }|j                  d      d   }nAd|v r|j                  d      d   }n(|j                  d	      d
   j                  dd      d   }d|i}d}t        || j                  | j                  |       d{   }t        j                  |      }	|s|	S |	d   d   }
|	d   d   }|
dd}|dk(  r&|	d   d   }|	d   d   }||d<   ||d<   ||d||dz  }|S |d   dk(  rt        d|j                  d      d    d| | j                  | j                         d{   }t        j                  d |t        j                        }|r|j                  d      }
n6t        j                  d!|t        j                        }|j                  d      }
|
|d<   |S 7 7 !7 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.
        zbigo.tv)r   headersNzT<meta data-n-head="ssr" data-hid="al:web:url" property="al:web:url" content="(.*?)">   z&amp;h=z&h=?r   /)maxsplitsiteIdz@https://ta.bigo.tv/official_website/studio/getInternalStudioInfo)r   r   r   datar%   	nick_namealiveF)anchor_nameis_live	roomTopichls_srcm3u8_url
record_urlT)titler)   r,   r-   r(   r   zhttps://www.bigo.tv/r   )r   r   r   u-   <title>欢迎来到(.*?)2的直播间</title>z\<meta data-n-head="ssr" data-hid="og:title" property="og:title" content="(.*?) - BIGO LIVE">)r   r   r   researchgroupsplitrsplitjsonloadsDOTALL)r   r   r   html_strweb_urlroom_idr%   url2json_str	json_datar(   live_statusresult
live_titler,   match_anchor_names                   r   fetch_web_stream_dataz$BigoLiveStream.fetch_web_stream_data   s8     C&stPTP_P_``Hiif%(  mmI.r2G|))E*2.))C.+2232CBG'"Q"tQUQ`Q`gkllJJx(	'4'0!,?!"6*;7J (3H!)F:#+F< 
taijjF  M"b(&-A#))C.QRBSATTUV]U^+_26//4??\ \H "		*Y[cegenen o /55a8$&II /MNVXZXaXa%c!/55a8$/F=!O a m\s6   *G>G6B+G>G9B"G>;G<<A;G>9G><G>r<   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.
        platformBigo)r   )r<   rB   s     r   fetch_stream_urlzBigoLiveStream.fetch_stream_urlM   s"     
 	j&))	9%%s   )NN)Tr   )__name__
__module____qualname____doc__strr   dictr   boolrA   staticmethodintr   rF   __classcell__)r   s   @r   r
   r
   	   s~    13: 1sTz 1
 
3s 3$ 3RV 3j &$ &sSy4?O &[e & &r   r
   )
r4   r/   r%   r   r   requests.async_httpr   baser   r
    r   r   <module>rT      s"     	 + , !J&^ J&r   