
    OJni{                     ^    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 ddl	m
Z
  G d	 d
e      Zy)    N   )
StreamDatawrap_stream)	async_req   )BaseLiveStream   )calculate_signc                        e Zd ZdZddedz  dedz  f fdZ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 )LaixiuLiveStreamzM
    A class for fetching and processing Laixiu live stream information.
    N
proxy_addrcookiesc                 P    t         |   ||       | j                         | _        y N)super__init___get_pc_headers
pc_headers)selfr   r   	__class__s      W/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/laixiu/live_stream.pyr   zLaixiuLiveStream.__init__   s"    W-..0    c                 d    t        d      }ddt        |d         dd|d   |d	   d
ddddddd}|S )Npc)ua_typez}Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0web	timestamp210003imei	requestId9z1.0.0WEBzhttps://www.imkktv.comzhttps://www.imkktv.com/z/zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6)z
User-AgentmobileModelr   	loginTypeversionCoder    r!   channelversionosplatformOriginRefererzAccept-Language)r
   str)r   	sign_dataheaderss      r   r   z LaixiuLiveStream._get_pc_headers   s[    "40	I Y{34"f%";/.0P
" r   urlprocess_datareturnc                 J  K   d}t        j                  ||      }|r|j                  d      nd}d| }t        || j                  | j
                         d{   }t        j                  |      }|s|S |d   }	|	d   }
|	d	   d
k(  }|
dd}|r|	d   }|d||dz  }|S 7 F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 (?:roomId|anchorId)=(.*?)(?=&|$)r	    z9https://api.imkktv.com/liveroom/getShareLiveVideo?roomId=)r   r/   Ndatanickname
playStatusr   F)anchor_nameis_liveplayUrlT)r9   flv_url
record_url)researchgroupr   r   r   jsonloads)r   r0   r1   patternmatchroom_idplay_apijson_str	json_data	room_datar8   live_statusresultr;   s                 r   fetch_web_stream_dataz&LaixiuLiveStream.fetch_web_stream_data'   s      6		'3'$)%++a.rNwiX"8QUQ`Q`aaJJx(	f%	
+-2!,?	*G$7'RRF bs   AB#B!AB#rG   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.
        r*   u   来秀直播)r   )rG   rL   s     r   fetch_stream_urlz!LaixiuLiveStream.fetch_stream_urlD   s"     
 	j.11	9%%s   )NN)Tr   )__name__
__module____qualname____doc__r-   r   r   booldictrK   staticmethodintr   rN   __classcell__)r   s   @r   r   r   
   sv    13: 1sTz 1*s $ RV : &$ &sSy4?O &[e & &r   r   )r@   r=   r5   r   r   requests.async_httpr   baser   utilsr
   r    r   r   <module>r\      s%     	 + , ! !@&~ @&r   