
    i                     t    S r SSKJr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g)z'Extractors for https://www.xvideos.com/   )GalleryExtractor	ExtractorMessage   )textutilzN(?:https?://)?(?:www\.)?xvideos\.com/(?:profiles|(?:amateur-|model-)?channels)c                        \ rS rSrSrSrSrSrg)XvideosBase   z!Base class for xvideos extractorsxvideoszhttps://www.xvideos.com N)__name__
__module____qualname____firstlineno____doc__categoryroot__static_attributes__r       I/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/xvideos.pyr
   r
      s    +H$Dr   r
   c                   H    \ 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)XvideosGalleryExtractor   z3Extractor for user profile galleries on xvideos.comgallery)z
{category}z{user[name]}z{gallery[id]} {gallery[title]}z.{category}_{gallery[id]}_{num:>03}.{extension}z{gallery[id]}_{num}z/([^/?#]+)/photos/(\d+)z2https://www.xvideos.com/profiles/USER/photos/12345c                     UR                  5       u  U l        U l        U R                   SU R                   SU R                   3n[        R
                  " XU5        g )N
/profiles//photos/)groupsuser
gallery_idr   r   __init__)selfmatchurls      r   r"    XvideosGalleryExtractor.__init__"   sI    %*\\^"	4?:dii[8IJ!!$s3r   c                    [         R                  " U5      n[         R                  " U" SS5      5      U" SS5      U" SS5      U R                  S.nU" SS5      nU" SS	5      R	                  5       US
'   U" SS5      R	                  5       nU[         R                  " U R
                  5      [         R                  " U5      U(       a%  [         R                  " U5      R                  S5      O/ S.S.$ )Nz
"id_user":,z"display":""z"sex":")iddisplaysexnamez	"title":"z<small class="mobile-hide">z</small>descriptionz<em>Tagged:</em><z, )r*   titletags)r    r   )r   extract_from	parse_intr    stripr!   unescapesplit)r#   pageextrr    r0   r1   s         r   metadata XvideosGalleryExtractor.metadata'   s      &~~d<&=>M3/Is+yy	
 [#&"):77<uw 	]&,224 8u-<@t,2248b
 	
r   c                    [         R                  " USS5       Vs/ s H  nUS 4PM	     nnU(       d  g [        U5      S-  S:X  a  [         R                  " USSUR	                  S5      5      nU(       d   U$ U R                  U R                  U-   5      R                   nUR                  S [         R                  " USS5       5       5        [        U5      S-  S:X  a  M  U$ s  snf )Nz'<a class="embed-responsive-item" href="r)   i      z href="z>Next</c              3   *   #    U  H	  nUS 4v   M     g 7f)Nr   ).0r%   s     r   	<genexpr>1XvideosGalleryExtractor.images.<locals>.<genexpr>L   s!      JC dJs   )r   extract_iterlenrextrfindrequestr   extend)r#   r7   r%   resultspaths        r   imagesXvideosGalleryExtractor.images=   s     ((?F
F $KF 	 
 'lS A%::dIsDIIi4HID  <<		D 0166DNN ,,CSJ  'lS A% )
s   C#)r!   r    N)r   r   r   r   r   subcategorydirectory_fmtfilename_fmtarchive_fmtBASE_PATTERNpatternexampler"   r9   rI   r   r   r   r   r   r      s:    =K7MCL'K77GBG4

,r   r   c                   :    \ rS rSrSrSrSr\S-   rSr	S r
S rS	rg
)XvideosUserExtractorU   z*Extractor for user profiles on xvideos.comr    Tz/([^/?#]+)/?(?:#.*)?$z%https://www.xvideos.com/profiles/USERc                 D    [         R                  " X5        US   U l        g )Nr   )r   r"   r    )r#   r$   s     r   r"   XvideosUserExtractor.__init__\   s    4'!H	r   c           	   #     #    U R                    SU R                   3nU R                  XR                  S9R                  n[
        R                  " [        R                  " USS5      5      S   n[        US   [        5      (       d  g SUS   ;   a  US   S	 US   R                  5        VVs/ s H>  u  pE[        R                  " U5      [        R                  " US   5      US	   [        S
.PM@     nnnUR                  S S9  U R                    SU R                   S3nU H(  nU[        US   5      -   n[         R"                  X4v   M*     g s  snnf 7f)Nr   )notfoundzxv.conf=z
;</script>data	galleries0r0   nb_pics)r*   r0   count
_extractorc                     U S   $ )Nr*   r   )xs    r   <lambda>,XvideosUserExtractor.items.<locals>.<lambda>t   s    QtWr   )keyr   r*   )r   r    rE   rK   r   r   
json_loadsr8   
isinstancedictitemsr3   r5   r   sortstrr   Queue)	r#   r%   r7   rY   gidgdatarZ   baser   s	            r   rg   XvideosUserExtractor.items`   sM    :dii[1||C*:*:|;@@tyy*l , --35 ${+T22${##[!#& #;/557
 8
 ,uW~6y)5	 8 	 
 	,-))Jtyyk: GWT]++C---- !
s   B,E.AE3A$E)r    N)r   r   r   r   r   rK   categorytransferrO   rP   rQ   r"   rg   r   r   r   r   rS   rS   U   s*    4K55G5G.r   rS   N)r   commonr   r   r    r   r   rO   r
   r   rS   r   r   r   <module>rr      sB    . 8 8 >% %:k+; :z$.;	 $.r   