<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.minerva-apps.com/index.php?action=history&amp;feed=atom&amp;title=Gdown_batch_downloader.py</id>
	<title>Gdown batch downloader.py - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.minerva-apps.com/index.php?action=history&amp;feed=atom&amp;title=Gdown_batch_downloader.py"/>
	<link rel="alternate" type="text/html" href="https://wiki.minerva-apps.com/index.php?title=Gdown_batch_downloader.py&amp;action=history"/>
	<updated>2026-05-01T18:16:14Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.minerva-apps.com/index.php?title=Gdown_batch_downloader.py&amp;diff=1973&amp;oldid=prev</id>
		<title>Andrea il 10:16, 8 lug 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.minerva-apps.com/index.php?title=Gdown_batch_downloader.py&amp;diff=1973&amp;oldid=prev"/>
		<updated>2025-07-08T10:16:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Versione delle 10:16, 8 lug 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Riga 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Scaricare file di grandi dimensioni da Google Drive]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Scaricare file di grandi dimensioni da Google Drive&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|&amp;amp;larr; ritorno&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Andrea</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.minerva-apps.com/index.php?title=Gdown_batch_downloader.py&amp;diff=1972&amp;oldid=prev</id>
		<title>Andrea il 10:16, 8 lug 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.minerva-apps.com/index.php?title=Gdown_batch_downloader.py&amp;diff=1972&amp;oldid=prev"/>
		<updated>2025-07-08T10:16:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Versione delle 10:16, 8 lug 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Riga 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Scaricare file di grandi dimensioni da Google Drive&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Andrea</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.minerva-apps.com/index.php?title=Gdown_batch_downloader.py&amp;diff=1971&amp;oldid=prev</id>
		<title>Andrea: Creata pagina con &quot;[[]]  &lt;pre&gt; import subprocess import os import sys from datetime import datetime import importlib.util  # File con i link FILE_LIST = &quot;gdown_files.txt&quot; # File di log LOG_FILE...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.minerva-apps.com/index.php?title=Gdown_batch_downloader.py&amp;diff=1971&amp;oldid=prev"/>
		<updated>2025-07-08T10:15:48Z</updated>

		<summary type="html">&lt;p&gt;Creata pagina con &amp;quot;[[]]  &amp;lt;pre&amp;gt; import subprocess import os import sys from datetime import datetime import importlib.util  # File con i link FILE_LIST = &amp;quot;gdown_files.txt&amp;quot; # File di log LOG_FILE...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import subprocess&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
import importlib.util&lt;br /&gt;
&lt;br /&gt;
# File con i link&lt;br /&gt;
FILE_LIST = &amp;quot;gdown_files.txt&amp;quot;&lt;br /&gt;
# File di log&lt;br /&gt;
LOG_FILE = &amp;quot;gdown_download.log&amp;quot;&lt;br /&gt;
# File cookie&lt;br /&gt;
COOKIE_FILE = &amp;quot;cookies.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
USE_COOKIES = False  # Flag globale&lt;br /&gt;
&lt;br /&gt;
def log(message):&lt;br /&gt;
    timestamp = datetime.now().strftime(&amp;quot;[%Y-%m-%d %H:%M:%S]&amp;quot;)&lt;br /&gt;
    line = f&amp;quot;{timestamp} {message}&amp;quot;&lt;br /&gt;
    print(line)&lt;br /&gt;
    with open(LOG_FILE, &amp;quot;a&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as logf:&lt;br /&gt;
        logf.write(line + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def ensure_gdown_installed():&lt;br /&gt;
    if importlib.util.find_spec(&amp;quot;gdown&amp;quot;) is None:&lt;br /&gt;
        log(&amp;quot;📦 'gdown' non trovato. Lo installo con pip...&amp;quot;)&lt;br /&gt;
        try:&lt;br /&gt;
            subprocess.check_call([sys.executable, &amp;quot;-m&amp;quot;, &amp;quot;pip&amp;quot;, &amp;quot;install&amp;quot;, &amp;quot;gdown&amp;quot;])&lt;br /&gt;
            log(&amp;quot;✅ gdown installato correttamente.&amp;quot;)&lt;br /&gt;
        except subprocess.CalledProcessError:&lt;br /&gt;
            log(&amp;quot;❌ Errore nell'installazione di gdown. Interruzione.&amp;quot;)&lt;br /&gt;
            sys.exit(1)&lt;br /&gt;
    else:&lt;br /&gt;
        log(&amp;quot;✅ 'gdown' è già installato.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def ask_for_cookie_usage():&lt;br /&gt;
    global USE_COOKIES&lt;br /&gt;
    if os.path.exists(COOKIE_FILE):&lt;br /&gt;
        answer = input(&amp;quot;🔐 È stato trovato 'cookies.txt'. Vuoi usarlo per i download privati? (s/n): &amp;quot;).strip().lower()&lt;br /&gt;
        if answer == &amp;quot;s&amp;quot;:&lt;br /&gt;
            USE_COOKIES = True&lt;br /&gt;
            log(&amp;quot;✅ I cookie verranno utilizzati per i download.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            log(&amp;quot;➡️ Cookie ignorati.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        log(&amp;quot;ℹ️ Nessun file 'cookies.txt' trovato. I download saranno pubblici.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def download_files():&lt;br /&gt;
    if not os.path.exists(FILE_LIST):&lt;br /&gt;
        log(f&amp;quot;❌ File '{FILE_LIST}' non trovato.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    with open(FILE_LIST, &amp;quot;r&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as f:&lt;br /&gt;
        links = [line.strip() for line in f if line.strip()]&lt;br /&gt;
&lt;br /&gt;
    if not links:&lt;br /&gt;
        log(&amp;quot;⚠️ Nessun link trovato nel file.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    log(f&amp;quot;🚀 Inizio download di {len(links)} file...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for i, link in enumerate(links, 1):&lt;br /&gt;
        log(f&amp;quot;⬇️  [{i}/{len(links)}] Download in corso: {link}&amp;quot;)&lt;br /&gt;
        try:&lt;br /&gt;
            cmd = [&amp;quot;gdown&amp;quot;, &amp;quot;--fuzzy&amp;quot;, link]&lt;br /&gt;
            if USE_COOKIES:&lt;br /&gt;
                cmd += [&amp;quot;--cookies&amp;quot;, COOKIE_FILE]&lt;br /&gt;
&lt;br /&gt;
            process = subprocess.Popen(&lt;br /&gt;
                cmd,&lt;br /&gt;
                stdout=subprocess.PIPE,&lt;br /&gt;
                stderr=subprocess.STDOUT,&lt;br /&gt;
                text=True&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
            for line in process.stdout:&lt;br /&gt;
                print(line.strip())&lt;br /&gt;
                with open(LOG_FILE, &amp;quot;a&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as logf:&lt;br /&gt;
                    logf.write(line)&lt;br /&gt;
            process.wait()&lt;br /&gt;
&lt;br /&gt;
            if process.returncode == 0:&lt;br /&gt;
                log(f&amp;quot;✅ Download completato.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                log(f&amp;quot;❌ Download fallito con codice {process.returncode}.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            log(f&amp;quot;❌ Errore durante il download: {e}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    log(&amp;quot;🏁 Tutti i download completati.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    ensure_gdown_installed()&lt;br /&gt;
    ask_for_cookie_usage()&lt;br /&gt;
    download_files()&lt;br /&gt;
    if os.name == &amp;quot;nt&amp;quot;:&lt;br /&gt;
        input(&amp;quot;Premi INVIO per chiudere...&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrea</name></author>
		
	</entry>
</feed>