
    OJni;                     J    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ede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 )WinkTVLiveStreamzM
    A class for fetching and processing WinkTV 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/winktv/live_stream.pyr   zWinkTVLiveStream.__init__   s"    W-..0    returnc                 2    dddddd| j                   xs ddS )Nz!application/json, text/plain, */*z/zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6z!application/x-www-form-urlencodedzhttps://www.winktv.co.krzPMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0 )acceptzaccept-languagezcontent-typerefereroriginz
user-agentcookie)r   )r   s    r   r   z WinkTVLiveStream._get_pc_headers   s*    9P?10lll(b
 	
r   urlc                 &  K   |j                  d      d   j                  dd      d   }|dd}d	}t        || j                  | j                  |
       d {   }t        j                  |      }d|v }|d   d   }|d   d    d| }	|	|fS 7 6w)N?r   /   maxsplitmedia)userIdinfoz%https://api.winktv.co.kr/v1/member/bjr   r   headersdatabjInfoidnick-)splitrsplitr   r   r   jsonloads)
r   r   user_idr+   info_apijson_str	json_datalive_status	anchor_idanchor_names
             r   get_winktv_bj_infoz#WinkTVLiveStream.get_winktv_bj_info   s     ))C.#**3*;B?

 ;"xDOOUYUdUdkoppJJx(	*h'-	"8,V45QykBK'' qs   ABB7Bprocess_datac                   K   |j                  d      d   j                  dd      d   }| j                  |d      }|sd}d	||dd
}| j                  |       d{   \  }}||d}|rd}	t	        |	| j
                  | j                  |       d{   }
d|
v rt        d|
 d      t        j                  |
      }d|v r.|d   d   dk(  rt        | d      t        |d   d   |d         |s|S |d   d   d   d   }| j                  || j
                  | j                         d{   }||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.
        r    r   r!   r"   r#   r%   pwdr   watch)actionr'   passwordshareLinkTypeN)r:   is_livez%https://api.winktv.co.kr/v1/live/playr)   z403: Forbiddenz4Your network has been banned from accessing WinkTV ()	errorDatacode	needAdultz The live stream is only accessible to logged-in adults. Please ensure that the cookie is correctly filled in the configuration file after logging in.messagePlayListhlsr   )m3u8proxyr*   m3u8_urlplay_url_list)r0   r1   
get_paramsr;   r   r   r   ConnectionErrorr2   r3   RuntimeErrorget_play_url_list)r   r   r<   r4   room_passwordr+   r:   r8   resultplay_apir6   r7   rM   rN   s                 r   fetch_web_stream_dataz&WinkTVLiveStream.fetch_web_stream_data+   s     ))C.#**3*;B?U3M%	
 *.)@)@)E#E [!,E>H&8Y]YhYhosttH8+%(\]e\ffg&hii

8,Ii'[)&1[@&%  e fg g 'y'=f'EyQZG[\\   ,U3A6u=H"&"8"8hdoogkgvgv"8"wwM!)F:&3F?#+ $F u xs7   AEE 6EEBE/E0EEEr7   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WinkTV)specplatformN)get_stream_urlr   )r   r7   rW   r+   s       r   fetch_stream_urlz!WinkTVLiveStream.fetch_stream_urlX   s6      ((MW_(``4   as   -+-)NN)Tr   )__name__
__module____qualname____doc__strr   dictr   tupler;   boolrV   intr   r]   __classcell__)r   s   @r   r
   r
      s    13: 1sTz 1	
 	
(C (E ( +s +$ +RV +Z! !S3YQUEU !ak !r   r
   )	r2   r+   r   r   requests.async_httpr   baser   r
    r   r   <module>rk      s     + , !U!~ U!r   