
    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 )SixRoomLiveStreamzN
    A class for fetching and processing SixRoom live stream information.
    N
proxy_addrcookiesc                 P    t         |   ||       | j                         | _        y N)super__init___get_mobile_headersmobile_headers)selfr   r   	__class__s      X/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/sixroom/live_stream.pyr   zSixRoomLiveStream.__init__   s#    W-"668    returnc                 ,    ddd| j                   xs ddS )Nz/zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6z#https://ios.6.cn/?ver=8.0.3&build=4z;ios/7.830 (ios 17.0; ; iPhone 15 (A2846/A3089/A3090/A3092)) )zaccept-languagerefererz
user-agentcookie)r   )r   s    r   r   z%SixRoomLiveStream._get_mobile_headers   s$      Q<Wll(b	
 	
r   urlprocess_datac                   K   |j                  d      d   j                  dd      d   }t        d| | j                  | j                         d{   }t        j                  d	|      j                  d      }d
ddddd|d}d}t        ||| j                  | j                         d{   }t        j                  |      }|s|S |d   d   d   }	|d   d   d   }
|
dd}|	rd|	 d}|d||dz  }|S 7 7 M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://v.6.cn/)r   headersNzrid: '(.*?)',
\s+roomidz3.1r   v6iphone1)avencpasslogiuidprojectrateridruidzBhttps://v.6.cn/coop/mobile/index.php?padapi=coop-mobile-inroom.php)datar   r#   contentliveinfoflvtitleroominfoaliasF)anchor_nameis_livez!https://wlive.6rooms.com/httpflv/z.flvT)r4   flv_url
record_url)
splitrsplitr   r   r   researchgroupjsonloads)r   r   r   room_idhtml_strr-   apijson_str	json_data	flv_titler3   resultr5   s                r   fetch_web_stream_dataz'SixRoomLiveStream.fetch_web_stream_data   s-     ))C.#**3*;A>"_WI#>4??dhdwdwxx))98DJJ1M!
 S"3TdooW[WjWjkkJJx(	i(4Z@		*:6w?!,?9)DIG$7'RRF/ y ls&   AC?C;AC?/C=0AC?=C?rB   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   )rB   rF   s     r   fetch_stream_urlz"SixRoomLiveStream.fetch_stream_url?   s#     
 	j"344	9%%s   )NN)Tr   )__name__
__module____qualname____doc__strr   dictr   boolrE   staticmethodintr   rI   __classcell__)r   s   @r   r
   r
   	   s~    93: 9sTz 9
T 
#s #$ #RV #J &$ &sSy4?O &[e & &r   r
   )
r<   r9   r-   r   r   requests.async_httpr   baser   r
    r   r   <module>rW      s      	 + , !<& <&r   