Salvia Forum

( Für Mitglieder: Zur Anmeldung | Für Gäste: Zur Registrierung )

37 Seiten  1 2 3 > » 

ElDuderino Geschrieben: Heute, 03:05


Usurpator
Group Icon

Gruppe: Admin
Beiträge: 544
Mitglied seit: 7.Oct 2002
Mitglieds-Nr.: 1


(Danke an Hogie, der mich darauf aufmerksam gemacht hat und dran geblieben ist.)

Abload.de stellt seine Dienste ein und wir haben hier viele wertvolle Bilder in Beiträgen, die auf abload.de hochgeladen wurden.

Ich habe die aus der Datenbank extrahiert und auf unseren Server geladen. Zugleich musste sowieso am Server was geändert werden, denn ich kam nicht mehr in den Container rein und die DB hätte einen Neustart des Containers nicht überlebt.

Ganz sicher bin ich noch nicht, ob wirklich alles so geklappt hat, wie es sollte... Es gab einige Errors und es war wider erwarten doch viel Handarbeit nötig, wie man an der Uhrzeit dieses Postings erkennen kann.

Ich stelle mein Download-Script (python3) hier rein, vielleicht nützt es auch anderen Admins. Es ist nicht schön, aber erfüllt seinen Zweck: Alle Bilder von abload.de, die in der Datenbank vorkommen, herunterladen.

Input ist Datenbank dump als .sql file, Output sind die Bilddateien.

CODE

import re
import os
import requests
from time import sleep
from urllib.parse import urlparse

with open('/tmp/db/database.sql', 'r') as file:
   sql_content = file.read()

url_pattern = r'https?://(?:www\.)?abload\.de/(?:\S+?)\.(?:png|jpe?g|gif)'
matches = re.findall(url_pattern, sql_content, re.IGNORECASE)

downloaded_urls = set()

for url in matches:
   try:
       url = url.replace("http://", "https://")
       url = url.replace("image.php?img=", "img/")

       headers = {
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0'
       }

       if "/thumb/" in url:
           print(f"Skipping {url} - Contains '/thumb/'")
           continue

       if url in downloaded_urls:
           print(f"Skipping {url} - Already downloaded")
           continue

       if os.path.exists(os.path.join('/tmp/abload/abload-backup', url.split('/')[-1])):
           print(f"Skipping {url} - File already exists")
           continue

       response = requests.get(url, headers=headers, allow_redirects=True)

       if response.status_code == 200 and response.headers.get('Content-Type', '').startswith('image'):
           print(f"Downloading {url}")

           file_extension = urlparse(url).path.split('.')[-1]
           
           with open(f"{url.split('/')[-1]}", 'wb') as file:
               file.write(response.content)

           downloaded_urls.add(url)
           sleep(1)
       else:
           print(f"Skipping {url} - Not an image or failed to fetch. Status code: {response.status_code}")

   except Exception as e:
       print(f"Error processing {url}: {str(e)}")
  zum Forum: Neuigkeiten & Support · zum Beitrag: #330852 · Antworten: 0 · Aufrufe: 25

37 Seiten  1 2 3 > » 

New Posts  Offenes Thema (neu)
No New Posts  Keine neuen Antworten
Hot topic  Heisses Thema (neu)
No new  Keine neuen Antworten
Poll  Umfrage (neu)
No new votes  Keine neuen Antworten
Closed  Thema geschlossen!
Moved  Verschobenes Thema!
 

stats
Aktuelles Datum: 25th May 2024 - 09:54
  
Linux powered Lighttpd Wir respektieren deine Privatsphäre. Keine IP-Speicherung! Stoppt die Vorratsdatenspeicherung!