ElDuderino | Geschrieben: May 25 2024, 03:05 |
Usurpator 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: 2 · Aufrufe: 623 |
Offenes Thema (neu) Keine neuen Antworten Heisses Thema (neu) Keine neuen Antworten |
Umfrage (neu) Keine neuen Antworten Thema geschlossen! Verschobenes Thema! |
Aktuelles Datum: 30th May 2024 - 13:27 |