Skip to main content

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)