const getImages = () => Array.from(document.querySelectorAll('div[data-image-url] > img[src][data-iml]')).map(img => ({ image: img.src.split('&')[0], author: img.parentElement.dataset.authorName, source: img.parentElement.dataset.authorUrl }));
const images = {};
images.Astratta = getImages()
images.Arte = getImages()
images.Affari = getImages()
images.Ricorrenze = getImages()
images.Intrattenimento = getImages()
images.Famiglia = getImages()
images.Cibi_e_bevande = getImages()
images.Salute_e_bellezza = getImages()
images.Hobby_e_artigianato = getImages()
images.Casa_e_giardino = getImages()
images.Natura = getImages()
images.Motivi = getImages()
images.Ricreazione = getImages()
images.Scienza = getImages()
images.Shopping = getImages()
images.Tecnologia = getImages()
images.Trame = getImages()
images.Trasparente = getImages()
images.Viaggi = getImages()
JSON.stringify(images)
💖💣, [08/09/2025 12:45]
Scrivi uno script Python per parsare un JSON del seguente formato:
{
"Categoria": [
{
"image": "https://themes.googleusercontent.com/image?id=...",
"author": "...",
"source": "..."
},
...
],
...
}
Per ogni categoria crea una cartella. Per ogni elemento di ciascuna categoria, scarica l'immagine dall'URL "image" e salvala nella cartella con il formato del nome "{id}.{estensione}", l'estensione è determinata dal content-type della risposta HTTP. Per ogni immagine, crea nella stessa directory un file di testo INI con lo stesso nome dell'immagine ("{id}.ini"), e scrivici dentro:
link = {image}
author = {author}
description = {source}
Microsoft Copilot, [08/09/2025 12:45]
Ecco uno script Python che fa esattamente ciò che hai descritto: legge un JSON strutturato per categorie, crea una cartella per ciascuna categoria, scarica le immagini, determina l'estensione dal content-type, e genera un file .ini
associato a ogni immagine.
🐍 Script Python
import os
import json
import requests
import mimetypes
from urllib.parse import urlparse, parse_qs
# Carica il JSON da file (oppure puoi usare json.loads() se lo hai come stringa)
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# Funzione per ottenere l'estensione dal content-type
def get_extension(content_type):
ext = mimetypes.guess_extension(content_type)
return ext.lstrip('.') if ext else 'jpg' # default a jpg se non riconosciuto
# Funzione per estrarre un ID dall'URL (es. da ?id=abc123)
def extract_id_from_url(url):
parsed = urlparse(url)
query = parse_qs(parsed.query)
return query.get('id', [os.path.basename(parsed.path).split('.')[0]])[0]
# Cicla sulle categorie
for category, items in data.items():
os.makedirs(category, exist_ok=True)
for item in items:
image_url = item.get('image')
author = item.get('author', 'Unknown')
source = item.get('source', 'Unknown')
try:
response = requests.get(image_url, timeout=10)
response.raise_for_status()
content_type = response.headers.get('Content-Type', '')
extension = get_extension(content_type)
image_id = extract_id_from_url(image_url)
image_filename = f"{image_id}.{extension}"
image_path = os.path.join(category, image_filename)
# Salva l'immagine
with open(image_path, 'wb') as img_file:
img_file.write(response.content)
# Crea il file INI
ini_filename = f"{image_id}.ini"
ini_path = os.path.join(category, ini_filename)
with open(ini_path, 'w', encoding='utf-8') as ini_file:
ini_file.write(f"link = {image_url}\n")
ini_file.write(f"author = {author}\n")
ini_file.write(f"description = {source}\n")
print(f"✓ Salvato: {image_filename} e {ini_filename} in '{category}'")
except Exception as e:
print(f"⚠️ Errore con l'immagine '{image_url}': {e}")
📌 Note
Assicurati di avere il file data.json
nello stesso percorso dello script, oppure modifica il path.
Lo script usa requests
, quindi se non lo hai installato, puoi farlo con pip install requests
.
L’ID viene estratto dall’URL usando il parametro id
, oppure dal nome del file se non presente.
Se vuoi estendere lo script per gestire logging, retry automatici o validazioni più robuste, posso aiutarti anche con quello. Vuoi aggiungere qualcosa come supporto per immagini duplicate o verifica dell’autore?