À l’ère numérique d’aujourd’hui, la gestion et le traitement des images par programmation peuvent vous faire gagner beaucoup de temps et d’efforts. Si vous cherchez à automatiser le processus de téléchargement d’images depuis le Web, vous êtes au bon endroit. Dans cet article, nous allons découvrir un script Python qui fait exactement cela en utilisant l'API Pexels, une source populaire de photos d'archives de haute qualité.
Aperçu
Le script Python fourni ici vous permet de rechercher des images sur Pexels en fonction d'une requête, de les télécharger si elles répondent à certains critères et de les enregistrer sur votre système local. Le script utilise plusieurs bibliothèques et API puissantes, notamment les requêtes, l'API Pillow et Pexels.
Principales fonctionnalités du script
Intégration API : récupérez des images de Pexels à l'aide de leur API.
Filtrage dynamique : sélectionnez les images en fonction de leurs dimensions et de leur orientation.
Simulation de date : bien que l'API Pexels ne prenne pas directement en charge le filtrage basé sur la date, le script le simule en générant une date aléatoire.
Limitation du débit : évitez d'atteindre les limites de débit de l'API avec des délais aléatoires.
Comprendre le code
Importations et configuration
import os import requests from PIL import Image from io import BytesIO import random import time from datetime import datetime, timedelta
Le script commence par l'importation des bibliothèques essentielles. Voici un bref aperçu :
API_KEY = '...' # Replace with your actual Pexels API key BASE_URL = 'https://api.pexels.com/v1/search' OUTPUT_DIR = 'output' SEARCH_QUERY = 'Subaru Forester' MIN_WIDTH = 1080 MIN_HEIGHT = 1920 NUM_IMAGES = 16 ORIENTATION = 'vertical'
Configurez votre clé API, l'URL de base pour Pexels et spécifiez d'autres paramètres tels que la requête de recherche, les dimensions minimales de l'image, le nombre d'images à télécharger et l'orientation de l'image.
Assurer l'existence du répertoire de sortie
if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR)
Le script vérifie si le répertoire de sortie existe et le crée si nécessaire.
Récupération d'images
def get_images(query, page=1, per_page=15): params = { 'query': query, 'page': page, 'per_page': per_page } response = requests.get(BASE_URL, headers=headers, params=params) response.raise_for_status() return response.json()
Cette fonction envoie une requête à l'API Pexels pour récupérer des images en fonction de la requête de recherche et d'autres paramètres.
Téléchargement et enregistrement d'images
def download_and_save_image(url, filename): response = requests.get(url) response.raise_for_status() img = Image.open(BytesIO(response.content)) if img.width >= MIN_WIDTH and img.height >= MIN_HEIGHT: if ORIENTATION == 'vertical' and (img.height / img.width > 1.4): img.save(filename) print(f'Saved {filename}') return 1 elif ORIENTATION == 'horizontal' and (img.width / img.height > 1.4): img.save(filename) print(f'Saved {filename}') return 1 return 0
Cette fonction gère le téléchargement d'une image à partir de l'URL, la vérification de ses dimensions et de son orientation, et sa sauvegarde si elle répond aux critères.
Génération de dates aléatoires
def generate_random_date(): end_date = datetime.now() start_date = end_date - timedelta(days=4*365) random_date = start_date + timedelta(days=random.randint(0, 4*365)) return random_date
Cette fonction génère une date aléatoire au cours des quatre dernières années. Bien que l'API Pexels ne fournisse pas directement de filtrage basé sur la date, cette date aléatoire simule un tel filtre.
Fonction principale
def main(): images_downloaded = 0 page = 1 seen_images = set() target_date = generate_random_date() print(f"Target date for filtering: {target_date.strftime('%Y-%m-%d')}") while images_downloaded < NUM_IMAGES: data = get_images(SEARCH_QUERY, page) photos = data.get('photos', []) if not photos: print('No more photos found.') break random.shuffle(photos) # Shuffle to get a more random selection for photo in photos: if images_downloaded >= NUM_IMAGES: break image_url = photo['src']['original'] photo_date = datetime.strptime(photo['created_at'], '%Y-%m-%dT%H:%M:%S%z') if 'created_at' in photo else datetime.now() if photo_date > target_date and image_url not in seen_images: filename = os.path.join(OUTPUT_DIR, f'image_{images_downloaded + 1}.jpg') if download_and_save_image(image_url, filename): images_downloaded += 1 seen_images.add(image_url) page += 1 time.sleep(random.uniform(1, 2)) # Sleep to avoid hitting API rate limits
La fonction main() coordonne le processus de récupération, de téléchargement et de sauvegarde des images. Il gère la pagination, vérifie les images en double et impose des délais pour respecter les limites de débit de l'API.
Exécuter le script
Pour exécuter ce script, assurez-vous d'avoir remplacé API_KEY par votre clé API Pexels réelle et d'avoir ajusté les autres paramètres si nécessaire. Enregistrez le script dans un fichier .py et exécutez-le à l'aide d'un interpréteur Python. Les images qui répondent aux critères spécifiés seront enregistrées dans le répertoire de sortie.
Conclusion
L'automatisation des téléchargements d'images peut rationaliser votre flux de travail et garantir que vous disposez d'images de haute qualité. Ce script Python fournit une base solide pour de telles tâches, avec une flexibilité de personnalisation en fonction de vos besoins. Que vous travailliez sur un projet personnel ou que vous intégriez le téléchargement d'images dans une application plus grande, ce script démontre la puissance et la polyvalence de Python dans la gestion de tâches Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!