§
    àðij7(  ã                  óî   — d dl mZ d dlZd dlmZ d dlZd dlZd dlZ	d dl
Z
d dlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  G d	„ d
¦  «        Zd+d„Z	 	 	 	 	 	 	 	 	 	 	 d,d-d#„Zd.d$„Z	 d/d0d)„Z	 	 d1d2d*„ZdS )3é    )ÚannotationsNé   )ÚGoogleDriveFileToDownload)Ú_get_session)Ú_sanitize_filename)Údownload)ÚDownloadErrorc                  ó&   — e Zd ZdZ	 ddd„Zdd„ZdS )Ú_GoogleDriveFilez"application/vnd.google-apps.folderNÚidÚstrÚnameÚtypeÚchildrenúlist[_GoogleDriveFile] | NoneÚreturnÚNonec                óF   — || _         || _        || _        |�|ng | _        d S ©N)r   r   r   r   )Úselfr   r   r   r   s        úl/home/spazio/transcriptions/margarita_drive_19vsq/venv/lib/python3.11/site-packages/gdown/download_folder.pyÚ__init__z_GoogleDriveFile.__init__   s-   € ð ˆŒØˆŒ	ØˆŒ	Ø$,Ð$8˜˜¸bˆŒˆˆó    Úboolc                ó"   — | j         | j        k    S r   )r   ÚTYPE_FOLDER)r   s    r   Ú	is_folderz_GoogleDriveFile.is_folder"   s   € ØŒy˜DÔ,Ò,Ð,r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   © r   r   r   r      sP   € € € € € Ø6€Kð 37ð
Að 
Að 
Að 
Að 
Að-ð -ð -ð -ð -ð -r   r   Úgdrive_fileÚprevious_pathr   r   úlist[tuple[str | None, str]]c                óÐ  — g }| j         D ]Û}t          |j        ¬¦  «        |_        |                     ¦   «         rp|                     dt          j        ||j        ¦  «        f¦  «         t          |t          j        ||j        ¦  «        ¦  «        D ]}|                     |¦  «         ŒŒ |j         s4|                     |j        t          j        ||j        ¦  «        f¦  «         ŒÜ|S )zEConverts a Google Drive folder structure into a local directory list.©ÚfilenameN)	r   r   r   r   ÚappendÚospÚjoinÚ_get_directory_structurer   )r"   r#   Údirectory_structureÚfileÚis        r   r+   r+   &   sê   € ð
 ÐØÔ$ð Vð VˆÝ&°´	Ð:Ñ:Ô:ˆŒ	Ø�>Š>ÑÔð 	VØ×&Ò&¨­c¬h°}ÀdÄiÑ.PÔ.PÐ'QÑRÔRÐRÝ-¨dµC´H¸]ÈDÌIÑ4VÔ4VÑWÔWð .ð .�Ø#×*Ò*¨1Ñ-Ô-Ð-Ð-ð.à”ð 	VØ×&Ò&¨¬µ´¸-ÈÌÑ1SÔ1SÐ'TÑUÔUÐUøØÐr   FTÚurlú
str | Noner   ÚoutputÚquietr   ÚproxyÚspeedúfloat | NoneÚuse_cookiesÚverifyú
bool | strÚ
user_agentÚskip_downloadÚresumeú+list[str] | list[GoogleDriveFileToDownload]c                ó  — |du | du z  st          d¦  «        ‚|�|}n| €J ‚t          | ¦  «        }|€d}t          |||¬¦  «        \  }}|st          dt          j        ¬¦  «         t          ||||¬¦  «        }t          |j        ¬¦  «        |_        |s6t          d	t          j        ¬¦  «         t          d
t          j        ¬¦  «         t          |d¬¦  «        }|st          dt          j        ¬¦  «         |€ t          j        ¦   «         t          j        z   }|                     t          j        ¦  «        rt          j        ||j        ¦  «        }n|}|	s(t          j        |¦  «        st          j        |¦  «         g }|D ]Ü\  }}t          j        ||¦  «        }|€+|	s(t          j        |¦  «        st          j        |¦  «         ŒG|	r&|                     t'          |||¬¦  «        ¦  «         Œot          j        |¦  «        d         r|}n!t          j        |¦  «        t          j        z   }t-          d|z   |||||||
¬¦  «        }|                     |¦  «         ŒÝ|st          dt          j        ¬¦  «         |S )a¶  Downloads entire folder from URL.

    Parameters
    ----------
    url:
        URL of the Google Drive folder.
        Must be of the format 'https://drive.google.com/drive/folders/{url}'.
    id:
        Google Drive's folder ID.
    output:
        String containing the path of the output folder.
        Defaults to current working directory.
    quiet:
        Suppress terminal output.
    proxy:
        Proxy.
    speed:
        Download byte size per second (e.g., 256KB/s = 256 * 1024).
    use_cookies:
        Flag to use cookies. Default is True.
    verify:
        Either a bool, in which case it controls whether the server's TLS
        certificate is verified, or a string, in which case it must be a path
        to a CA bundle to use. Default is True.
    user_agent:
        User-agent to use in the HTTP request.
    skip_download:
        If True, return the list of files to download without downloading them.
        Defaults to False.
    resume:
        Resume interrupted transfers.
        Completed output files will be skipped.
        Partial tempfiles will be reused, if the transfer is incomplete.
        Default is False.

    Returns
    -------
    files:
        If skip_download is False, list of local file paths downloaded.
        If skip_download is True, list of GoogleDriveFileToDownload that contains
        id, path, and local_path.

    Raises
    ------
    ValueError
        If neither url nor id is specified, or both are specified.
    DownloadError
        If a file in the folder fails to download.

    Example
    -------
    gdown.download_folder(
        "https://drive.google.com/drive/folders/" +
        "1ZXEhzbLRLU1giKKRJkjm8N04cO_JoYE2",
    )
    Nz$Either url or id has to be specifiedzyMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36)r3   r6   r9   zRetrieving folder contents)r-   ©ÚsessÚ	folder_idr2   r7   r&   z$Retrieving folder contents completedzBuilding directory structureÚ )r#   z&Building directory structure completed)r   ÚpathÚ
local_pathr   zhttps://drive.google.com/uc?id=)r/   r1   r2   r3   r4   r6   r7   r;   zDownload completed)Ú
ValueErrorÚ_extract_folder_idr   ÚprintÚsysÚstderrÚ%_download_and_parse_google_drive_linkr   r   r+   ÚosÚgetcwdr)   ÚsepÚendswithr*   ÚexistsÚmakedirsr(   r   ÚsplitextÚdirnamer   )r/   r   r1   r2   r3   r4   r6   r7   r9   r:   r;   r@   r?   Ú_r"   r,   Úroot_dirÚfilesrB   rC   Údownload_outputs                        r   Údownload_folderrV   7   sÐ  € ðJ �$ˆJ˜3 $˜;Ñ'ð AÝÐ?Ñ@Ô@Ð@Ø	€~Øˆ	ˆ	àˆˆˆÝ& sÑ+Ô+ˆ	ØÐð Qˆ
å °KÈJÐWÑWÔW�G€Dˆ!àð =ÝÐ*µ´Ð<Ñ<Ô<Ð<Ý7ØØØØð	ñ ô €Kõ *°;Ô3CÐDÑDÔD€KÔàð ?ÝÐ4½3¼:ÐFÑFÔFÐFÝÐ,µ3´:Ð>Ñ>Ô>Ð>Ý2°;ÈbÐQÑQÔQÐØð IÝÐ6½S¼ZÐHÑHÔHÐHà€~Ý”‘”�sœwÑ&ˆØ‡‚•s”wÑÔð Ý”8˜F KÔ$4Ñ5Ô5ˆˆàˆØð ¥¤¨HÑ!5Ô!5ð Ý
Œ�HÑÔÐà€EØ'ð %ð %‰ˆˆDÝ”X˜h¨Ñ-Ô-ˆ
àˆ:Ø ð (­¬°JÑ)?Ô)?ð (Ý”˜JÑ'Ô'Ð'Øàð 	%Ø�LŠLÝ)¨R°dÀzÐRÑRÔRñô ð ð õ Œ|˜JÑ'Ô'¨Ô*ð DØ",��å"%¤+¨jÑ"9Ô"9½C¼GÑ"C�Ý!Ø5¸Ñ:Ø&ØØØØ'ØØð	ñ 	ô 	ˆJð �LŠL˜Ñ$Ô$Ð$Ð$Øð 5ÝÐ"­¬Ð4Ñ4Ô4Ð4Ø€Lr   c                ó¢   — t           j                             | ¦  «        j                             d¦  «                             d¦  «        d         S )Nú/éÿÿÿÿ)ÚurllibÚparseÚurlparserB   ÚrstripÚsplit)r/   s    r   rE   rE   É   s<   € ÝŒ<× Ò  Ñ%Ô%Ô*×1Ò1°#Ñ6Ô6×<Ò<¸SÑAÔAÀ"ÔEÐEr   r?   úrequests.Sessionr@   ú&tuple[str, list[tuple[str, str, str]]]c                ó:  — t           j                             d|i¦  «        }d|› �}|                      ||¬¦  «        }|j        dk    rt          d|› d|j        › d�¦  «        ‚t          j        |j        d¬	¦  «        }|j	        �|j	        j
        €t          d
|› d�¦  «        ‚|j	        j
        }g }|                     d¬¦  «        D �]N}	|	                     dd¦  «        }
t          |
t          ¦  «        sŒ/t          j        d|
¬¦  «        }|rD|                     d¦  «        }|	                     d¬¦  «        }|                     ||df¦  «         Œ‹t          j        d|
¬¦  «        }|rD|                     d¦  «        }|	                     d¬¦  «        }|                     ||df¦  «         Œçt          j        d|
¬¦  «        }|rO|                     d¦  «        }|	                     d¬¦  «        }|                     ||t&          j        f¦  «         �ŒN�ŒP||fS )Nr   z,https://drive.google.com/embeddedfolderview?)r7   éÈ   z2Failed to retrieve folder contents for folder ID: z (status code z¥). You may need to change the permission to 'Anyone with the link', or have had many accesses. Check FAQ in https://github.com/wkentaro/gdown?tab=readme-ov-file#faq.zhtml.parser)Úfeaturesz/Failed to parse folder contents for folder ID: z&. The page structure may have changed.Úa)r   ÚhrefrA   z3https://drive\.google\.com/file/d/([-\w]{25,})/view)ÚpatternÚstringr   T)Ústripzapplication/octet-streamz-https://docs\.google\.com/\w+/d/([-\w]{25,})/z5https://drive\.google\.com/drive/folders/([-\w]{25,}))rZ   r[   Ú	urlencodeÚgetÚstatus_coder	   Úbs4ÚBeautifulSoupÚtextÚtitlerg   Úfind_allÚ
isinstancer   ÚreÚmatchÚgroupÚget_textr(   r   r   )r?   r@   r7   Úparamsr/   ÚresÚsoupÚfolder_namer   Úa_tagre   Ú
file_matchÚfile_idÚ	file_nameÚ
docs_matchÚfolder_matchÚchild_folder_idÚ
child_names                     r   Ú_parse_embedded_folder_viewr‚   Í   s…  € õ
 Œ\×#Ò# T¨9Ð$5Ñ6Ô6€FØ
A¸Ð
AÐ
A€CØ
�(Š(�3˜vˆ(Ñ
&Ô
&€CØ
„˜#ÒÐÝðUÀð Uð UØœOðUð Uð Uñ
ô 
ð 	
õ Ô˜SœX°Ð>Ñ>Ô>€Dà„zÐ˜TœZÔ.Ð6Ýð3¸ið 3ð 3ð 3ñ
ô 
ð 	
ð ”*Ô#€Kà+-€HØ—’ C�Ñ(Ô(ð "ñ "ˆØ�yŠy˜ Ñ$Ô$ˆÝ˜$¥Ñ$Ô$ð 	Øå”XØJØð
ñ 
ô 
ˆ
ð ð 	Ø ×&Ò& qÑ)Ô)ˆGØŸš¨T˜Ñ2Ô2ˆIØ�OŠO˜W iÐ1KÐLÑMÔMÐMØõ ”XØDØð
ñ 
ô 
ˆ
ð ð 	Ø ×&Ò& qÑ)Ô)ˆGØŸš¨T˜Ñ2Ô2ˆIØ�OŠO˜W iÐ1KÐLÑMÔMÐMØå”xØLØð
ñ 
ô 
ˆð ð 	Ø*×0Ò0°Ñ3Ô3ˆOØŸš¨d˜Ñ3Ô3ˆJØ�OŠO˜_¨jÕ:JÔ:VÐWÑXÔXÐXÙñ		ð ˜Ð"Ð"r   c                ó–  — t          | ||¬¦  «        \  }}t          ||t          j        ¬¦  «        }|D ]”\  }}}	|	t          j        k    r>|st          d||¦  «         |j                             t          |||	¬¦  «        ¦  «         ŒT|st          d||¦  «         t          | |||¬¦  «        }
|j                             |
¦  «         Œ•|S )N)r?   r@   r7   )r   r   r   zProcessing filezRetrieving folderr>   )r‚   r   r   rF   r   r(   rI   )r?   r@   r2   r7   ry   r   r"   Úchild_idr�   Ú
child_typeÚchilds              r   rI   rI     s4  € õ 8Ø˜Y¨vðñ ô Ñ€K�õ #ØØÝÔ)ðñ ô €Kð -5ð +ð +Ñ(ˆ�*˜jØÕ)Ô5Ò5Ð5Øð ÝØ%ØØñô ð ð
 Ô ×'Ò'Ý ØØ#Ø#ðñ ô ñô ð ð àð 	ÝØ#ØØñô ð õ
 6ØØØØð	
ñ 
ô 
ˆð 	Ô×#Ò# EÑ*Ô*Ð*Ð*ØÐr   )r"   r   r#   r   r   r$   )NNNFNNTTNFF)r/   r0   r   r0   r1   r0   r2   r   r3   r0   r4   r5   r6   r   r7   r8   r9   r0   r:   r   r;   r   r   r<   )r/   r   r   r   )T)r?   r_   r@   r   r7   r8   r   r`   )FT)
r?   r_   r@   r   r2   r   r7   r8   r   r   )Ú
__future__r   rJ   Úos.pathrB   r)   rr   rG   Úurllib.parserZ   rl   Úrequestsr   r   r   r   Ú
exceptionsr	   r   r+   rV   rE   r‚   rI   r!   r   r   ú<module>rŒ      sœ  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð à 
€
€
€
Ø €€€à /Ð /Ð /Ð /Ð /Ð /Ø "Ð "Ð "Ð "Ð "Ð "Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %ð-ð -ð -ð -ð -ñ -ô -ð -ð&ð ð ð ð$ ØØØØØØØØ!ØØðOð Oð Oð Oð OðdFð Fð Fð Fð ð?#ð ?#ð ?#ð ?#ð ?#ðJ Øð	.ð .ð .ð .ð .ð .ð .r   