
    ik                         S r SSKJrJr  SSKJ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://35photo.pro/   )	ExtractorMessage   )textc                   P    \ rS rSrSrSrSrSrSrS r	S r
S	 rSS jrS rS rSrg
)_35photoExtractor   35photo)
{category}z{user}z&{id}{title:?_//}_{num:>02}.{extension}z
{id}_{num}zhttps://35photo.proc              #   H  #    SnU R                  5       nU R                  5        Hx  nU R                  U5       H`  nUR                  U5        US   nU(       a  Sn[        R
                  SU4v   [        R                  U[        R                  " XT5      4v   Mb     Mz     g 7f)NTurlF )	metadataphotos_photo_dataupdater   	DirectoryUrlr   nameext_from_url)selffirstdataphoto_idphotor   s         I/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/35photo.pyitems_35photoExtractor.items   s     }}H))(3T"El!E!++R66kk3(=(=c(III 4 &s   B B"c                     0 $ )zReturns general metadata r   s    r   r   _35photoExtractor.metadata#   s    	    c                     g)z5Returns an iterable containing all relevant photo IDsNr   r    s    r   r   _35photoExtractor.photos'   s    r"   Nc              #     #    SnU R                   SS.nSUS'   SU;  a  SUS'   U(       a
  U S h  vN   US   (       aA  U R                  X4US9nU R                  US	   5       S h  vN   US   US'   US   (       a  M@  g g  NP N7f)
Nz"https://35photo.pro/show_block.phpXMLHttpRequest)RefererzX-Requested-WithgetNextPageDatatypelastId	999999999)headersparamsr   )rootrequest_json
_photo_ids)r   r-   	extra_idsr   r,   r   s         r   _pagination_35photoExtractor._pagination*   s     2"ii=MN*v6!*F8   X$$S&$IDtF|444#H~F8 X ! 5s'   .BB5B&B'B?BBc              #     #    SUS.nU R                  SUS9S   U   nUS   US   US   US	   US
   =(       d    / US   US   US   US   US   US   US   US   S.nSU;   ad  [        US   S5       HP  u  US'   nUS   US'   [        R                  " US   5      US'   US   =(       d    SUS'   UR	                  5       v   MR     g SUS'   Uv   g 7f)Nzphoto.getData)methodphotoIdzhttps://api.35photo.pro/)r-   r   srcr   
photo_name
photo_desctags	photo_see	photo_favphoto_rating
photo_typetimeAdd
user_loginuser_id	user_name)r   idtitledescriptionr:   views	favoritesscorer)   dateuserrA   rB   seriesr   numr   rC   	id_seriesrD   r   title_series)r/   	enumerater   	parse_intcopy)r   r   r-   r   infor   s         r   r   _35photoExtractor._photo_data8   s(    +A  &v ! 77=??GI  ;
+--<-2,,/-	?-	?,
  t&/X&B"UU#ElU$(NN5;$?[!',W~';^$iik!	 'C DKJs   CCc           	          U(       d  g[        [        [        R                  " USS5      5      [        R                  SS9$ )z7Extract unique photo IDs and return them as sorted listr   z/photo_/T)keyreverse)sortedsetr   extract_iterrP   )r   pages     r   r0   _35photoExtractor._photo_idsV   s8     !!$	378
 	
r"   r   N)__name__
__module____qualname____firstlineno__categorydirectory_fmtfilename_fmtarchive_fmtr.   r   r   r   r2   r   r0   __static_attributes__r   r"   r   r   r      s;    H,M;LK DJD.<	
r"   r   c                   6    \ rS rSrSrSrSrSrS rS r	S r
S	rg
)_35photoUserExtractorb   z1Extractor for all images of a user on 35photo.prorJ   zP(?:https?://)?(?:[a-z]+\.)?35photo\.pro/(?!photo_|genre_|tags/|rating/)([^/?#]+)zhttps://35photo.pro/USERc                 P    [         R                  X5        US   U l        SU l        g )Nr       )r   __init__rJ   rA   r   matchs     r   rl   _35photoUserExtractor.__init__i   s"    ""4/!H	r"   c                    U R                    SU R                   S3nU R                  U5      R                  n[        R                  " [        R
                  " USS5      5      U l        U R                  U R                  S.$ )NrU   z/user_z.xmlrJ   rA   )r.   rJ   requestr   rP   extrrA   r   r   r[   s      r   r   _35photoUserExtractor.metadatan   se    1TYYKq)||C %%~~diih&GHII||
 	
r"   c                 >    U R                  SU R                  S.5      $ )N	photoUser)r[   rA   )r2   rA   r    s    r   r   _35photoUserExtractor.photosw   s$    ||!
  	r"   rq   N)r^   r_   r`   ra   __doc__subcategorypatternexamplerl   r   r   rf   r   r"   r   rh   rh   b   s%    ;K<G(G

r"   rh   c                   >    \ 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)_35photoTagExtractor~   z+Extractor for all photos from a tag listingtag)r   Tagsz{search_tag}zt{search_tag}_{id}_{num}z6(?:https?://)?(?:[a-z]+\.)?35photo\.pro/tags/([^/?#]+)zhttps://35photo.pro/tags/TAG/c                 B    [         R                  X5        US   U l        g Nr   )r   rl   r   rm   s     r   rl   _35photoTagExtractor.__init__   s    ""4/8r"   c                 b    S[         R                  " U R                  5      R                  5       0$ )N
search_tag)r   unquoter   lowerr    s    r   r   _35photoTagExtractor.metadata   s#    dll4884::<==r"   c              #      #    Sn U R                    SU R                   SU S3nU R                  U5      R                  nS n[        R                  " USS5       H  nXT:w  d  M
  UnUv   M     U(       d  g US-  nMw  7f)Nr   z/tags/z/list_rU   z35photo.pro/photo_)r.   r   rr   r   rZ   )r   rL   r   r[   prevr   s         r   r   _35photoTagExtractor.photos   s     YYKvdhhZvcU!<C<<$))DD --d4H#N##D"N O
 1HC s   AA=$A=)r   Nr^   r_   r`   ra   ry   rz   rc   re   r{   r|   rl   r   r   rf   r   r"   r   r~   r~   ~   s-    5K:M,KGG-G>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Srg)_35photoGenreExtractor   z7Extractor for images of a specific genre on 35photo.progenre)r   Genrez{genre}zg{genre_id}_{id}_{num}z;(?:https?://)?(?:[a-z]+\.)?35photo\.pro/genre_(\d+)(/new/)?z https://35photo.pro/genre_12345/c                 v    [         R                  X5        UR                  5       u  U l        U l        S U l        g r]   )r   rl   groupsgenre_idnew	photo_idsrm   s     r   rl   _35photoGenreExtractor.__init__   s+    ""4/"',,.txr"   c                 b   U R                    SU R                   U R                  =(       d    S 3nU R                  U5      R                  nU R                  [        R                  " USS5      5      U l        [        R                  " USS5      [        R                  " U R                  5      S.$ )Nz/genre_rU   z class="photo
z	 genre - z. )r   r   )	r.   r   r   rr   r   r0   rs   r   rP   rt   s      r   r   _35photoGenreExtractor.metadata   s    74==/$((/c1BC||C %%/4*) * YYt[$7t}}5
 	
r"   c                     U R                   (       d  gU R                  SU R                  U R                  (       a  SOSU R                   S   S.U R                   5      $ )Nr   r   050)r[   community_idr=   r*   )r   r2   r   r   r    s    r   r   _35photoGenreExtractor.photos   sN    ~~ MM#'88CnnR(	!

 >> 	r"   )r   r   r   Nr   r   r"   r   r   r      s-    AK6M*KLG0G

r"   r   c                   0    \ rS rSrSrSrSrSrS rS r	Sr
g	)
_35photoImageExtractor   z0Extractor for individual images from 35photo.proimagez3(?:https?://)?(?:[a-z]+\.)?35photo\.pro/photo_(\d+)z https://35photo.pro/photo_12345/c                 B    [         R                  X5        US   U l        g r   )r   rl   r   rm   s     r   rl   _35photoImageExtractor.__init__   s    ""4/ar"   c                     U R                   4$ r]   r   r    s    r   r   _35photoImageExtractor.photos   s    r"   r   N)r^   r_   r`   ra   ry   rz   r{   r|   rl   r   rf   r   r"   r   r   r      s    :KDG0G! r"   r   N)ry   commonr   r   r   r   r   rh   r~   r   r   r   r"   r   <module>r      sU    * & P
	 P
f- 8, B. D .  r"   