
    OJnig                     ^    d dl Z d dlZd dlZd dlZddlmZmZ  G d de      Z	 G d d      Z
y)    N   )JS_SCRIPT_PATHutilsc                       e Zd Zy)UnsupportedUrlErrorN)__name__
__module____qualname__     Q/home/uftp/myenv/lib/python3.12/site-packages/streamget/platforms/douyin/utils.pyr   r   
   s    r   r   c                       e Zd ZddddZdddZedd	ed
edz  dedz  fd       Zedd	ededz  d
edz  de	dz  fd       Z
edd	ededz  d
edz  dedz  fd       Ze	 	 	 ddedededz  dedz  d
edz  defd       Zy)DouyinUtilszMozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36z;zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2z?s_v_web_id=verify_lk07kv74_QZYCUApD_xhiB_405x_Ax51_GYO9bUIyZQVf)
user-agentzaccept-languagecookiez}Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0zsessionid=7494ae59ae06784454373ce25761e864; __ac_nonce=0670497840077ee4c9eb2; __ac_signature=_02B4Z6wo00f012DZczQAAIDCJJBb3EjnINdg-XeAAL8-db;  s_v_web_id=verify_m1ztgtjj_vuHnMLZD_iwZ9_4YO4_BdN1_7wLP3pyqXsf2; r   r   Nurlheadersreturnc                   K   |rdd |D        vrt         j                  }t        j                  j	                  |       j
                  }	 t        t         d      5 }|j                         }d d d        t        j                        j                  d||j                  dd            }|S # 1 sw Y   AxY w# t        j                  $ r t        j                  d      w xY ww)Nr   c              3   <   K   | ]  }|j                           y wNlower.0ks     r   	<genexpr>z)DouyinUtils.get_xbogus.<locals>.<genexpr>    s     .JQqwwy.Js   z/x-bogus.jssignz
User-AgentzBFailed to execute JS code. Please check if the Node.js environment)r   HEADERSurllibparseurlparsequeryopenr   readexecjscompilecallgetProgramError)r   r   r$   fjs_codexboguss         r   
get_xboguszDouyinUtils.get_xbogus   s     ,.J'.JJ!))G%%c*00	l(45 #&&(#^^G,11&%\[gAhiFM# # "" 	l%%&jkk	ls6   AC%
B9 B--?B9 ,C%-B62B9 9)C""C%
proxy_addrc                   K   |rt        d |D              rt        j                  }	 t        j                  |      }t        j                  |d      4 d {   }|j                  | |d       d {   }|j                  }dt        |      v rt        j                  dt        |            }|rW|j                  d      }t        |      j                  d	      d
   j                  dd      d   }||fcd d d       d {    S t        d      t!        d      7 7 7 # 1 d {  7  sw Y   y xY w# t         $ r}	|	d }	~	wt"        $ r}	t        d|	       d }	~	ww xY ww)Nc              3   @   K   | ]  }|j                         d v  ywr   Nr   r   s     r   r   z.DouyinUtils.get_sec_user_id.<locals>.<genexpr>-        YAaggi/GGY      proxytimeoutTr   follow_redirectsreflow/zsec_user_id=([\w_\-]+)&   ?r   /maxsplitz&Could not find sec_user_id in the URL.z,The redirect URL does not contain 'reflow/'.An error occurred: )allr   r    r   handle_proxy_addrhttpxAsyncClientr*   r   strresearchgroupsplitrsplitRuntimeErrorr   	Exception)
r   r0   r   clientresponseredirect_urlmatchsec_user_idroom_ides
             r   get_sec_user_idzDouyinUtils.get_sec_user_id+   si    #YQXYY!))G	:00<J((z2F ^ ^&!'CSW!XX'||L 11II&@#lBSTE&+kk!n"%l"3"9"9#">q"A"H"HWX"H"YZ["\&3^ ^ ^ ++STT-.\]]^X^ ^ ^ ^" 	 # 	G 	:!4QC899	:s   %E(0D; D D; D&4D"5BD&8D; D$D; 	E(
D& D; "D&$D; &D8,D/-D84D; 7E(8D; ;	E%EE%E  E%%E(c                   K   |rt        d |D              rt        j                  }	 t        j                  |      }t        j                  |d      4 d{   }|j                  | |d       d{   }t        |j                        }dt        |      v rt        d      |j                  d	      d
   j                  dd      d   }d|d<   |j                  d| |d       d{   }t        j                  d|j                        }|r|d   }	|	cddd      d{    S t!        d      7 7 7 M7 # 1 d{  7  sw Y   yxY w# t        $ r}
|
d}
~
wt"        $ r}
t!        d|
       d}
~
ww xY ww)zGet unique_id from user profilec              3   @   K   | ]  }|j                         d v  ywr3   r   r   s     r   r   z,DouyinUtils.get_unique_id.<locals>.<genexpr>H   r4   r5   r6   r7   NTr:   r<   zUnsupported URLr>   r   r?   r=   r@   a   ttwid=1%7C4ejCkU2bKY76IySQENJwvGhg1IQZrgGEupSyTKKfuyk%7C1740470403%7Cbc9ad2ee341f1a162f9e27f4641778030d1ae91e31f9df6553a8f2efa3bdb7b4; __ac_nonce=0683e59f3009cc48fbab0; __ac_signature=_02B4Z6wo00f01mG6waQAAIDB9JUCzFb6.TZhmsUAAPBf34; __ac_referer=__ac_blankr   z%https://www.iesdouyin.com/share/user/z%unique_id":"(.*?)","verification_typez)Could not find unique_id in the response.rB   )rC   r   r    r   rD   rE   rF   r*   rG   r   r   rK   rL   rH   findalltextrM   rN   )r   r0   r   rO   rP   rQ   rS   profile_responsematches	unique_idrU   s              r   get_unique_idzDouyinUtils.get_unique_idE   s     #YQXYY!))G	:00<J((z2F T T&!'CSW!XX"8<<0L 11-.?@@*005a8??a?PQRS&H! *06[\g[h4i<CVZ *4 *\ $\ **%MO_OdOde 'I$%T T T( ''RSS)TX$\T T T T4 	 # 	G 	:!4QC899	:s   %F0E D7E D?4D95A8D?-D;.,D?E &D='E +F,D?7E 9D?;D?=E ?EEEE FE 	E>EE>+E99E>>FrT   rS   paramsc                    K   |rt        d |D              rt        j                  }|s
ddd| |ddd}dt        j                  j                  |       }t        j                  |       d {   }|d	z   |z   }	 t        j                  |      }t        j                  |d
      4 d {   }|j                  ||       d {   }|j                          |j                         }	|	d   d   d   d   cd d d       d {    S 7 7 `7 G7 # 1 d {  7  sw Y   y xY w# t        j                  $ r'}
t        d|
j                   j"                         d }
~
wt        $ r}
t        d|
       d }
~
ww xY ww)Nc              3   @   K   | ]  }|j                         d v  ywr3   r   r   s     r   r   z/DouyinUtils.get_live_room_id.<locals>.<genexpr>m   r4   r5   4verify_lk07kv74_QZYCUApD_xhiB_405x_Ax51_GYO9bUIyZQVf011128zwrqzbEaTlsxt52-vxyZo_mIoL0RjNi1ZdDe7gzEGMUTVh_HvmbLLkQrA_1HKVOa2C6gkxb6IiY6TY2z8enAkPEwGq--gM-me3Yudck2ailla5Q4osnYIHxd9dI4WtQ==)verifyFptype_idlive_idrT   rS   app_idmsTokenz4https://webcast.amemv.com/webcast/room/reflow/info/?z	&X-Bogus=r6   r7   )r   dataroomownerweb_ridzHTTP status error occurred: z/An exception occurred during get_live_room_id: )rC   r   r    r!   r"   	urlencoder/   r   rD   rE   rF   r*   raise_for_statusjsonHTTPStatusErrorrN   rP   status_code)rT   rS   r0   r`   r   apir.   rO   rP   	json_datarU   s              r   get_live_room_idzDouyinUtils.get_live_room_idi   s     #YQXYY!))GR"* C	F EV\\E[E[\bEcDde"--c22K&(
	S00<J((z2F E E&!'C!AA))+$MMO	 (09)D	E E E 3
EAE E E E
 $$ 	U:1::;Q;Q:RSTT 	SMaSQRR	Ss   A+E>-D
.E>;0D' +D,D' /DD1D8D' DD' 	E>D' DD' D$DD$ D' #E>$D' 'E;:"EE;(E66E;;E>r   )NN)NNN)r   r	   r
   r    
HEADERS_PCstaticmethodrG   dictr/   tuplerV   r_   rw   r   r   r   r   r      s@   VXS	GEVJ 
lc 
lD4K 
l3: 
l 
l 3 C$J PTW[P[ glosgs  2 ! !#* !dUYk !ehkoeo ! !F X\596: S  S#  S3QU:  S'+d{ S(,t S?B S  Sr   r   )rH   urllib.parser!   r'   rE    r   r   rN   r   r   r   r   r   <module>r~      s.    	    %	) 	|S |Sr   