
    ~<idB                     J    d Z ddlmZ ddlZddlZddlZ G d de          ZdS )un   
基于 nullbr.online API 的OK影视盒插件 
地址: https://nullbr.online/
使用电报直接登录注册
    )SpiderNc                   l    e Zd Zd Zd Zd Zd Zd ZddZd	 Z	d
 Z
d Zd Zd Zd Zd ZddZd ZdS )r   c                    d| _         d| _        d| _        | j        dd| _        dddd| _        g d	d
dddddddddddddddddddddddddddddddd d!dd"d#dd$d%dd&d'dd(d)dd*d+dd,d-dd.d/dd0d1dd2d3dd4d5dd6d7dd8d9dd:d;dd<d=dd>d?dd@dAddBdCddDdEddFdGddHdIddJdKddLdMddNdOddPdQddRdSddTdUddVdWddXdYddZd[dd\d]dd^d_dd`daddbdcddddeddfdgddhdiddjdkddldmddndoddpdqddrdsddtduddvdwddxdyddzd{dd|d}dd~ddddddddddddddddddddddddddddddddddddddddddddddd}g | _        i | _        |D ]@}d|d          }| j                            ||d         d           |d         | j        |<   Ad	| _        d S )Nzhttps://api.nullbr.com <Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36)zX-APP-ID
User-Agent   ⚡   🧲   🎬)ed2kmagnetvideoiD  u   🔥 热门电影 (IMDB))list_id	type_namei!  u   ⭐ 高分电影 (IMDB)i!8u   💥 动作片 (1980+)i8u   🚀 奇幻/科幻ilRu   ⚛️ 科幻电影ic8u   👻 恐怖片 (1960+)iMAu   🔪 亚洲恐怖i8Ru   💖 爱情片i#8u   🕵️ 悬疑片 (1980+)i8u+   👨‍👩‍👧‍👦 家庭片 (1980+)iRu   ⚔️ 战争电影ie u   🥋 亚洲武侠iRu   🏅 体育电影iRu   📜 传记片iRu   🏛️ 历史片i(Ru   🎵 音乐电影i1D u   🧸 儿童动画i6D u   👧 儿童电影i Du   🐻 动物电影i=Au   🧠 烧脑电影i5 u   🤯 最佳烧脑i) u   🌍 反乌托邦iLu   🧐 存在主义iLu   🤪 恶搞喜剧iBu   😂 最佳恶搞i]u   🇫🇷 法国情色i'5u   🔞 北美情色iQu   🔞 最佳情色 (2021)iu   🦸 漫威宇宙i  u   🔥 热门剧集 (IMDB)i  u   ⭐ 高分剧集 (IMDB)i<u   🚨 犯罪剧集i<u   👻 恐怖剧集iRu   ⚛️ 科幻剧集iRu   💖 爱情剧集iRu   🏛️ 历史剧集iWRu   ⚔️ 战争剧集i$Ru   📜 传记剧集i$Ru   🏅 体育剧集i[Ru   🎥 体育纪录片iRu   🎵 音乐剧集ĭXu   🔫 黑帮剧集i%<u   ⚖️ 犯罪主题iAu   🌈 LGBTQ+iMu   🏆 帝国100最佳i莎 u   🇭🇰 最佳港片i u   🌍 帝国500最佳iJ u   📜 死前必看1001部ivW u   🎞️ 死前必看100动漫iMu   ⚔️ 二战电影/剧集iPMu   ⏳ 二战编年史i0<u   🏛️ 历史主题iBBu   📰 真实事件改编iƾA u   🕰️ 时间旅行iN u   🌴 戛纳金棕榈奖i)y u   🏆 奥斯卡提名i u   🏆 奥斯卡获奖if9 u   🍅 烂番茄100最佳i3 u    🍅 烂番茄最佳爱情喜剧iu   🆕 烂番茄最佳2025ioBu   🍅 烂番茄最佳80年代iZ> u   📊 Reddit Top 250i3 u   🇷🇺 最佳俄罗斯iю u   🇮🇳 最佳宝莱坞ib9+u   😱 1000部最佳恐怖ix4Pu   📜 高分纪录片i% u   💻 黑客主题ie u   🏰 Disney+ix|u   💿 录像带商店i<+u   📈 高分电影 (<2010)i	,u   📈 高分电影 (>2010)isu   📺 高分剧集 (<2010)isu   📺 高分剧集 (>2010)iM u   🇯🇵 亚洲情色_日本list_r   r   )type_idr   )	api_urlapp_idapi_keyheadersresource_icons
categoriescategory_list_mapappendhome_list_id)selfnew_categories_dataitemr   s       '   /storage/emulated/0/纯福利/py1/NU.py__init__zSpider.__init__   s   /X
 

 
 
K
.HIIK
.GHHK
 !/GHHK
 !/CDD	K

 !/DEEK
 !/GHHK
 !/BCCK
 !/?@@K
 !/JKKK
 !/\]]K
 !/DEEK
  .ABBK
 !/BCCK
 !/?@@K
 !/BCCK
  !/BCC!K
"  .ABB#K
$  .ABB%K
& !/BCC'K
( !/BCC)K
* -@AA+K
, !/BCC-K
. !/BCC/K
0 !/BCC1K
2 !/BCC3K
4 !/FGG5K
6 !/BCC7K
8 !/IJJ9K
: !/BCC;K
<  .HII=K
>  .GHH?K
@ !/BCCAK
B !/BCCCK
D !/DEEEK
F !/BCCGK
H !/EFFIK
J !/DEEKK
L !/BCCMK
N !/BCCOK
P !/EFFQK
R !/BCCSK
T !/BCCUK
V !/DEEWK
X !}==YK
Z !/EFF[K
\  .EFF]K
^ -CDD_K
` -GHHaK
b  .MNNcK
d !/KLLeK
f !/DEEgK
h !/EFFiK
j !/HIIkK
l  .DEEmK
n -FGGoK
p  .DEEqK
r -CDDsK
t  .GHHuK
v  .PQQwK
x !/IJJyK
z !/MNN{K
|  .CDD}K
~  .HIIK
@  .HIIAK
B !/IJJCK
D !/EFFEK
F  .ABBGK
H  n==IK
J !/EFFKK
L !/JKKMK
N !/JKKOK
P !/JKKQK
R !/JKKSK
T  .LMMUK
Z !#' 	> 	>D/d9o//GO"""!+.$ $    /39oD"7++#    c                     dS )NNullBR_Magnet_Mod r   s    r   getNamezSpider.getNamev   s    ""r!   c                     d S Nr$   )r   extends     r   initzSpider.inity       r!   c                     d S r(   r$   )r   urls     r   isVideoFormatzSpider.isVideoFormat|   r+   r!   c                     d S r(   r$   r%   s    r   manualVideoCheckzSpider.manualVideoCheck   r+   r!   NFc                     | j          | }| j                                        }|r
| j        |d<   	 t	          j        |||d          }|j        dk    rd S |                                 |                                S # t          $ r Y d S w xY w)Nz	X-API-KEY
   )r   paramstimeouti  )
r   r   copyr   requestsgetstatus_coderaise_for_statusjson	Exception)r   endpointr3   	need_authr-   r   responses          r   _make_requestzSpider._make_request   s    )x)),##%% 	0#'<GK 	|CQSTTTH#s**t%%'''==??" 	 	 	44	s   #A? 'A? ?
BBc           	      f   |                     dd          }|r|                    d          rd| n|}| d|                     dd           }|                     d          p|                     d          pd	}|                     d
d          pdd d         }d}|                     dd	          dk    r|dz  }|                     dd	          dk    r|dz  }|                     dd	          dk    r|dz  }||                     dd          |pdd| d| d|                                 dS )Nposterr   /https://image.tmdb.org/t/p/w500_tmdbidvote_averagevoter   release_date   ed2k-flg   r	   
magnet-flgr
   	video-flgr   titlez1https://via.placeholder.com/300x450?text=No+Imageu   ⭐ )vod_idvod_namevod_picvod_remarks)r7   
startswithstrip)	r   r   
media_typeposter_pathrA   rP   rG   yearflagss	            r   _build_video_infozSpider._build_video_info   st   hhx,,DO  AT_TjTjknToTo  A@;@@@  vA99(B!7!799xx''@488F+;+;@q,,2BQB788J""a''UNE88L!$$))VOE88K##q((VOE"--T!T66666u66<<>>	
 
 	
r!   c                     d| j         iS )Nclass)r   )r   filters     r   homeContentzSpider.homeContent   s    ))r!   c           
          g }| j         }|                     d|           }|rTd|v rP|d         d d         D ]?}|                    |                     ||                    dd                               @d|iS )N/list/items   rV   movielist)r   r?   r   rZ   r7   )r   videosr   datar   s        r   homeVideoContentzSpider.homeVideoContent   s    #!!"47"4"455 	]GtOOWcrc* ] ]d44T488LRY;Z;Z[[\\\\r!   c           
         |rt          |          nd}| j                            |          }|s|                     |d|          S |                     d| d|i          }g }|rLd|v rH|d         D ]?}|                    |                     ||                    dd                               @|||r|                    dd          ndd	|r|                    d
d          nddS )NrK   Fr`   pagera   rV   rc   
total_page   total_itemsr   rd   ri   	pagecountlimittotal)intr   r7   searchContentPager?   r   rZ   )	r   cidpgr]   extr   rf   re   r   s	            r   categoryContentzSpider.categoryContent   s   !SWWW(,,S11 	:))#ub999!!"47"4"4vrlCC 	]GtOOW ] ]d44T488LRY;Z;Z[[\\\\6:A,22237>TXXmQ///Q
 
 	
r!   c                 N   |d         }d|v r|                     dd          \  }}nd}|}|                     d| d|           }|sdg iS ||                    dd          |                    d	          rd
|                    d	d           nd|                    dd          |                    dd          pdd d         d|                    d|                    dd                     d}g }g }|                    dd          dk    r;|dk    r|                     d| d| dd          }	g }
|	rd|	v rt          |	d         d          D ]\  }}|                    dd          }|                    dd|           }|                    dd          }|                    dd          }|r%| d| d| d }|
                    | d!|            |
r=|                    d"           |                    d#                    |
                     n0|                    d"           |                    | d| d$           |                    d%d          dk    ru|dk    r>|                     d&| d'd          }g }|rd(|v rt          |d(         d          D ]\  }}|                    d)d*          }|                    d+          pd,}|                    d-          dk    rd.nd}|                    dd/|           }t          j        d0d1|          }d| d | | |d d2          }|                    d(d          }|r|                    | d!|            |r=|                    d3           |                    d#                    |                     n0|                    d3           |                    | d| d4           |                    d5d          dk    ru|dk    r>|                     d&| d6d          }g }|rd7|v rt          |d7         d          D ]\  }}|                    d)d*          }|                    d+          pd,}|                    d-          dk    rd.nd}|                    dd8|           }t          j        d0d1|          }d| d | | |d d2          }|                    d7d          }|r|                    | d!|            |r=|                    d9           |                    d#                    |                     n0|                    d9           |                    | d| d:           |r2|r0d;                    |          |d<<   d;                    |          |d=<   d|giS )>Nr   rD   rK   rc   rB   rd   rN   r   rA   rC   z#https://via.placeholder.com/300x450overviewrH   rI   zRating:rG   rF   )rP   rQ   rR   vod_contentvod_yearrS   rM   z/videoTr=   r   sourceDirectnameRoutetypem3u8link[]$u
   🎬Online#z@videorJ   z/movie/z/ed2kr   sizezN/A
resolutionUnkzh_subCNz	ed2k Res z
[\[\]\(\)]rO   rk   u   ⚡Ed2kz@ed2krL   z/magnetr   zMagnet Res u
   🧲Magnetz@magnetz$$$vod_play_fromvod_play_url)splitr?   r7   	enumerater   joinresub)r   idsrP   rV   rE   rf   video_detail	play_fromplay_urlvideo_list_data
video_urlsidxvr|   r~   	link_typer   display_name	ed2k_data	ed2k_urlsr   r   resis_subcleaned_namereal_urlmagnet_datamagnet_urlss                               r   detailContentzSpider.detailContent   s   Q&==!'c1!5!5J JF!!";j";";6";";<< 	 B<"--UYU]U]^fUgUg  SQ(B9O9OQQQ  nS88J33."55;RaR@UTXXfdhh~r6R6R%S%SUU
 
 	88K##q((W$$"&"4"45T5T5Tf5T5T5T`d"4"e"e
" Hw/'A'A"+OG,Da"H"H H HQ!"x!:!: uuV]S]];;$%EE&&$9$9	 uuVR00 H.2+J+JV+J+Ji+J+J+JL&--.F.F.F.FGGG :$$\222OOCHHZ$8$8999  ...: > > > > >???88J""a''W$$ ../F/F/F/FRV.WW		 
K9!4!4%.y/@!%D%D 	K 	K	T#xx66"hh|44=)-(););q)@)@b#xx0AC0A0ABB')vmS$'G'G'R4'R'R#'Rv'R|CRC?P'R'R#'88FB#7#7# K%,,-I-Ix-I-IJJJ 9$$Y///OOCHHY$7$7888  +++: = = = = =>>>88L!$$))W$$"001J61J1J1JVZ0[[  
M8{#:#:%.{8/Da%H%H 	M 	M	T#xx66"hh|44=)-(););q)@)@b#xx0Cc0C0CDD')vmS$'G'G'R4'R'R#'Rv'R|CRC?P'R'R#'88Hb#9#9# M'..,/K/K/K/KLLL ;$$\222OOCHH[$9$9:::  ...: ? ? ? ? ?@@@ 	@ 	@,1JJy,A,AL)+0::h+?+?L(''r!   c                 N   dddddid}|                     d          s*|                     d          s|                     d          r||d	<   |S |                     d
          sd|v r||d	<   |S |                     d          s|                     d          r||d	<   |S d|v r|                    dd          \  }}d|v r|                    dd          \  }}nd}|}|dk    rd| d| d| }	nd| d| d| }	|                     |	d          }
|
r|dk    rd|
v r~|
d         rv|
d         D ]6}|                    d          dk    r|                    dd          |d	<    n7|d	         s-|
d         r%|
d         d                             dd          |d	<   n|dk    rd|
v r}|
d         ru|
d         D ]6}|                    d          dk    r|                    dd          |d	<    n7|d	         s-|
d         r%|
d         d                             dd          |d	<   n~|dk    rxd|
v rt|
d         D ]6}|                    d          dk    r|                    dd          |d	<    n7|d	         s-|
d         r%|
d         d                             dd          |d	<   |S )Nr   r   r   r   )parseplayUrlr-   headerzmagnet:?z	magnet://zed2k://r-   z
magnet:///zcache/thunder/zhttp://zhttps://@rK   rD   rc   tvrB   Tr{   r   r   r   r   r   r   r   )rT   r   r?   r7   )r   flagidvipFlagsresultvod_partresource_typerV   rE   r<   rf   r   s               r   playerContentzSpider.playerContent  sm   #%cd	
 
 ==$$ 	k(B(B 	bmmT]F^F^ 	F5MM==&& 	*:b*@*@F5MM==## 	r}}Z'@'@ 	F5MM"99&(hhsA&6&6#Hmh%-^^C%;%;"
FF$
!T!!DzDDFDD]DDDzDDFDD]DD%%h$%??D I F**v~~$v,~ $V " "88H--22,0HHVR,@,@F5M!E 3 "%= HT&\ H(,VQ(;(;FB(G(Gu"h..8t3C3CX3C $X " "88H--22,0HHXr,B,BF5M!E 3 "%= LT(^ L(,Xq(9(=(=h(K(Ku"g--'T// $W " "88F++v55,0HHVR,@,@F5M!E 6 "%= IT'] I(,Wa(8(<(<VR(H(Hur!   c           
      j   |rt          |          nd}|                     d||d          }g }|rLd|v rH|d         D ]?}|                    |                     ||                    dd                               @|||r|                    dd          ndd|r|                    d	d
          nd
dS )NrK   z/search)queryri   ra   rV   rc   total_pagesrk   total_resultsr   rm   )rq   r?   r   rZ   r7   )r   keyquickrt   rf   re   r   s          r   rr   zSpider.searchContentPageZ  s    !SWWW!!)sB-G-GHH 	]GtOOW ] ]d44T488LRY;Z;Z[[\\\\7;B-33359@TXXoq111q
 
 	
r!   1c                 0    |                      |||          S r(   )rr   )r   r   r   rt   s       r   searchContentzSpider.searchContenti  s    %%c5"555r!   c                     d S r(   r$   )r   r3   s     r   
localProxyzSpider.localProxyl  s    tr!   )NF)r   )__name__
__module____qualname__r    r&   r*   r.   r0   r?   rZ   r^   rg   rv   r   r   rr   r   r   r$   r!   r   r   r      s       f$ f$ f$P# # #         
 
 
(* * *     
 
 
$X( X( X(t< < <|
 
 
6 6 6 6    r!   r   )__doc__base.spiderr   r6   r:   r   r$   r!   r   <module>r      s|    
         				` ` ` ` `V ` ` ` ` `r!   