
    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                   r     e Zd ZdZddedz  dedz  f fdZddededefd	Zdd
edee	z  dz  de
fdZ xZS )ShowRoomLiveStreamzO
    A class for fetching and processing ShowRoom live stream information.
    N
proxy_addrcookiesc                 P    t         |   ||       | j                         | _        y N)super__init___get_pc_headers
pc_headers)selfr   r   	__class__s      Y/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/showroom/live_stream.pyr   zShowRoomLiveStream.__init__   s"    W-..0    urlprocess_datareturnc                   K   |j                         }d|v r|j                  d      d   }nOt        || j                  | j                         d{   }t        j                  d|      j                  d      }d| }t        || j                  | j                         d{   }t        j                  |      }|d	   }|d
d}	|d   }
|
dk(  rd|	d<   d| d}t        || j                  | j                         d{   }|rt        j                  |      }|d   }|D ]  }|d   dk(  s|d   }||	d<   |s| j                  || j                  | j                         d{   }|r-|D cg c]  }|j                  dd      d    d|  c}|	d<   n|g|	d<   |	d   D cg c]  }|j                  dd       c}|	d<    |	S  |	S 7 7 .7 7 mc c}w c c}w 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/room/profilezroom_id=)r   headersNz#href="/room/profile\?room_id=(.*?)"   z9https://www.showroom-live.com/api/live/live_info?room_id=	room_nameF)anchor_nameis_livelive_statusr   Tr    z=https://www.showroom-live.com/api/live/streaming_url?room_id=z&abr_available=1streaming_url_listtypehls_allr   m3u8_url)proxyr   /)maxsplitr   play_url_listzhttps://zhttp://)stripsplitr   r   r   researchgroupjsonloadsget_play_url_listrsplitreplace)r   r   r   room_idhtml_strinfo_apijson_str	json_datar   resultr!   web_apir"   ir%   m3u8_url_lists                   r   fetch_web_stream_dataz(ShowRoomLiveStream.fetch_web_stream_data   s'     iikc!ii
+B/G&stPTP_P_``Hii FQWWXYZGNwiX"8QUQ`Q`aaJJx(	,!,?.! $F9UV]U^^noG&w4??TXTcTcddH JJx0	%./C%D"+ "AyI-#$U8-5z*#262H2H ( 3I 3Z -ZM,;H;Jlmhooc\]o>^_`>a=bbcdecf;g ;J 7 <D* 77=o7N7P\]qyyY7W 7PF?3!" ? a b e-Z;J7Pst   AG$GAG$%G&AG$G-G$2G$?+G$*G+
G$5"GG$+GG$G$G$G$
G$r8   video_qualityc                 ^   K   | j                  ||dd       d{   }t        |      S 7 w)z_
        Fetches the stream URL for a live room and wraps it into a StreamData object.
        TShowRoom)specplatformN)get_stream_urlr   )r   r8   r>   datas       r   fetch_stream_urlz#ShowRoomLiveStream.fetch_stream_urlA   s6      ((MWa(bb4   cs   -+-)NN)Tr   )__name__
__module____qualname____doc__strr   booldictr=   intr   rE   __classcell__)r   s   @r   r
   r
   	   sd    13: 1sTz 1.s .$ .RV .`! !S3YQUEU !ak !r   r
   )
r/   r,   rD   r   r   requests.async_httpr   baser   r
    r   r   <module>rR      s      	 + , !=! =!r   