yt-dlp_alexwlchan: switch to chives.fetch for HTTP requests
- ID
d63f9a4- date
2026-03-30 08:16:32+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
6f5f6e3- message
yt-dlp_alexwlchan: switch to `chives.fetch` for HTTP requests- changed files
4 files, 13 additions, 23 deletions
Changed files
dev_requirements.txt (1981) → dev_requirements.txt (2049)
diff --git a/dev_requirements.txt b/dev_requirements.txt
index 82488aa..99f39be 100644
--- a/dev_requirements.txt
+++ b/dev_requirements.txt
@@ -1,6 +1,6 @@
# This file was autogenerated by uv via the following command:
-# uv pip compile dev_requirements.in --output-file dev_requirements.txt
-alexwlchan-chives==28
+# uv pip compile dev_requirements.in --output-file=dev_requirements.txt --exclude-newer=P7D --exclude-newer-package alexwlchan-chives=false
+alexwlchan-chives==30
# via -r requirements.txt
brotli==1.2.0
# via -r requirements.txt
@@ -70,11 +70,11 @@ pytest-cov==7.1.0
# via -r dev_requirements.in
pytest-xdist==3.8.0
# via -r dev_requirements.in
-requests==2.33.0
+requests==2.32.5
# via
# -r requirements.txt
# gallery-dl
-ruff==0.15.8
+ruff==0.15.7
# via -r dev_requirements.in
types-yt-dlp==2026.3.17.20260318
# via -r dev_requirements.in
requirements.in (80) → requirements.in (78)
diff --git a/requirements.in b/requirements.in
index be495a7..289d123 100644
--- a/requirements.in
+++ b/requirements.in
@@ -1,5 +1,4 @@
-alexwlchan-chives[media]
-certifi
+alexwlchan-chives[fetch,media]
gallery-dl
hyperlink
yt-dlp[curl-cffi,default]
requirements.txt (961) → requirements.txt (1028)
diff --git a/requirements.txt b/requirements.txt
index 50a4138..c4a7e9e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,12 +1,12 @@
# This file was autogenerated by uv via the following command:
-# uv pip compile requirements.in --output-file requirements.txt
-alexwlchan-chives==28
+# uv pip compile requirements.in --output-file=requirements.txt --exclude-newer=P7D --exclude-newer-package alexwlchan-chives=false
+alexwlchan-chives==30
# via -r requirements.in
brotli==1.2.0
# via yt-dlp
certifi==2026.2.25
# via
- # -r requirements.in
+ # alexwlchan-chives
# curl-cffi
# requests
# yt-dlp
@@ -32,7 +32,7 @@ pycparser==3.0
# via cffi
pycryptodomex==3.23.0
# via yt-dlp
-requests==2.33.0
+requests==2.32.5
# via
# gallery-dl
# yt-dlp
yt-dlp_alexwlchan.py (8729) → yt-dlp_alexwlchan.py (8488)
diff --git a/yt-dlp_alexwlchan.py b/yt-dlp_alexwlchan.py
index 4c702a7..cd6bed4 100755
--- a/yt-dlp_alexwlchan.py
+++ b/yt-dlp_alexwlchan.py
@@ -4,14 +4,12 @@ from datetime import datetime, timezone
import json
from pathlib import Path
import re
-import ssl
import subprocess
import sys
import tempfile
from typing import Any, TypedDict
-import urllib.request
-import certifi
+from chives.fetch import fetch_image
from chives.media import create_video_entity, VideoEntity
import hyperlink
from yt_dlp import YoutubeDL
@@ -66,17 +64,10 @@ def _choose_filename_suffix(content_type: str) -> str:
def download_file(out_dir: Path, url: str, basename: str) -> Path:
"""
- Download an image, and pick a file extension based on the image type.
+ Download an image and return the download path.
"""
- ssl_context = ssl.create_default_context(cafile=certifi.where())
-
- with urllib.request.urlopen(url, context=ssl_context) as resp:
- img_data = resp.read()
- resp.close()
-
- suffix = _choose_filename_suffix(resp.headers["content-type"])
-
- out_path = out_dir / (basename + suffix)
+ img_data, img_format = fetch_image(url)
+ out_path = out_dir / (basename + "." + img_format)
with open(out_path, "xb") as out_file:
out_file.write(img_data)