
    i                         S r SSKJr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g)z%Extractors for https://audiochan.com/   )	ExtractorMessage   )textz&(?:https?://)?(?:www\.)?audiochan\.comc                   Z    \ 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 jrSS jrSS jrSrg)AudiochanExtractor   z#Base class for audiochan extractors	audiochanzhttps://audiochan.comzhttps://api.audiochan.com)z
{category}z{user[display_name]}z{title} ({slug}).{extension}z{audioFile[id]}c                 Z    SU l         SU R                  SSSS.U l        SSS	SS
S.U l        g )NFzapplication/jsonemptycorsz	same-site)zcontent-typeOriginSec-Fetch-DestSec-Fetch-ModeSec-Fetch-SitezZaudio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5audiozno-corsidentity)Acceptr   r   r   zAccept-Encoding)userrootheaders_api
headers_dl)selfs    K/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/audiochan.py_initAudiochanExtractor._init   sA    	1#yy&%*
F&(*)
    c              #   R  #    U R                  5        GH  nUS   nU R                  US'   U R                  US   5      US'   U R                  US   5      US'   U R                  US   5      US'   / nUS    H*  nS	U;   a  US	   nUR	                  US
    SUS    35        M,     X1S'   U R
                  (       a  US   S   S   US'   US   =n(       d
  SUS'   US   n[        R                  SU4v   [        R                  " US   U5        [        R                  XQ4v   GM     g 7f)N	audioFile_http_headers
created_atdate
updated_atdate_updateddescriptiontagstagcategory:namecredits    r   urli'	 _http_segmented
stream_url filename)postsr   parse_datetime_iso_extract_descriptionappendr   r   	Directoryr   nameext_from_nameUrl)r   postfiler&   r'   r-   s         r   itemsAudiochanExtractor.items,   sD    JJLD$D$(OOD!2243EFDL#'#:#:4;M#ND "&";";]##%D DF|C<e*Cs:/qV>? $  Lyy#Iq1&9V;&C&*0&'<(##R--""4
#3T:++s((3 !s   D%D'Nc                 T    U R                   U-   nU R                  X2U R                  S9$ )N)paramsheaders)root_apirequest_jsonr   )r   endpointr>   r-   s       r   request_apiAudiochanExtractor.request_apiH   s,    mmh&  T=M=M NNr   c              #      #    SUS'   SUS'    U R                  X5      nUb  XC   nUS    S h  vN   US   (       d  g US==   S-  ss'   M?   N7f)Nr   page12limitdatahas_more)rC   )r   rB   r>   keyrI   s        r   _paginationAudiochanExtractor._paginationL   sf     vw##H5DyF|##
#6NaN 
 $s   ,AAAc                     Uc  / nSU;   a  UR                  US   5        U$ SU;   a  US    H  nU R                  X25        M     U$ )Nr   content)r5   r4   )r   r%   textsdescs       r   r4   'AudiochanExtractor._extract_description[   sZ    =E[ LLV,-
 	 +%#I.))$6 / r   )r   r   r   )N)__name__
__module____qualname____firstlineno____doc__r(   r   r@   directory_fmtfilename_fmtarchive_fmtr   r;   rC   rL   r4   __static_attributes__ r   r   r   r      s=    -H"D*H:M1L#K
$)8O 
r   r   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)AudiochanAudioExtractorh   r   z/a/([^/?#]+)zhttps://audiochan.com/a/SLUGc                 X    SU l         U R                  SU R                  S   -   5      nU4$ )NTz/audios/slug/r,   )r   rC   groups)r   r   s     r   r2   AudiochanAudioExtractor.postsm   s-    	  4;;q>!ABxr   r   N
rS   rT   rU   rV   subcategoryBASE_PATTERNpatternexampler2   r[   r\   r   r   r^   r^   h   s    K_,G,Gr   r^   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)AudiochanUserExtractors   r   z/u/([^/?#]+)zhttps://audiochan.com/u/USERc                     SU R                   S   -   nU R                  U5      S   U R                  S'   SSS.nU R                  US-   U5      $ )	Nz/users/r,   rI   r   falsenew)sfw_onlysortz/audios)ra   rC   kwdictrL   r   rB   r>   s      r   r2   AudiochanUserExtractor.postsx   s[    t{{1~-"..x8@F  
 9 4f==r   r\   Nrd   r\   r   r   rj   rj   s   s    K_,G,G>r   rj   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)AudiochanCollectionExtractor   
collectionz/c/([^/?#]+)zhttps://audiochan.com/c/SLUGc                     U R                   S   nSU-   nU R                  U5      =U R                  S'   nUR                  SS 5        UR                  SS 5        SU S3nU R	                  U0 5      $ )Nr,   z/collections/rw   audiosr;   z/collections/slug/z/items)ra   rC   rq   poprL   )r   slugrB   cols       r   r2   "AudiochanCollectionExtractor.posts   st    {{1~"T)*.*:*:8*DDL!C$'vV4"--r   r\   Nrd   r\   r   r   ru   ru      s    K_,G,G.r   ru   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)AudiochanSearchExtractor   searchz/search/?\?([^#]+)z$https://audiochan.com/search?q=QUERYc                     SU l         Sn[        R                  " U R                  S   5      nSUS'   UR	                  S5      U R
                  S'   U R                  XS5      $ )	NTz/searchr,   rm   ro   qsearch_tagsry   )r   r   parse_queryra   getrq   rL   rr   s      r   r2   AudiochanSearchExtractor.posts   sY    	!!$++a.1$z%+ZZ_M"(;;r   rc   Nrd   r\   r   r   r   r      s    K22G4G<r   r   N)rW   commonr   r   r0   r   rf   r   r^   rj   ru   r   r\   r   r   <module>r      sX    , & 8T Tn0 >/ > .#5 . <1 <r   