
    i4                         S SK r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJrJrJr  SSKJrJr   " S S\5      r " S	 S
\5      rg)    N   )InfoExtractor   )determine_extextract_attributesfilter_dictget_element_by_classget_element_html_by_idint_or_nonemimetype2extparse_durationstr_or_noneupdate_url_queryurl_or_none)traverse_objvaluec                       \ rS rSrSrSSSSSSS	S
.S.SSSSSSS.S.SSSSSSS	S
.S.SSSSSSS	S
.S.SSS.S SS.S!SS.S"SS.S#SS./	r\S$ 5       r\S% 5       r	S& r
S' rS(rg))*GoogleDriveIE   a  (?x)
                        https?://
                            (?:
                                (?:docs|drive|drive\.usercontent)\.google\.com/
                                (?:
                                    (?:uc|open|download)\?.*?id=|
                                    file/d/
                                )|
                                video\.google\.com/get_player\?.*?docid=
                            )
                            (?P<id>[a-zA-Z0-9_-]{28,})
                    zGhttps://drive.google.com/file/d/0ByeS4oOUV-49Zzh4R1J6R09zazQ/edit?pli=1 5c602afbbf2c1db91831f5d82f678554z0ByeS4oOUV-49Zzh4R1J6R09zazQmp4zBig Buck Bunny.mp4gFԈF@z5re:https://lh3\.googleusercontent\.com/drive-storage/)idexttitleduration	thumbnail)urlmd5	info_dictz@https://drive.google.com/uc?id=1IP0o8dHcQrIHGgVyp0Ofvx2cGfLzyO1x 322db8d63dd19788c04050a4bba67073!1IP0o8dHcQrIHGgVyp0Ofvx2cGfLzyO1xmp3z7My Buddy - Henry Burr - Gus Kahn - Walter Donaldson.mp3g(\g@)r   r   r   r   zFhttps://drive.google.com/file/d/1RAGWRgzn85TXCaCk4gxnwF6TGUaZatzE/view 05488c528da6ef737ec8c962bfa9724e!1RAGWRgzn85TXCaCk4gxnwF6TGUaZatzEztest.mp4gsh|#@zFhttps://drive.google.com/file/d/1Prvv9-mtDDfN_gkJgtt1OFvIULK8c3Ev/view ccae12d07f18b5988900b2c8b92801fcz!1Prvv9-mtDDfN_gkJgtt1OFvIULK8c3Evz#LEE NA GYUNG-3410-VOICE_MESSAGE.mp4gx&1!@zAhttps://drive.google.com/file/d/0B-vUyvmDLdWDcEt4WjBqcmI2XzQ/viewT)r   only_matchingzHhttps://drive.google.com/file/d/1ENcQ_jeCuj7y19s66_Ou9dRP4GKGsodiDQ/editz=https://drive.google.com/open?id=0B2fjwgkl1A_CX083Tkowdmt6d28z;https://drive.google.com/uc?id=0B2fjwgkl1A_CX083Tkowdmt6d28zMhttps://drive.usercontent.google.com/download?id=0ByeS4oOUV-49Zzh4R1J6R09zazQc              #      #    [         R                  " SU5      nU(       a#  SR                  UR                  S5      5      v   g g 7f)Nz<iframe[^>]+src="https?://(?:video\.google\.com/get_player\?.*?docid=|(?:docs|drive)\.google\.com/file/d/)(?P<id>[a-zA-Z0-9_-]{28,})z"https://drive.google.com/file/d/{}r   )researchformatgroup)clsr   webpagemobjs       I/app/mltbenv/lib/python3.13/site-packages/yt_dlp/extractor/googledrive.py_extract_embed_urls!GoogleDriveIE._extract_embed_urls_   s@     yy T 6==djj>NOO s   AAc                 :    [        U [        SUSUUUS.5      5      $ )Nen-UStrack)hlvtypelangfmtkind)r   r   )base_urlvideo_idlanguager9   r:   s        r/   _construct_subtitle_url%GoogleDriveIE._construct_subtitle_urlg   s0    k #  	    c                    0 n[        USS[        145      nU(       d  U$ U R                  XASSSSSUSS.S	9n[        US
 S 1[        145      n[        US 5       Hy  nUR	                  S5      nUR                  U/ 5      R                  U V	s/ s H8  n	U R                  XAXUR	                  S5      5      UR	                  S5      U	S.PM:     sn	5        M{     U$ s  sn	f )NtimedTextDetailstimedTextBaseUrlzDownloading subtitles XMLFr3   listr   )r5   r7   tlangsr6   vssids)fatalqueryc                      UR                   S:H  $ )Nr*   )tag_r6   s     r/   <lambda>.GoogleDriveIE._get_subtitles.<locals>.<lambda>   s    QUUhEVr@   c                 $    U R                  S5      $ )Nfmt_code)get)xs    r/   rM   rN      s    cdchchisctr@   c                 P    UR                   S:H  =(       a    UR                  S5      $ )Nr4   	lang_code)rJ   rQ   rK   s     r/   rM   rN      s"    quu?O?fTUTYTYZeTf?fr@   rT   r:   lang_original)r   namer   )r   r   _download_xmlstrrQ   
setdefaultextendr>   )
selfr<   
video_info	subtitlestimed_text_base_urlsubtitle_datasubtitle_formatsr4   r=   sub_fmts
             r/   _get_subtitlesGoogleDriveIE._get_subtitless   s   	*:8JL^al`m7no"**+Fe\ +  (8VYtXux{w|7}~!-2fhEyy-H  2.55
 .7/
 .'	 33'8eiiPVFWY		/2	8
 .7/ 0 i 7/s   ?C
c                   ^ ^
^^ T R                  U5      mT R                  ST S3TSSS0SS0S9n/ m
[        US	S
SS 45       H  nT
R                  0 [        USS[        1[
        14S.5      E[        USS[        14S[        14S[        14S[        14S[        14S[        14[        S5      14[        4S[        14[        S5      14[        4S.45      ESSS00E5        M     [        USS[        145      m[        STS S!S".5      nS;U U4S# jjnU" US$5      nU(       a  U
U U4S% jnUR                  R                  S&5      (       a	  U" U5        OT R                  XaTS'S(S)S*9nU(       a  [        [!        S+U5      =(       d    S,5      R                  S-5      n	U	(       a8  U" U	S.S/S09nU(       a(  UR                  R                  S&5      (       a  U" U5        O7T R#                  [%        S1U5      =(       d    [%        S2U5      =(       d    S35        TTS4.[        USS5[&        14S6S7 SS[        14S[        14S[        14S8.4S9.5      ET
T R)                  TU5      S:.E$ )<Nz@https://content-workspacevideo-pa.googleapis.com/v1/drive/media/z	/playbackzDownloading video webpagekeyz'AIzaSyDVQw45DwoYh632gvsP5vPDqEKvb-Ywnb8Refererzhttps://drive.google.com/)rH   headersmediaStreamingDataformatStreamingData)adaptiveTranscodesprogressiveTranscodesc                     [        US   5      $ Nr   r   rK   s     r/   rM   -GoogleDriveIE._real_extract.<locals>.<lambda>   s    [52r@   r   itag)r   	format_idtranscodeMetadatamimeTypewidthheightvideoFpscontentLengthvideoCodecStringnoneaudioCodecString)r   rt   ru   fpsfilesizevcodecacodecdownloader_optionshttp_chunk_sizei   mediaMetadatar   z-https://drive.usercontent.google.com/downloaddownloadt)r   exportconfirmc           	      <   > TR                  U TSU S3SU S3SUS9$ )NzRequesting z filezUnable to request F)noteerrnoterG   data)_request_webpage)
source_urlr:   r   r[   r<   s      r/   request_source_file8GoogleDriveIE._real_extract.<locals>.request_source_file   s=    ((H[e+D,TF%8D ) R Rr@   sourcec                    > T(       d+  TR                  SU R                  R                  S5      SS S9mTR                  U R                  [        TS5      R                  5       SSS.5        g )	Nz\bfilename="([^"]+)"Content-Dispositionr   )defaultr   r   r   )r   r   rq   quality)_search_regexrg   rQ   appendr   r   lower)urlhformatsr[   r   s    r/   add_source_format6GoogleDriveIE._real_extract.<locals>.add_source_format   sj     ../1A1ABW1X / /E   88(6<<>!) 
  
r@   r   zDownloading confirmation pagezUnable to confirm downloadF)r   r   rG   zdownload-form actionzconfirmed sourcer@   )r   zuc-error-subcaptionzuc-error-captionz#unable to extract confirmation coder   r   r   
thumbnailsc                     [        US   5      $ rm   rn   rK   s     r/   rM   ro      s    +ah:Or@   )r   r   rt   ru   )r   r   )r   r]   )N)	_match_id_download_jsonr   r   intr   r   r   rX   r   anyr   rg   rQ   _webpage_read_contentr   r
   report_warningr	   r   extract_subtitles)r[   r   r\   r9   r   r   r   r   confirmation_webpageconfirmed_source_urlr   r   r<   s   `         @@@r/   _real_extractGoogleDriveIE._real_extract   s   >>#&((NxjXab1%Aj9k ;< ) >

 
$&;=l2-4 5C NN s "(3%+!?% 
 s%8&7%}5'+7&6!0;- @!3cU ;eFm_MsS!3cU ;eFm_MsS; %  %%x' 5, Z/7SE)JK%;$>
	R 	R #:x8" || 566!$''+'A'Ax.M8 (B (G$ (+=.@TU[Y[,]]`]`ai]j )+23GI[befDLL$4$45J$K$K-d3++01FH\] E34FH\]EDF 
 :,j>:JK+-O &7%u-'#/	R ( 
 //*E
 	
r@    N)__name__
__module____qualname____firstlineno__
_VALID_URL_TESTSclassmethodr0   staticmethodr>   rb   r   __static_attributes__r   r@   r/   r   r      s   J Y10)Q

 R15N	
	
 X15Q
	 X15:Q
	 S	 Z
 O M _s<F| P P 	 	0_
r@   r   c                   \    \ rS rSrSrSrSSSS.SS	./rS
rSrS\ S\ S3r	S r
S rS rSrg)GoogleDriveFolderIE   zGoogleDrive:FolderzEhttps?://(?:docs|drive)\.google\.com/drive/folders/(?P<id>[\w-]{28,})zHhttps://drive.google.com/drive/folders/1dQ4sx0-__Nvg65rxTSgQrl7VyW_FZ9QIz!1dQ4sx0-__Nvg65rxTSgQrl7VyW_FZ9QIForrestr      )r   r   playlist_countz=====vc17a3rwnndj=====a  /drive/v2beta/files?openDrive=true&reason=102&syncType=0&errorRecovery=false&q=trashed%20%3D%20false%20and%20'{folder_id}'%20in%20parents&fields=kind%2CnextPageToken%2Citems(kind%2CmodifiedDate%2CmodifiedByMeDate%2ClastViewedByMeDate%2CfileSize%2Cowners(kind%2CpermissionId%2Cid)%2ClastModifyingUser(kind%2CpermissionId%2Cid)%2ChasThumbnail%2CthumbnailVersion%2Ctitle%2Cid%2CresourceKey%2Cshared%2CsharedWithMeDate%2CuserPermission(role)%2CexplicitlyTrashed%2CmimeType%2CquotaBytesUsed%2Ccopyable%2CfileExtension%2CsharingUser(kind%2CpermissionId%2Cid)%2Cspaces%2Cversion%2CteamDriveId%2ChasAugmentedPermissions%2CcreatedDate%2CtrashingUser(kind%2CpermissionId%2Cid)%2CtrashedDate%2Cparents(id)%2CshortcutDetails(targetId%2CtargetMimeType%2CtargetLookupStatus)%2Ccapabilities(canCopy%2CcanDownload%2CcanEdit%2CcanAddChildren%2CcanDelete%2CcanRemoveChildren%2CcanShare%2CcanTrash%2CcanRename%2CcanReadTeamDrive%2CcanMoveTeamDriveItem)%2Clabels(starred%2Ctrashed%2Crestricted%2Cviewed))%2CincompleteSearch&appDataFilter=NO_APP_DATA&spaces=drive&pageToken={page_token}&maxResults=50&supportsTeamDrives=true&includeItemsFromAllDrives=true&corpora=default&orderBy=folder%2Ctitle_natural%20asc&retryCount=0&key={key} HTTP/1.1z--zM
content-type: application/http
content-transfer-encoding: binary

GET %s

--
c                     U R                   " SU4UR                  5       SSS.SU R                   S3US.S.UD6nU R                  " S	US
U40 UD6=(       d    0 $ )Nz.https://clients6.google.com/batch/drive/v2betaztext/plain;charset=UTF-8;zhttps://drive.google.com)zContent-TypeOriginzmultipart/mixed; boundary="")z$ctre   )r   rg   rH   r   zapi response)_download_webpageencode	_BOUNDARY_search_json)r[   	folder_idre   r   kwargsresponses         r/   	_call_apiGoogleDriveFolderIE._call_api  sz    ))<	 KKM ;4 5T^^4DAF	 	   X~ySFSYWYYr@   c              #      #    SnUb]  U R                   R                  XUS9nU R                  XU R                  U-  5      nUS    S h  vN   UR	                  S5      nUb  M\  g g  N7f)Nr   )r   
page_tokenre   itemsnextPageToken)_REQUESTr*   r   _DATArQ   )r[   r   re   r   requestpages         r/   _get_folder_items%GoogleDriveFolderIE._get_folder_items  sk     
$mm**Y[^*_G>>)$**w2FGDG}$$/2J	 $ %s   AA(	A&
A($A(c                    U R                  U5      nU R                  X5      nU R                  SUS5      nU R                  X$U R                  SU S3-  SS9nU R                  U R                  X$5      X%R                  S5      [        S S	9$ )
Nz
"(\w{39})"re   z/drive/v2beta/files/z	 HTTP/1.1F)rG   r   c                     SU S    3$ )Nz https://drive.google.com/file/d/r   r   )items    r/   rM   3GoogleDriveFolderIE._real_extract.<locals>.<lambda>"  s    4TUYZ^U_T`2ar@   )iegetter)	r   r   r   r   r   playlist_from_matchesr   rQ   r   )r[   r   r   r-   re   folder_infos         r/   r   !GoogleDriveFolderIE._real_extract  s    NN3'	((8  ?nnYTZZDXYbXcclBm5muzn{))""92Iw?W%a * c 	cr@   r   N)r   r   r   r   IE_NAMEr   r   r   r   r   r   r   r   r   r   r@   r/   r   r      sj    "GYJY5
  F )I UH9+  + EZ3
cr@   r   )r(   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   r   r   r@   r/   <module>r      sA    	 !    2V
M V
r5c- 5cr@   