
    i7!                         S r SSKJr  SSKJr  SSKJrJrJrJ	r	  SSK
Jr  SSKr\R                  " S	S
5      (       a  SrOSr/ SQr1 Skr\" 5       r " S S\5      r " S S\5      rg)z Extractors for https://bunkr.si/   )	Extractor)LolisafeAlbumExtractor   )textutilconfig	exception)memcache    N)	extractorbunkrtldszG(?:bunkr:(?:https?://)?([^/?#]+)|(?:https?://)?(?:app\.)?(bunkr+\.\w+))z(?:bunkr:(?:https?://)?([^/?#]+)|(?:https?://)?(?:app\.)?(bunkr+\.(?:s[kiu]|c[ir]|fi|p[hks]|ru|la|is|to|a[cx]|black|cat|media|red|site|ws|org))))zbunkr.aczbunkr.cizbunkr.crzbunkr.fizbunkr.phzbunkr.pkzbunkr.pszbunkr.sizbunkr.skzbunkr.wszbunkr.blackz	bunkr.redzbunkr.mediaz
bunkr.site>	   bunkr.axbunkr.isbunkr.labunkr.rubunkr.subunkr.to	bunkr.cat	bunkrr.ru	bunkrr.suc                   p    \ rS rSrSrSrSrSrSrSr	\
S-   rS	rS
 rS rS rS rS rS rS rS rS rSrg)BunkrAlbumExtractor<   zExtractor for bunkr.si albumsr   zhttps://bunkr.sizhttps://get.bunkrr.suzhttps://apidl.bunkr.ruz{album_id}_{id|id_url|slug}z/a/([^/?#]+)zhttps://bunkr.si/a/IDc                     [         R                  " X5        U R                  S   =(       d    U R                  S   nU[        ;  a  SU-   U l        g g )Nr   r   https://)r   __init__groupsLEGACY_DOMAINSroot)selfmatchdomains      G/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/bunkr.pyr   BunkrAlbumExtractor.__init__F   sC    ''4Q14;;q>'"V+DI (    c                     [         R                  " U 5        U R                  S5      nU(       d  U R                  S-   nOUS   S:X  a  U R                  U-   nXl        SU l        g )Nendpointz/api/_001_v2r   /)r   _initr   root_apir(   offset)r!   r(   s     r$   r*   BunkrAlbumExtractor._initL   sU    $$T*;;z*}}~5Ha[C}}x/H r&   c                     Xl         U$ )N)r,   )r!   nums     r$   skipBunkrAlbumExtractor.skipX   s    
r&   c                 h   SUS'   SUS'     [         R                  " X40 UD6nUR                  S:  a  U$ UR                  S   nUS   S:X  a  U R                  U-   nMT  U R                  U5      u  pEU[        ;  a  Ms  U R                  R                  S	U5        S[$        R&                  " [        5      -   =U l        nU R                  R                  SU5        XE-   nM  ! [        R                   a  nUR                  S
:w  a  e U R                  U5      u  pE[        R                  U5        U R                  R                  SU5         [        R                  UR                  S5      S   5        [        (       d  [        R                   " S5      e S nAN! ["         a      S nAGNf = fS nAff = f)Nzutf-8encodingFallow_redirectsi,  Locationr   r)   z*Redirect to known CF challenge domain '%s'i  z"Added '%s' to CF challenge domainsr   z0All Bunkr domains require solving a CF challenger   zTrying '%s' as fallback)r   requeststatus_codeheadersr    _split
CF_DOMAINSlogdebugr	   	HttpErrorstatusaddDOMAINSremove
rpartitionAbortExtraction
ValueErrorrandomchoice)r!   urlkwargsresponser    pathexcs          r$   r6   BunkrAlbumExtractor.request\   s   $z$) ! P$,,TA&A''#-#O &&z2q6S=))c/C![[-
z)K#%,  *FMM',BBBDIHHNN4d;+CM " && P::$ "[[-
t$CTJPNN4??3#7#:; #7'77NP P # " PsM   (C  'C  C  >C   F14AF,
'F1!F,
F)!F,(F))F,,F1c           	         U R                  U R                   SU S35      R                  n[        R                  " [        R                  " [        R                  " USS5      5      5      n[        R                  " USS5      R                  S5      nU R                  U5      UU[        R                  " USS	5      [        U5      S
.4$ )N/a/z?advanced=1property="og:title" content=""zwindow.albumFiles = [z	</script>z
},
<span class="font-semibold">()album_id
album_name
album_sizecount)r6   r    r   unescapeextrsplit_extract_fileslen)r!   rT   pagetitleitemss        r$   fetch_albumBunkrAlbumExtractor.fetch_album   s    ||tyykXJkBCHHdmmDII13-8 9 : 		);88=h 	 ""5)# 995s<u:,
 
 	
r&   c              #     #    U R                   (       a   [        R                  " XR                   5      nU GH3  n [        R                  " USS5      R                  5       nU R                  U5      n[        R                  " [        R                  " USS5      R                  SS5      5      US'   [        R                  " [        R                  " USS5      R                  SS5      5      US	'   [        R                  " US
S5      US'   [        R                  " [        R                  " USS5      5      US'   U R                  [        R                  " USS5      S5      US'   Uv   GM6     g ! [        R                   a    e [         a  nU R                  R                  SUR                   R"                  U5        U R                  R%                  SX%S9  ['        U[        R(                  5      (       ah  UR*                  S:X  aQ  UR,                  R.                  R1                  U R2                  5      (       a  [        R4                  " S5      e S nAGM"   S nAGM)   S nAGM0  S nAff = f7f)Nz id: ,z	original:z,
z\''namezslug: slugzname: ".uuidzsize:  z ,
sizeztimestamp: "rP   z%H:%M:%S %d/%m/%Ydate%s: %sz%s)exc_infoi  zAlbum deleted)r,   r   advancer   rY   strip_extract_file
json_loadsreplace	parse_intparse_datetimer	   ControlException	Exceptionr;   error	__class____name__r<   
isinstancer=   r>   rI   rG   
startswithr+   rC   )r!   r_   itemdata_idfilerK   s         r$   r[   "BunkrAlbumExtractor._extract_files   s    ;;LL4EDE))D'37==?))'2#tyy+u0..5geS.A CV#tyy(E0++275#+> @V#yy)S *V#~~dii)V/-  .V#22499.#4/0C EV 
! " --  Ex)?)?EtT8c9#6#677

c)((33DMMBB#33ODD C * 8Es0   8I.D.E/)I./I+CI&I.&I++I.c                 R   U R                    SU 3nX R                   S.nU R                  U R                  SUSU0S9nUR                  S5      (       a=  S[	        US   S	-  5      -   n[
        R                  " US
   UR                  5       5      nOUS
   nUUSU0U R                  S.$ )Nz/file/)RefererOriginPOSTid)methodr8   json	encryptedSECRET_KEY_	timestampi  rG   r   )r}   id_url_http_headers_http_validate)	root_dlrequest_jsonr(   getstrr   decrypt_xorencode	_validate)r!   r|   refererr8   datakeyfile_urls          r$   ro   !BunkrAlbumExtractor._extract_file   s    \\N&	2%>  vw'+Wo ! 7 88K  #d;&74&?"@@C''USZZ\BHE{H '%('2"nn	
 	
r&   c                     UR                   (       a<  UR                  R                  S5      (       a  U R                  R	                  S5        gg)N)z
/maint.mp4z/maintenance-vid.mp4zFile server in maintenance modeFT)historyrG   endswithr;   warning)r!   rI   s     r$   r   BunkrAlbumExtractor._validate   s=     5 56!8 !8HH>?r&   c                 8    UR                  SS5      nUS U XS  4$ )Nr)      )index)r!   rG   poss      r$   r9   BunkrAlbumExtractor._split   s'    iiQ4Cy#d)##r&   )r(   r,   r    N)rx   
__module____qualname____firstlineno____doc__categoryr    r   r+   archive_fmtBASE_PATTERNpatternexampler   r*   r0   r6   r`   r[   ro   r   r9   __static_attributes__ r&   r$   r   r   <   s\    'HD%G'H/K_,G%G,
*X
$E>
&$r&   r   c                   L    \ rS rSrSrSrSr\S-   rSr	S r
\" SS	9S
 5       rSrg)BunkrMediaExtractor   z"Extractor for bunkr.si media linksmedia)z
{category}z(/[fvid]/[^/?#]+)zhttps://bunkr.si/f/FILENAMEc           	          U R                  U R                  U-   5      R                  n[        R                  " USS5      nU R	                  U5      n[        R
                  " [        R                  " [        R                  " USS5      R                  S5      S   5      5      US'   UR                  S5      S   US	'   [        R                  " US
S5      US'   U R                  [        R                  " USS5      5      u  pnU4UUUSS.4$ ! [         a?  nU R                  R                  SUR                  R                  U5        S0 4s S nA$ S nAff = f)Nzdata-file-id="rP   z<h1<>r   re   r)   rf   z/thumbs/rg   rh   rk   r   z href="../a/r   rS   )r6   r    r   rY   ro   unquoterX   rB   ru   r;   rv   rw   rx   _album_info)r!   rT   r]   r|   r}   rK   rU   rV   s           r$   r`   BunkrMediaExtractor.fetch_album   s7   
	<<		H 45::Dii&6<G%%g.D<<diieS7"",*S/!75 )6 7DL#..s3A6DL99T:s;DL
 ,0+;+;DII.#=' ,((jw"$$	
 
 	
  	HHNN8S]]%;%;SAr6M	s   CD 
E4EEEr   )keyargc           
      B   U(       a   U R                  U R                   SU 35      R                  nU[        R                  " [        R                  " [        R                  " USS5      5      5      [        R                  " USS5      4$ USS4$ ! [
         a     Nf = f)NrN   rO   rP   rQ   rR    )r6   r    r   rX   rY   ru   )r!   rT   r]   s      r$   r   BunkrMediaExtractor._album_info   s    	||tyykXJ$?@EEMM$--		=s1D #E FIId$CSI	  R  s   BB 
BBr   N)rx   r   r   r   r   subcategorydirectory_fmtr   r   r   r`   r
   r   r   r   r&   r$   r   r      s=    ,K#M11G+G
, Q   r&   r   )r   commonr   lolisafer   r   r   r   r   r	   cacher
   rE   r   r   r@   r   setr:   r   r   r   r&   r$   <module>r      sv    '  , , ,  	::$f--	2 	/  
 U
Y$0 Y$x* - * r&   