Come scaricare un file da Google Drive

Tutti sanno che Google Drive è uno spazio a disposizione per le condivisioni degli utenti... A seconda del tipo di protezione che metto, posso anche rendere i file visibili a chiunque ne abbia il link. Il download del file avviene, di solito, accedendo alla "cartella" condivisa e "cliccando" il file che interessa...

Semplice. Anzi, semplicissimo, se hai un browser. Ma... se il browser non ce l'hai?

Antefatto

È successo, qualche tempo fa, di dover scaricare un file da oltre un Giga e mezzo dal Drive di Google e, successivamente, di doverlo ricaricare su un server: usando una connessione cellulare con giga limitati, oltre al tempo, avrei rimesso anche più di tre Gb di traffico.

Da qui la domanda: ma per forza devo usare il browser e perdere tempo e banda? Non potrei, meglio, collegarmi sul server e scaricare lì il file da caricare su quel file system?

La soluzione esiste...

Sì, quanto da me richiesto è possibile e si può fare da riga di comando sul server remoto utilizzando il comando Linux "wget" che consente il download di file di qualsiasi dimensione. Per eseguire questa operazione è necessario conoscere solo due informazioni: il "Folder ID" della condivisione ed il "File ID" del file da scaricare.

Pertanto, se anche voi, carissimi 2/3 lettori di questo sito, avete questa necessità, vi spiego, qui di seguito, come fare.

Come trovare il Folder ID

Il "Folder ID" è quella stringa di lettere, numeri e "trattino basso" che è nell'URL da cui dovete scaricare il file. Se l'url è di questo tipo:

https://drive.google.com/drive/folders/1oFnJCMjxj6iFK6A9m9gpNy9nJk36bfdP

il "Folder ID" è 1oFnJCMjxj6iFK6A9m9gpNy9nJk36bfdP; esso non servirà per scaricare il file ma per identificarlo meglio.

Come trovare il File ID

Un pochino più complesso è trovare il File ID, in quanto, nella pagina Web non è assolutamente visibile: a nulla valgono i vani tentativi di click sul pulsante destro del mouse o gli sguardi attenti nei dettagli del file. Nell'interfaccia utente non c'è traccia del File ID.

Per trovarlo, è necessario aprire il sorgente del file (in Chrome, Chromium, Firefox si fa con "Control+U") e fare una ricerca nella pagina (con Control+F) per la stringa del "Folder ID". La troveremo come secondo elemento in una particolare struttura dati, più o meno in fondo al sorgente della pagina HTML:

]
,["10Q7EZQeCcM0z7LMlLwkHDgI-H7iJY962",["1oFnJCMjxj6iFK6A9m9gpNy9nJk36bfdP"]
,"file_grande_da_scaricare.zip","application/pdf",false,null,false,false,false,1603365765809,1603365439000,null,null,484362,[[1,"04346926543666606562",null,null,null,null,false,null,"siteweb.com"]
]

Come si vede, il "Folder ID" è il secondo elemento tra parentesi quadre, esattamente tra il nome del file in chiaro ed il tanto ricercato "File ID".

Ora che abbiamo questo valore possiamo passare a scaricare il file con il comando WGET di Linux.

File piccoli e file grandi...

Dobbiamo fare una piccola distinzione: se il file è di dimensioni inferiori a 100 Megabytes, dobbiamo comporre il comando in modo diverso se il file è di dimensioni maggiori.

Pertanto, se il file è piccolo, da pochi bytes a 100 milioni, usiamo questo comando:

wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=File_ID' -O NOME_DEL_FILE

Pertanto, sostituendo il File ID con quello trovato, il comando diventa:

wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=10Q7EZQeCcM0z7LMlLwkHDgI-H7iJY962' -O  file_grande_da_scaricare.zip

Mentre, se il file è grande...

Le cose cambiano un pochino se il file è grande: superati i 100 Mb, il comando per scaricare il file diventa più complesso:

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=File_ID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=File_ID" -O Nome_del_File && rm -rf /tmp/cookies.txt

In questo modo wget gestisce anche i cookies di Goggle che poi rimuove al termine del download. Sostituendo le informazioni relatife al File ID ed al nome del file da salvare, il comando diventa:

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=10Q7EZQeCcM0z7LMlLwkHDgI-G7iKY95l' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=10Q7EZQeCcM0z7LMlLwkHDgI-G7iKY95l" -O Nome_del_File_piu_grande.ZIP && rm -rf /tmp/cookies.txt

In conclusione

Sì, è vero: questa pagina non c'entra molto con radio e dintorni ma l'ho scritta prima di tutto per mio promemoria: quando mi serve, so di trovare queste informazioni e fare il copia/incolla dei comandi già collaudati senza impazzire a trovarli di nuovo in rete...

Buon download a tutti!