
    i,                         S r SSKJrJr  SSKJrJrJrJr  SSK	J	r	  SSK
Jr  Sr " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)z"Extractors for https://aryion.com/   )	ExtractorMessage   )textutildt	exception)cache    )parsedate_tzz&(?:https?://)?(?:www\.)?aryion\.com/g4c                       \ 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SS9S 5       rS rS rS rSS jrS rSS jrS rSrg)AryionExtractor   z Base class for aryion extractorsaryion)
{category}{user!l}z{path:I}z{id} {title}.{extension}z{id}z.aryion.com)phpbb3_rl7a3_sidzhttps://aryion.comc                 R    [         R                  " X5        US   U l        SU l        g )Nr   T)r   __init__user	recursive)selfmatchs     H/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/aryion.pyr   AryionExtractor.__init__   s"    4'!H	    c                     U R                  U R                  5      (       a  g U R                  5       u  pU(       a!  U R                  U R	                  X5      5        g g N)cookies_checkcookies_names_get_auth_infocookies_update_login_impl)r   usernamepasswords      r   loginAryionExtractor.login"   sN    d0011!002 0 0 DE r   i u r   )maxagekeyargc                 .   U R                   R                  SU5        U R                  S-   nUUSS.nU R                  USUS9nSUR                  ;  a  [
        R                  " 5       eU R                   Vs0 s H  ofUR                  U   _M     sn$ s  snf )NzLogging in as %sz/forum/ucp.php?mode=loginLogin)r$   r%   r&   POST)methoddatas%   You have been successfully logged in.)	loginforootrequestcontentr	   AuthenticationErrorr    cookies)r   r$   r%   urlr.   responsecs          r   r#   AryionExtractor._login_impl*   s    ((3ii55  
 <<F<>38;K;KK//11040B0BC0B18##A&&0BCCCs   6Bc              #     #    U R                  5         U R                  5       nU R                  5        H  nU R                  U5      =n(       aG  U(       a  UR	                  U5        [
        R                  SU4v   [
        R                  US   U4v   Mb  USL d  Mi  U R                  (       d  M|  U R                  S-   nS[        0nU R                  XB-   5       H  n[
        R                  XB-   U4v   M     M     g 7f)N r6   F	/g4/view/
_extractor)r&   metadataposts_parse_postupdater   	DirectoryUrlr   r1   AryionPostExtractor_pagination_paramsQueue)r   r.   post_idpostbases        r   itemsAryionExtractor.items:   s     

}}zz|G''00t0KK%''T11kk4;444>>>yy;.$&9:#66t~FG!--==  G $s   BC<C</AC<c                     g)zYield relevant post IDsN r   s    r   r?   AryionExtractor.postsJ       r   c                     g)zReturn general metadataNrM   rN   s    r   r>   AryionExtractor.metadataM   rP   r   Nc              #   :  #    Uc  SS0nO)[         R                  " UR                  S5      S5      US'   Uc  SU-   n U R                  XS9R                   nSn[         R                  " XSU5       H  nUS-  nUv   M     US:  a  SU;  a  g US==   S-  ss'   M^  7f)Npr   zclass='gallery-item' id=paramsr   (   >Next &gt;&gt;<)r   	parse_intgetr2   extract_iter)r   r6   rV   needlequotepagecntrG   s           r   rE   "AryionExtractor._pagination_paramsP   s     >1XF..C!<F3K>/%7F<<<388DC,,T5Aq B Rx-T93K1K s   BBc              #     #     U R                  U5      R                  n[        R                  " USS5       S h  vN   UR                  S5      nUS:  a  g U R                  [        R
                  " USSU5      -   nM{   ND7f)Nzthumb' href='/g4/view/'zNext &gt;&gt;r   href=')r2   r   r[   findr1   rextr)r   r6   r^   poss       r   _pagination_next AryionExtractor._pagination_nexte   sr     <<$))D((/GMMM))O,CQw))djjxcBBC Ms   8BA?ABc              #   F  #    Uc  SU R                   S'   OHU SU 3n[        R                  " U5      =U R                   S'   nU R                  R	                  SU5        SS0n U R                  XS9R                  nSn[        R                  " US	S
5       H  nUS-  n[        R                  " USS5      S:X  a  [        R                  " USS5      R                  S5      S   nUc
  [        5       nX#;  a\  UR                  U5        U R                  (       a  U R                  XU5       S h  vN   M  U R                  R	                  SU5        M  M  [        R                  " USS5      v   M     US:  a  SU;  a  OUS==   S-  ss'   GM,  SU R                   S'   g  Nq7f)Nr;   folder/zDescending into folder '%s'rT   r   rU   r   z<li class='gallery-itemz</li>zdata-item-type=""Foldersrc   rb   r   zSkipping folder '%s'zdata-item-id='rW   rX   )kwdictr   unquoter/   debugr2   r[   extr
rpartitionsetaddr   _pagination_folders)r   r6   rj   seenrV   r^   r_   items           r   ru   #AryionExtractor._pagination_folderso   s    >$&DKK!E6(#C-1\\&-AADKK!FHHNN8&Aq<<<388DC))3W>q99T#5s;yH!YYtXs;FFsKANF|"u)(>>'+'?'? #T(3 3 3 !HHNN+A6J * ))D*:C@@>" Rx-T93K1K/ 2 !#H3s   D+F!-F.A2F!c                    U R                    SU 3nU R                  USSS9 nUR                  S:  a;  U R                  R	                  SXR                  UR
                  5         S S S 5        g UR                  nUS   S;   a
   S S S 5        gUS	   n[        R                  " US
S5      R                  S5      u  pgnU(       d  XpUR                  S5      n	US   n
U
S   S:w  a  U
S S  SU
SS  S3n
S S S 5        U R                    SU 3n[        R                  " U R                  U5      R                  5      n[        R                  " U" SS5      5      R                  S5      u  pn0 S[        R                  " U5      _SU_SU R                  =(       d    U_SU_SU_S[        R                  " U" SS5      5      _S[        R                  " U" SS 5      5      S!S"S#2   _S$[         R"                  " [%        W
5      S S% 6 _S&[        R                  " W	5      _S'[        R                  " U" S(S5      R'                  S)S*5      5      _S+[        R                  " U" S,S-5      5      _S.[        R                  " U" S*S5      5      _S/[        R                  " U" S0S5      5      _S1[        R                  " U" S2S5      5      _S3[        R                  " U" S4S55      5      _S6W_S7W_S8U
0E$ ! , (       d  f       GN= f)9Nz/g4/data.php?id=HEADF)r-   fatali  z!Unable to fetch post %s ('%s %s')zcontent-type)zapplication/x-folderzapplication/x-comic-folderz"application/x-comic-folder-nomergezcontent-dispositionz
filename="rl   .zcontent-lengthzlast-modified   :   z GMTr<   z<title>g4 :: <z by idr6   r   titleartistdescriptionz#property="og:description" content="pathzcookiecrumb'>z</span   r   date   sizeviewsz
Views</b>:,r;   widthzResolution</b>:xheightcommentszComments</b>:	favoriteszFavorites</b>:tagszclass='taglist'>z</span>filename	extension_http_lastmodified)r1   r2   status_coder/   warningreasonheadersr   rq   rr   rZ   extract_fromunescaperY   r   
split_htmlr   datetimer   replace)r   rG   r6   r7   r   cdisfname_extclenlmodpost_urlrq   r   r   s                  r   r@   AryionExtractor._parse_post   s9   +G95\\#fE\:h##s*  7118??D  ;: &&G ~& + 
  ;:$ 01D IIdL#>II#NMEc s ;;/0D ?+DBx3s)Ad2bk]$7; ;> ii[	'3  h!7!<!<===S*" ##-:f#5 	&
dnnW-
c
 dii)6
 e	

 f
 4==5s*< =
 dood'+ ,,-bF4
 bkk<#5bq#9:
 dnnT*
 dnnT,%<%D%DS"%MN
 dnnT*;S%AB
 dnnT"c]3
 _c(BC
  -=s(CD!
" .@))LM#
$ %
& '
( !$)
 	
K ;:s   AK)/K)A%K))
K8)r   r   )NNrb   )NN)__name__
__module____qualname____firstlineno____doc__categorydirectory_fmtfilename_fmtarchive_fmtcookies_domainr    r1   r   r&   r
   r#   rJ   r?   r>   rE   rg   ru   r@   __static_attributes__rM   r   r   r   r      su    *H:M-LK"N)MD
F (1%D &D> &&*C"#H<
r   r   c                   @    \ rS rSrSrSrSr\S-   rSr	S r
S rS	 rS
rg)AryionGalleryExtractor   z.Extractor for a user's gallery on eka's portalgalleryTz./(?:gallery/|user/|latest.php\?name=)([^/?#]+)z"https://aryion.com/g4/gallery/USERc                 @    SU l         U R                  SS5      U l        g )Nr   r   T)offsetconfigr   rN   s    r   _initAryionGalleryExtractor._init   s    [$7r   c                 T    U R                   (       a  gU =R                  U-  sl        U$ )Nr   )r   r   )r   nums     r   skipAryionGalleryExtractor.skip   s    >>s
r   c                    U R                   (       a,  U R                   SU R                   3nU R                  U5      $ U R                   SU R                   3n[        R
                  " U R                  U5      U R                  5      $ )Nz/g4/gallery/z/g4/latest.php?name=)r   r1   r   rE   r   advancerg   r   r   r6   s     r   r?   AryionGalleryExtractor.posts   sk    >>YYK|DII;7C**3//YYK3DII;?C<< 5 5c :DKKHHr   )r   r   N)r   r   r   r   r   subcategorycategorytransferBASE_PATTERNpatternexampler   r   r?   r   rM   r   r   r   r      s0    8KNNG2G8Ir   r   c                   >    \ rS rSrSrSrSrSr\S-   r	Sr
S rS	 rS
rg)AryionFavoriteExtractor   z(Extractor for a user's favorites galleryfavorite)r   r   r   z{folder}zf_{user}_{id}z"/favorites/([^/?#]+)(?:/([^?#]+))?z$https://aryion.com/g4/favorites/USERc                 2    U R                  SS5      U l        g )Nr   T)r   r   rN   s    r   r   AryionFavoriteExtractor._init   s    [$7r   c                 t    U R                    SU R                   3nU R                  XR                  S   5      $ )Nz/g4/favorites/r   )r1   r   ru   groupsr   s     r   r?   AryionFavoriteExtractor.posts   s3    >$))5''[[^<<r   )r   N)r   r   r   r   r   r   r   r   r   r   r   r   r?   r   rM   r   r   r   r      s.    2KGM!KBBG4G8=r   r   c                   4    \ rS rSrSrSrSr\S-   rSr	S r
Srg	)
AryionWatchExtractor   z)Extractor for your watched users and tagswatch)r   r   z/messagepage\.php()z%https://aryion.com/g4/messagepage.phpc                     U R                  U R                  5      (       d  [        R                  " SS5      eU R                  R                  SSSS9  U R                  S-   nU R                  US SS	5      $ )
N)zusername & passwordzauthenticated cookieszwatched Submissionsg4p_msgpage_styleplainz
aryion.com)domainz/g4/messagepage.phpzdata-item-id="rl   )r   r    r	   AuthRequiredr5   rs   r1   rE   r   s     r   r?   AryionWatchExtractor.posts  su    !!$"4"455((@%' ' 	,glKii//&&sD2BCHHr   rM   N)r   r   r   r   r   r   r   r   r   r   r?   r   rM   r   r   r   r      s%    3K/M33G5GIr   r   c                   D    \ 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)AryionTagExtractori  z*Extractor for tag searches on eka's portaltag)r   r   z{search_tags}zt_{search_tags}_{id}z/tags\.php\?([^#]+)z&https://aryion.com/g4/tags.php?tag=TAGc                 \    [         R                  " U R                  5      U l        S U l        g r   )r   parse_queryr   rV   rN   s    r   r   AryionTagExtractor._init  s    &&tyy1	r   c                 <    SU R                   R                  S5      0$ )Nsearch_tagsr   )rV   rZ   rN   s    r   r>   AryionTagExtractor.metadata  s    t{{u566r   c                 V    U R                   S-   nU R                  XR                  5      $ )Nz/g4/tags.php)r1   rE   rV   r   s     r   r?   AryionTagExtractor.posts  s%    ii.(&&sKK88r   )rV   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r>   r?   r   rM   r   r   r   r     s3    4K;M(K33G6G79r   r   c                   >    \ rS rSrSrSrSrSr\S-   r	Sr
S rS	 rS
rg)AryionSearchExtractori!  z&Extractor for searches on eka's portalsearch)r   searchesz5{search[prefix]}{search[q]|search[tags]|search[user]}z<s_{search[prefix]}{search[q]|search[tags]|search[user]}_{id}z/search\.php\?([^#]+)z;https://aryion.com/g4/search.php?q=TEXT&tags=TAGS&user=USERc                     [         R                  " U R                  5      nS0 UESUR                  S5      (       a  S0E0$ UR                  S5      (       a  S0E0$ UR                  S5      (       a  S0E0$ S0E0$ )	Nr   prefixqr;   r   t_r   u_)r   r   r   rZ   )r   rV   s     r   r>   AryionSearchExtractor.metadata+  s    !!$)), 

VZZ__r
  	  &zz&11t
  	  &zz&11t	
  	 8:	
  	r   c                 Z    U R                    SU R                   3nU R                  U5      $ )Nz/g4/search.php?)r1   r   rg   r   s     r   r?   AryionSearchExtractor.posts4  s+    ?499+6$$S))r   rM   N)r   r   r   r   r   r   r   r   r   r   r   r>   r?   r   rM   r   r   r   r   !  s3    0K>M@K55GKG*r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	rD   i9  z.Extractor for individual posts on eka's portalrH   z/view/(\d+)z https://aryion.com/g4/view/12345c                 .    U R                   S sol         U4$ r   r   )r   rG   s     r   r?   AryionPostExtractor.posts?  s    !YYzr   r   N)r   r   r   r   r   r   r   r   r   r?   r   rM   r   r   rD   rD   9  s    8K^+G0Gr   rD   N)r   commonr   r   r;   r   r   r   r	   r
   email.utilsr   r   r   r   r   r   r   r   rD   rM   r   r   <module>r      sy    ) & ( (  $8|
i |
~I_ I4=o = I? I"9 9(*O *0/ r   