
    WjA                     X   d dl Z d dlZd dlZd dlZd dlZd dlZdZdZdZ	 e j                  de j                        Z e j                  de j                        Z e j                  de j                        Z e j                  de j                        Zd	gZg d
Zg dZddgZdgZd Zd Zd Zd Zd ZedddfdZeddfdZd Zd Zd Zd Zd Z d Z!d Z"e#dk(  rNd dl$Z$ e%e$jL                        d kD  re$jL                  d    nd!Z' e"e'      Z( e) ejT                  e(d"d#$             yy)%    NzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36zokhttp/5.0.0-alpha.6zrMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36zEhttps?://[^"\'>\s]+?(?:m3u8|mp4|mpd|master\.txt|\.txt)(?:[^"\'>\s]*)?zfile\s*:\s*["']([^"']+)["']z-(?:file|source|src)\s*[:=]\s*["']([^"']+)["']z2["'](?:file|src|source)["']\s*:\s*["']([^"']+)["']zscdns.io)zmwdy.cczvidspeed.orgz
vidoba.org)zvidtube.zvidtube.onezvidtube.camzliiivideo.comzvipserver.liiivideo.comzmp4plus.orgc                     t        j                  t        | xs d      j                  dd            j	                         S )N \//)htmlunescapestrreplacestrip)us    "/var/www/html/Extract/extractor.py	clean_urlr   I   s2    ==AGUC(eg    c                 f    t        |       j                         t        fdt        D              S )Nc              3   &   K   | ]  }|v  
 y wN .0domainlows     r   	<genexpr>zbad_url.<locals>.<genexpr>R   s       	#   )r   loweranyBAD_DOMAINS)r   r   s    @r   bad_urlr   O   s/    
A,


C !  r   c                 R   t        |       j                         } t        j                  j	                  |       j
                  j                         }|j                  d      sd| v s|j                  d      sd| v ry|j                  d      sd| v ry|j                  d	      sd
| v ryy)N.m3u8z.m3u8?.txt
master.txtm3u8.mpdz.mpd?mpd.mp4z.mp4?mp4unknown)r   r   urllibparseurlsplitpathendswith)r   r+   s     r   detect_typer-   X   s    !A<<  #((..0D 	gq=== 1 	fa< 	fa<r   c                 N   t        j                  t        | xs d            j                  dd      } g }t        j                  |       D ]<  }t        |      }|j                  d      s t        |      r,|j                  |       > t        t        j                  |            S )Nr   r   r   http)r   r   r	   r
   MEDIA_REfindallr   
startswithr   appendlistdictfromkeys)textoutmatchlinks       r   extract_urlsr;   t   s    ==DJBgeS 	 C!!$'  OOF#DMJJt c"##r   c                     	 t        j                  |       }t        j                  |d      S # t        $ r	 | xs dcY S w xY w)NF)ensure_asciir   )jsonloadsdumps	Exception)bodydatas     r   normalize_api_responserD      sG    	zz$zz
 	

  zrs   +. A A    r   c                 j   ddddddddd	d
dt        |      dd| ddddg}|r|j                  dd| g       |r0|j                         D ]  \  }}|j                  d| d| g        |j                  |        t	        j
                  ||dz   t        j                        j                  dd      S )Ncurl-sS-L--compressed--retry3--retry-delay1--connect-timeout10
--max-time-HUser-Agent: zAccept: */*z"Accept-Encoding: gzip, deflate, br	Referer: z:    timeoutstderrutf-8ignore)r	   extenditemsr3   
subprocesscheck_outputDEVNULLdecode)urluarW   refererextra_headerscmdkeyvalues           r   curl_getrh      s     	3Tc'lRD!m2C 

IgY'
 	 '--/ 	JCJJRw' 	
 JJsO""!!! f	r   c                 J   t         j                  j                  |      }ddddddddd	d
dt        |      dddd| ddg}|r|j	                  dd| g       |j	                  d|| g       t        j                  ||dz   t
        j                        j                  dd      S )NrG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   z-XPOSTrR   rS   z/Content-Type: application/x-www-form-urlencodedrT   z--datarU   rV   rY   rZ   )	r(   r)   	urlencoder	   r[   r]   r^   r_   r`   )ra   rC   rb   rW   rc   	post_datare   s          r   curl_post_formrm      s     &&t,I 	3Tc'lfRD!9C 

IgY'
 	 JJ) 
 ""!!! f	r   c                     t        |       }| j                         }d}|dk(  r|dz  }n|dk(  r|dz  }n
|dk(  r|dz  }d|v r|d	z  }d
|v r|dz  }d|v r|dz  }d|v r|dz  }d|v r|dz  }d|v r|dz  }|S )Nr   r"   x   r$   Z   r&   P   master   1080   720
   480rU   playlistindex)r-   r   )r:   	link_typer   scores       r   
score_linkr}      s    D!I
**,CEF	e		e	3}||
S#~
Lr   c                     	 t        | t        d|       }|syt        d|| dt        d|       }t	        |      S # t
        $ r Y yw xY w)NrE   rc   r   z1https://hrrejhp.com/scrapeamine/scriptEgybest.phpcontentra   rh   UArm   	OKHTTP_UArD   rA   ra   	page_htmlrB   s      r   extract_egybestr     sk    	
	 , % 

 &d++    : !: 	AAc                     	 t        | t        d|       }|syt        d|| dt        d|       }t	        |      S # t
        $ r Y yw xY w)NrE   r   r   z/https://hrrejhp.com/scrapefinal/vidtubepost.phpr   r   r   s      r   extract_vidtuber   .  sk    	
	 * % 

 &d++ r   c                    	 t         j                  j                  | d      }d|z   }t        |t        d|       }|syt        j                  |      j                  dd      j                         }t        j                  |      }|r8t        |j                  d            }|j                  d	      rt        |      s|S t        |      }|r|j!                  t"        d
       |d   S t%        |      S # t&        $ r Y yw xY w)u   
    يرسل رابط StreamWish إلى API:

    https://hrrejhp.com/scrapefinal/
    streamwish.php?api=...

    والرد قد يكون مثل:

    file:"https://domain/.../master.txt"
    r   safe3https://hrrejhp.com/scrapefinal/streamwish.php?api=rE   r   r   r      r/   Trf   reverser   )r(   r)   quoterh   r   r   r   r
   r   STREAMWISH_FILE_REsearchr   groupr2   r   r;   sortr}   rD   rA   )ra   encoded_urlapi_urlrB   r9   	final_urllinkss          r   extract_streamwishr   L  s   7ll(( ) 
. 	 	
 }}

'
 %' 	 #))$/!AI
 $$V,	*  T"JJ  
 8O%d++ s#   ;C4 BC4  (C4 )
C4 4	D ?D c                 `   	 t        | t        d| dddddd      }|sy	t        j                  |      j	                  d
d      }g }t
        j                  |      D ]K  }t        |      }|j                  d      s t        |      r,t        |      dk7  s;|j                  |       M t        j                  |      D ]K  }t        |      }|j                  d      s t        |      r,t        |      dk7  s;|j                  |       M |j                  t        |             g }|D ]?  }t        |      }|rt        |      st        |      dk(  r*||vs/|j                  |       A |j                  t         d       |rdj#                  |      S t%        |      S # t&        $ r Y y	w xY w)u   
    استخراج رابط الفيديو من mp4plus.org.

    يستخدم نفس User-Agent وReferer الخاصين
    بطلب صفحة المشغل.
    rE   zhttps://mp4plus.orgiframenavigatezsame-originrN   )OriginzSec-Fetch-DestzSec-Fetch-ModezSec-Fetch-SitezUpgrade-Insecure-Requests)ra   rb   rW   rc   rd   r   r   r   r/   r'   Tr   
)rh   
MP4PLUS_UAr   r   r
   MP4PLUS_FILE_REr1   r   r2   r   r-   r3   MP4PLUS_SOURCES_REr[   r;   r   r}   joinrD   rA   )ra   r   foundr9   r:   uniques         r   extract_mp4plusr     s   X/"*","/-0
	 MM

'
 	  %,,
 
	#E U#D '%2T"
	# (//
 
	#E U#D '%2T"
	# 	#	

  	$DT?D 4=t$	16!d#	$ 	 	 	

 99V$$ &
 	
  sI   F! AF! ;F! F! AF! F! *F! 9AF! <F! 
F! !	F-,F-c                 &   | j                         t        j                  j                  | d      }dv rd|z   S dv rd|z   S dv rd|z   S d	v rd
|z   S t	        fdt
        D              rd|z   S t	        fdt        D              rd|z   S | S )Nr   r   zfasel-hd.comz,https://hrrejhp.com/scripttestfasel.php?api=streamwish.r   zupdown.z/https://hrrejhp.com/scrapefinal/updown.php?api=zuqload.z/https://hrrejhp.com/scrapefinal/uqload.php?api=c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zapi_target.<locals>.<genexpr>         	#r   z.https://hrrejhp.com/scrapefinal/turki.php?api=c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zapi_target.<locals>.<genexpr>"  r   r   z4https://hrrejhp.com/scrapefinal/scriptalvid.php?api=)r   r(   r)   r   r   TURKI_DOMAINSALVID_DOMAINS)ra   r   r   s     @r   
api_targetr     s    
))+C,,$$ % K
 '	
 .	
 C*	
 C*	
  # 
)	
  # 
/	
 Jr   c                    t        j                          }g }	 t        |       } | rt        |       r*d| ddd g dt        t        j                          |z
  d      dS | j	                         g }dv sdv sdv sj                  d	      sd
v r|j                  |        nt        fdt        D              rt        |       }|r|j                  |       ndv rt        |       }|r|j                  |       nt        fdt        D              rt        |       }|r|j                  |       ndv rt        |       }|rz|j                  |       nht        |       }d|v rt        |t         d|       }n+d|v rt        |t         d|       }nt        |t"        d|       }|j                  t%        |             |D ]\  }t        |      }|j'                  d      rd|vrt)        |      dk7  r|g}n{t+        |      }|j-                         D ]?  }t        |      }|j'                  d      s t)        |      dk7  s/|j                  |       A t/        t0        j3                  |            }|D ]  }t        |      }|rt        |      rt)        |      }	|	dk(  r-t5        |      }
|j                  ||	t        fdt        D              rdnddd|
t        fdt        D              r| ndt        fdt        D              rt6        nt"        d        _ i }|D ]%  }|d   }||vr|||<   |d   ||   d   kD  s!|||<   ' t9        |j;                         d  d!"      }t=        |      | dt?        |      |r|d   nd |dt        t        j                          |z
  d      d#S # t@        $ r=}d| tC        |      dd g dt        t        j                          |z
  d      dcY d }~S d }~ww xY w)$NFzbad or empty urlr      )okpageerrorcountbestresultsnetworkCounttimer   r%   r#   r    r!   c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zextract.<locals>.<genexpr>S        
 cM
r   zegybestvid.c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zextract.<locals>.<genexpr>d  r   r   r   z!hrrejhp.com/scrapefinal/turki.phprE   r   z&hrrejhp.com/scrapefinal/streamwish.phpr/   r   r'   c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zextract.<locals>.<genexpr>         & #cMr   zmp4plus-curlzapi-curlr      c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zextract.<locals>.<genexpr>  r   r   c              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r   zextract.<locals>.<genexpr>  r   r   )ra   typesourcecontentTypestatusr|   rc   	useragentra   r|   c                     | d   S )Nr|   r   )items    r   <lambda>zextract.<locals>.<lambda>  s
    T'] r   Tr   )r   r   titler   r   r   r   r   )"r   r   r   roundr   r,   r3   r   MP4PLUS_DOMAINSr   r   VIDTUBE_DOMAINSr   r   r   rh   r   r   rD   r2   r-   r;   
splitlinesr4   r5   r6   r}   r   sortedvaluesboollenrA   r	   )ra   startr   bodiesrB   
target_urlr   liner:   r{   r|   r   r   excr   s                 @r   extractr   /  sb   IIKEEe
ngcl+ !IIK%'  iik sN}}||F#s"MM#  
)
 
 #3'Dd# c!"3'Dd#  
)
 
 #3'Dd# c!%c*Dd# $CJ(  	-  	  	 MM&t,  G	DT?D '$%2 %T* !OO- +D$T?D /'-:T*+ MM%(  + wt}'-		)"4(%  *9  '
 (#%!"  *9  
    *9  #
  9 +9G	R  
	$D;D6!#t W,w'(  $t
	$ MMO*
 u+Z  a		e#
 	
$  
X		e#
 	

s9   AN+ GN+ 0N+ ?DN+ A&N+ +	O142O,&O1,O1__main__r   z+https://mp4plus.org/embed-fnayiwmnh5ta.htmlFr   )r=   indent)+rer   r   r]   r>   urllib.parser(   r   r   r   compileIr0   r   r   r   r   r   r   r   r   r   r   r-   r;   rD   rh   rm   r}   r   r   r   r   r   r   __name__sysr   argvtest_urlresultprintr@   r   r   r   <module>r      s   	     %  #	(  2:: DD	  RZZ&DD 
 "**8DD
  RZZ=DD    
8$&
 
)^ )X!H<<CL`F7ti
X z sxx=1 	&	  XF	

	
 r   