Fixat så bilderna landar i hämtade filer. Tar bort skalningsinformation m.m. efter filnamnet så att suffix blir korrekt.

This commit is contained in:
Joakim Persson
2024-08-13 15:13:59 +02:00
parent 8288450662
commit 6dab09c861
+15 -7
View File
@@ -3,6 +3,7 @@ import re
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import requests import requests
from urllib.parse import urljoin from urllib.parse import urljoin
import base64
def ladda_ner_bilder(url): def ladda_ner_bilder(url):
# Hämta HTML-sidan # Hämta HTML-sidan
@@ -25,7 +26,7 @@ def ladda_ner_bilder(url):
bilder.append(f"data:{bild_typ};base64,{bild_data}") bilder.append(f"data:{bild_typ};base64,{bild_data}")
# Ladda ner bilderna # Ladda ner bilderna
bild_katalog = "bilder" bild_katalog = os.path.expanduser("~/Downloads/bilder")
if not os.path.exists(bild_katalog): if not os.path.exists(bild_katalog):
os.makedirs(bild_katalog) os.makedirs(bild_katalog)
@@ -33,12 +34,19 @@ def ladda_ner_bilder(url):
if not bild_url.startswith('http'): if not bild_url.startswith('http'):
bild_url = urljoin(url, bild_url) bild_url = urljoin(url, bild_url)
svar = requests.get(bild_url) if bild_url.startswith('data:'):
if svar.status_code == 200: # Dekodera base64-strängen och spara den som en bild
filnamn = os.path.basename(bild_url) format, data = bild_url.split(';base64,')
fil_sökväg = os.path.join(bild_katalog, filnamn) data = base64.b64decode(data)
with open(fil_sökväg, 'wb') as f: filnamn = 'inline_' + str(len(bilder)) + '.gif'
f.write(svar.content) with open(os.path.join(bild_katalog, filnamn), 'wb') as f:
f.write(data)
else:
svar = requests.get(bild_url)
if svar.status_code == 200:
filnamn = os.path.basename(bild_url).split('?')[0]
with open(os.path.join(bild_katalog, filnamn), 'wb') as f:
f.write(svar.content)
print(f"Bilden {filnamn} har laddats ner till {bild_katalog}.") print(f"Bilden {filnamn} har laddats ner till {bild_katalog}.")
def main(): def main():