
    i                     P    S r SSKJr  SSKJr  Sr " S S\5      r " S S	\5      rg
)z Extractors for https://turbo.cr/   )LolisafeAlbumExtractor   )textzG(?:https?://)?(?:(?:www\.)?turbo(?:vid)?\.cr|saint\d*\.(?:su|pk|cr|to))c                   :    \ rS rSrSrSrSr\S-   rSr	S r
S rS	rg
)TurboAlbumExtractor   zExtractor for turbo.cr albumsturbozhttps://turbo.crz/a/([^/?#]+)zhttps://turbo.cr/a/IDc                     U R                    SU 3n[        R                  " U R                  U5      R                  5      nU" SS5      nU" SS5      nU" SS5      nSU0nU R	                  Xg5      U[        R
                  " XDR                  S5      S	-   S  5      [        R
                  " XUR                  S5      S	-   S  5      [        [        [        R                  [        R                  " US
S5      5      5      UR                  S5      US.4$ )Nz/a/z<h1 <z<p zid="fileTbody"z</tbody>Referer>r   data-size=""zdata-id=)album_id
album_namedescription
album_sizecount_http_headers)rootr   extract_fromrequest_extract_filesunescapefindsummap	parse_intextract_iterr   )selfr   urlextrtitledescrtbodyheaderss           G/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/turbo.pyfetch_albumTurboAlbumExtractor.fetch_album   s    3xj)  c!2!7!78VS!UC %z2c"""52%!]]5C1B1C+DE!]]5C1B1C+DE T^^T5F5F}c6+ ", -"[[4$5
 
 	
    c              #     #    [         R                  " USS5       H  n[         R                  " USS5      nU R                   SU 3nU R	                  XRS9nUR                  S5      =(       d    UR                  S5      n[         R                  " UUUR                  S	5      [         R                  " [         R                  " US
S5      5      US.5      v   M     g 7f)Nz<trz</tr>z	data-id="r   /api/sign?v=r&   original_filenamefilenamer!   r   )idfilesizer   )r   r   r"   r   request_jsongetnameext_from_namer   )r    bodyr&   r1   data_idr!   datanames           r'   r   "TurboAlbumExtractor._extract_files,   s     %%dE7;Diik37GYYK|G95C$$S$:D88/0HDHHZ4HD((tyy}c'JK!(	0   <s   CC N)__name__
__module____qualname____firstlineno____doc__categoryr   BASE_PATTERNpatternexampler(   r   __static_attributes__r;   r*   r'   r   r      s(    'HD_,G%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g
)TurboMediaExtractor:   z"Extractor for turbo.cr media linksmedia)z
{category}z/(?:embe)?[dv]/([^/?#]+)zhttps://turbo.cr/embed/IDc                      U R                  U5      4SSSS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)N r   )r   r   r   r   r   z%s: %sr;   )_extract_file	Exceptionlogerror	__class__r<   )r    r   excs      r'   r(   TurboMediaExtractor.fetch_albumA   so    
	&&x02!!!! 5    	HHNN8S]]%;%;SAr6M	s    
A%4A A% A%c                 J   U R                    SU 3nSU0nU R                  U5      R                  n[        R                  " USS5      n[        R                  " USSUR                  S5      5      S   nU R                    SU 3nU R                  X#S	9nUR                  S
5      =(       d    UR                  S5      n[        R                  " UUUR                  S5      [        [        R                  " UR                  SS5      5      5      U R                  U5      US.5      $ )Nz/d/r   zid="fileSizeBytes">r   z<span>zFile ID:    r,   r-   r.   r/   r!   z&#43;+)r0   r1   r2   dater   )r   r   r   r"   extractr   r3   r4   r5   intparse_floatreplaceparse_datetime_iso)	r    r7   r!   r&   pager2   rW   r8   r9   s	            r'   rM   !TurboMediaExtractor._extract_fileN   s   3wi(c"||C %%yy4c:||D(C:1FGJ<y1   6xx+,D0D%%dHHUO((gs)CDE++D1$-
  	r*   r;   N)r<   r=   r>   r?   r@   subcategorydirectory_fmtrB   rC   rD   r(   rM   rE   r;   r*   r'   rG   rG   :   s)    ,K#M88G)Gr*   rG   N)r@   lolisafer   rK   r   rB   r   rG   r;   r*   r'   <module>rb      s2    ' , .
$0 $N$- $r*   