
    OJni?                     b    d dl Z d dlZ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ededz  fd	Z	dededz  fd
Z
dededz  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 )HuajiaoLiveStreamzN
    A class for fetching and processing Huajiao live stream information.
    N
proxy_addrcookiesc                 P    t         |   ||       | j                         | _        y N)super__init___get_pc_headers
pc_headers)selfr   r   	__class__s      X/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/huajiao/live_stream.pyr   zHuajiaoLiveStream.__init__   s"    W-..0    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://www.huajiao.com/zPMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0 )accept-languagerefererz
user-agentcookie)r   )r   s    r   r   z!HuajiaoLiveStream._get_pc_headers   s!    P1lll(b	
 	
r   urlc                   K   |j                  d      d   j                  dd      d   }d| }	 t        || j                  | j                         d {   }t        j                  d|      j                  d      }t        j                  |      }|d	   d
   }|d   d   }|d   d   }	|j                  d      d   j                  dd      d   }|	|||fS 7 # t        $ r t        d      w xY ww)N?r   /   maxsplitzhttps://www.huajiao.com/l/r   r   headerszvar feed = (.*?});feedsnauthoruidnicknamezFailed to retrieve live room data, the Huajiao live room address is not fixed, please use the anchor's homepage address for recording.)splitrsplitr   r   r   researchgroupjsonloads	ExceptionRuntimeError)
r   r   live_idapihtml_strjson_str	json_datar'   r)   r*   s
             r   get_huajiao_snz HuajiaoLiveStream.get_huajiao_sn   s    ))C.#**3*;A>*7)4	@&34??TXTcTcddHyy!5x@FFqIH

8,I6"4(BH%e,C *:6HiinQ'..sQ.?BGRg-- e  	@?@ @	@s/   .C5%C CBC C5C C22C5c                   K   d|v r@|j                  d      d   j                  d      d   }|dt        t        t        j                         dz              d}d	t        j
                  j                  |       }t        || j                  | j                  
       d {   }t        j                  |      }t        d| | j                  | j                  
       d {   }t        j                  d|      j                  d      }|d   r0d|d   d   d   d   v r |d   d   d   d   }	||	d   d|	d   |	d   |dS |ddS y 7 7 fw)Nuserr   r   user/r!   r0     )r)   fmt_z+https://webh.huajiao.com/User/getUserFeeds?r$   zhttps://www.huajiao.com/user/u   <title>(.*?)的主页.*</title>datar'   feedsr&   titleTrelateidanchor_namerB   is_liver'   liveidr)   FrE   rF   )r+   strinttimeurllibparse	urlencoder   r   r   r0   r1   r-   r.   r/   )
r   r   r)   paramsr5   r7   r8   r6   rE   r&   s
             r   get_huajiao_user_infoz'HuajiaoLiveStream.get_huajiao_user_info-   sj    S=))C.#))'215CTYY[4/01F @@V@VW]@^?_`C&34??TXTcTcddH

8,I&-J3%+P]a]l]l/3@ @H))$ExPVVWXYK TYv->w-G-J6-R%R (1!4V<#.!']#t*":.  (3uEE5  e@s&   B E"E	#AE$E%A%EEc                 x  K   ddd| j                   xs dd}|j                  dd      d   }d	| }t        || j                  |
       d {   }t	        j
                  |      }|d   s|d   j                  d      st        d      |d   }|d   d   |d   d   d|d   d   |d   d   |d   d   dS 7 iw)NzPliving/9.4.0 (com.huajiao.seeding; build:2410231746; iOS 17.0.0) Alamofire/9.4.0zzh-Hans-US;q=1.01r   )z
User-Agentr   sdk_versionr   r    r!   r"   z3https://live.huajiao.com/feed/getFeedInfo?relateid=)r   r%   errmsgr@   creatimeFailed to retrieve live room data, the Huajiao live room address is not fixed, please manually change the address for recording.r(   r*   r&   rB   Tr'   rC   r)   rD   )r   r,   r   r   r0   r1   getr2   )r   r   r%   room_idr5   r7   r8   r@   s           r   get_huajiao_stream_url_appz,HuajiaoLiveStream.get_huajiao_stream_url_appK   s     l1ll(b	
 **S1*-a0CG9M"34??GTTJJx(	Xi&7&;&;J&G-. .  >*5&\'*v,t$6l:.>%(
 	
 Us   AB:B8A*B:process_datac                   K   ddd}d|v r(| j                   s|S | j                  |       d{   }nqt        |j                         | j                  | j
                  d       d{   }|j                  d      d	k(  rt        d
      | j                  |       d{   }|r|j                  d      |d<   |j                  d      }|r|j                  d      |d<   t        t        j                         dz        dd|ddi}dt        j                  j                  |       }t        || j                  | j
                         d{   }t        j                   |      }	|d|	d   d   |	d   d   dz  }|S 7 U7 7 7 8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   FrH   r<   NT)r   r%   redirect_urlr    zhttps://www.huajiao.comrV   rE   rF   rB   r=   z1.0.0)rK   versionencodeh265z(https://live.huajiao.com/live/substream?r$   r@   h264_url)rF   flv_url
record_url)r   rP   r   stripr   r   rstripr2   rY   poprJ   rK   rL   rM   rN   r0   r1   )
r   r   rZ   result	room_datalive_statusrO   r5   r7   r8   s
             r   fetch_web_stream_dataz'HuajiaoLiveStream.fetch_web_stream_datag   s     "$6c><<"88==I!#))+$//SWSbSbquvvCzz#";;89 9 #==cBBI$-MM-$@F=!#--	2K"+--"8w		d 23&   f	 AAWAWX^A_@`a!*stX\XgXg!hh JJx0	#(0<"+F"3J"? 
 = >v
 C  isF   ,FF9F(F)7F F	!B1FF1FF	FFr8   video_qualityc                 .   K   | ddiz  } t        |       S w)za
         Fetches the stream URL for a live room and wraps it into a StreamData object.
         platformu   花椒直播)r   )r8   rj   s     r   fetch_stream_urlz"HuajiaoLiveStream.fetch_stream_url   s"     
 	j.11	9%%s   )NN)Tr   )__name__
__module____qualname____doc__rI   r   dictr   tupler9   rP   rY   boolri   staticmethodrJ   r   rm   __classcell__)r   s   @r   r
   r
      s    13: 1sTz 1
 
@ @ @$Fs Ftd{ F<
C 
D4K 
8.s .$ .RV .` &$ &sSy4?O &[e & &r   r
   )r0   r-   rK   urllib.parserL   r@   r   r   requests.async_httpr   baser   r
    r   r   <module>r{      s(     	   + , !R& R&r   