
    ip                         S r SSKJrJr  SSKJrJr  Sr " S S\5      r " S S	\5      r	 " S
 S\5      r
 " S S\5      rg)z!Extractors for https://xfolio.jp/   )	ExtractorMessage   )text	exceptionz%(?:https?://)?xfolio\.jp(?:/[^/?#]+)?c                   F    \ 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)XfolioExtractor   z Base class for xfolio extractorsxfoliozhttps://xfolio.jpz
.xfolio.jp)z
{category}z{creator_slug}z	{work_id}z {work_id}_{image_id}.{extension}z{work_id}_{image_id})g      ?g      ?c                     [         R                  [        l        U R                  S5      (       d  U R                  R                  S5        g g )N)xfolio_sessionz 'xfolio_session' cookie required)r   _initr	   cookies_checklogerror)selfs    H/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/xfolio.pyr   XfolioExtractor._init   s6     )!!"566HHNN=> 7    c              #   r   #    S[         0nU R                  5        H  n[        R                  X!4v   M     g 7f)N
_extractor)XfolioWorkExtractorworksr   Queue)r   dataworks      r   itemsXfolioExtractor.items    s/     12JJLD--++ !s   57c                     [         R                  " X40 UD6nSUR                  ;   a  [        R                  " S5      eU$ )Nz/system/recaptchazBot check / CAPTCHA page)r   requesturlr   AbortExtraction)r   r!   kwargsresponses       r   r    XfolioExtractor.request%   s:    $$T9&9(,,.++,FGGr    N)__name__
__module____qualname____firstlineno____doc__categoryrootcookies_domaindirectory_fmtfilename_fmtarchive_fmtrequest_intervalr   r   r    __static_attributes__r&   r   r   r	   r	      s8    *HD!NAM5L(K!?
,
r   r	   c                   8    \ rS rSrSr\S-   rSrS rS r	S r
Srg	)
r   .   r   z /portfolio/([^/?#]+)/works/(\d+)z,https://xfolio.jp/portfolio/USER/works/12345c              #     #    U R                   u  pU R                   SU SU 3nU R                  U5      R                  nU R	                  U5      nU R                  XE5      n[        U5      US'   [        R                  SU4v   [        US5       H2  u  US'   nUR                  U5        [        R                  US   U4v   M4     g 7f)N/portfolio/z/works/count r   numr!   )groupsr-   r    r   _extract_data_extract_fileslenr   	Directory	enumerateupdateUrl)r   creatorwork_idr!   htmlr   filesfiles           r   r   XfolioWorkExtractor.items3   s     ;;;wiwwi@||C %%!!$'##D/E
WT))!*5!!4DKKK++tE{D00 "5s   CCc                 `   U R                   u  p#[        R                  " U5      n[        R                  " U" SS5      R	                  S5      S   5      [        R                  " U" SS5      5      U" SS5      U" SS5      U" SS5      [        R                  " U" S	S5      5      U" S
S5      UUS.	$ )Nzproperty="og:title" content=""z -     z#property="og:description" content="z data-creator-id="z data-creator-user-id="z data-creator-name="z data-creator-profile="/series/)	titledescription
creator_idcreator_useridcreator_namecreator_profile	series_idcreator_slugrD   )r;   r   extract_fromunescape
rpartition)r   rE   rC   rD   extrs        r   r<   !XfolioWorkExtractor._extract_dataA   s    ;;  &#}}T/.66@j6G.K  L#}}T5s.<  =#$8#>#$=sC#$:C@#}}T)3.0  1#J4&&
 	
r   c                 L   / nUS   n[         R                  " USS5       H  n[         R                  " USS5      nU(       d  U R                  R	                  SU5        M@  UR                  USU R                   SU S	U S
U S3SU R                   SU S	U 30S.5        M     U$ )NrD   zclass="article__wrap_img</div>z/fullscale_image?image_id=&z#%s: 'fullscale_image' not availablejpgz/user_asset.php?id=z	&work_id=z&work_image_id=z&type=work_imageReferer)image_id	extensionr!   _http_headers)r   extract_iterrX   r   warningappendr-   )r   rE   r   rF   rD   imgr_   s          r   r=   "XfolioWorkExtractor._extract_filesS   s    y/$$0(<Cyy&BCHH  97DLL%"99+%8
)")?8*<LN"+yyk "!!)
)G9>"@ <$ r   r&   N)r'   r(   r)   r*   subcategoryBASE_PATTERNpatternexampler   r<   r=   r3   r&   r   r   r   r   .   s&    K@@G<G1
$r   r   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)XfolioUserExtractorl   userz+/portfolio/([^/?#]+)(?:/works)?/?(?:$|\?|#)z https://xfolio.jp/portfolio/USERc              #     #    U R                    SU R                  S    S3n U R                  U5      R                  n[        R                  " USS5       H  n[        R
                  " USS5      v   M     [        R
                  " USS	5      n[        R
                  " USS5      nU(       d  g [        R                  " U5      nM  7f)
Nr7   rK   z/worksz<div class="postItemr[    href="rJ   z class="pager__list_nextz</li>)r-   r;   r    r   rb   rX   rV   )r   r!   rE   itempagers        r   r   XfolioUserExtractor.worksq   s     ;t{{1~&6f=<<$))D))0(<iii55< IId$>HE))E9c2C--$C s   CCr&   N
r'   r(   r)   r*   rg   rh   ri   rj   r   r3   r&   r   r   rl   rl   l   s    KKKG0G%r   rl   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)XfolioSeriesExtractor   seriesz!/portfolio/([^/?#]+)/series/(\d+)z-https://xfolio.jp/portfolio/USER/series/12345c                    U R                   u  pU R                   SU SU 3nU R                  U5      R                  n[        R                  " USS5       Vs/ s H  n[        R
                  " USS5      PM     sn$ s  snf )Nr7   rL   zclass="listWrap--title">z</a>rp   rJ   )r;   r-   r    r   rb   rX   )r   rC   rS   r!   rE   rq   s         r   r   XfolioSeriesExtractor.works   s    ![[;wix	{C||C %% ))0&:
: IIdIs+:
 	
 
s   "A=r&   Nrt   r&   r   r   rv   rv      s    KAAG=G	
r   rv   N)r+   commonr   r   r9   r   r   rh   r	   r   rl   rv   r&   r   r   <module>r|      sF    ( & 7i :;/ ;|%/ %,
O 
r   