mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-11 13:07:49 +01:00
Fixed violations: - PERF401: Use list comprehension (downloadCats, split) - SIM102: Combine nested if statements (keyboardCoop) - SIM113: Use enumerate (lichess_bot/tests) - B904: Add 'from None/e' to raises (engine, stockfish_analysis, generate_blunder_tests) - TRY300: Move return to else block (screen_locker) Per-file ignores added for TRY301: - lichess_bot/main.py: Null checks on subprocess streams - randomize_numbers/random_digits.py: Input validation Removed from global ignore (no violations): - RUF005, SIM103, SIM105, SIM108 Global ignore now only contains unavoidable conflicts: - D203/D213: Docstring style conflicts - COM812/ISC001: Formatter conflicts (per ruff docs)
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
"""Download cat images from TheCatAPI.
|
|
|
|
Fetches cat images in batches and saves them to a local directory.
|
|
"""
|
|
|
|
import json
|
|
import logging
|
|
import os
|
|
from pathlib import Path
|
|
|
|
import requests
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
MAX_REQUESTS = 90
|
|
REQUEST_TIMEOUT = 30 # seconds
|
|
|
|
requests_send = 0
|
|
while requests_send < MAX_REQUESTS:
|
|
res = requests.get(
|
|
"https://api.thecatapi.com/v1/images/search?limit=100&api_key=",
|
|
timeout=REQUEST_TIMEOUT,
|
|
)
|
|
requests_send += 1
|
|
response = json.loads(res.text)
|
|
urls = [cat.get("url") for cat in response]
|
|
|
|
Path("./CATS2").mkdir(parents=True, exist_ok=True)
|
|
for url in urls:
|
|
try:
|
|
# Get the image content
|
|
response = requests.get(url, timeout=REQUEST_TIMEOUT)
|
|
response.raise_for_status() # Raise an exception for HTTP errors
|
|
|
|
# Extract the image name from the URL
|
|
image_name = os.path.basename(url)
|
|
image_path = os.path.join("./CATS2/", image_name)
|
|
|
|
# Save the image to the directory
|
|
with open(image_path, "wb") as file:
|
|
file.write(response.content)
|
|
|
|
logging.info(f"Saved {url} as {image_path}")
|
|
|
|
except requests.exceptions.RequestException:
|
|
logging.exception(f"Failed to download {url}")
|