This commit is contained in:
2026-02-11 18:16:07 -08:00
parent cc715e1fef
commit 1d0de1118b
27 changed files with 1167 additions and 1075 deletions

View File

@@ -16,7 +16,8 @@ from urllib.parse import urlparse
import requests
from API.HTTP import HTTPClient, get_requests_verify_value
from API.HTTP import HTTPClient
from API.requests_client import get_requests_session
from ProviderCore.base import Provider, SearchResult
from SYS.utils import sanitize_filename
from SYS.cli_syntax import get_field, get_free_text, parse_query
@@ -27,8 +28,6 @@ from Provider.metadata_provider import (
)
from SYS.utils import unique_path
# Resolve lazily to avoid import-time module checks (prevents debugger first-chance noise)
_ARCHIVE_VERIFY_VALUE = None # will be resolved on first session creation
_DEFAULT_ARCHIVE_SCALE = 4
_QUALITY_TO_ARCHIVE_SCALE = {
"high": 2,
@@ -38,12 +37,7 @@ _QUALITY_TO_ARCHIVE_SCALE = {
def _create_archive_session() -> requests.Session:
session = requests.Session()
global _ARCHIVE_VERIFY_VALUE
if _ARCHIVE_VERIFY_VALUE is None:
_ARCHIVE_VERIFY_VALUE = get_requests_verify_value()
session.verify = _ARCHIVE_VERIFY_VALUE
return session
return get_requests_session()
try:
from Crypto.Cipher import AES # type: ignore
@@ -590,10 +584,9 @@ class OpenLibrary(Provider):
if not ident:
return False, "no-archive-id"
try:
resp = requests.get(
resp = get_requests_session().get(
f"https://archive.org/metadata/{ident}",
timeout=8,
verify=_ARCHIVE_VERIFY_VALUE,
)
resp.raise_for_status()
data = resp.json() if resp is not None else {}
@@ -804,10 +797,9 @@ class OpenLibrary(Provider):
"""Check for a directly downloadable original PDF in Archive.org metadata."""
try:
metadata_url = f"https://archive.org/metadata/{book_id}"
response = requests.get(
response = get_requests_session().get(
metadata_url,
timeout=6,
verify=_ARCHIVE_VERIFY_VALUE,
)
response.raise_for_status()
metadata = response.json()
@@ -822,11 +814,10 @@ class OpenLibrary(Provider):
pdf_url = (
f"https://archive.org/download/{book_id}/{filename.replace(' ', '%20')}"
)
check_response = requests.head(
check_response = get_requests_session().head(
pdf_url,
timeout=4,
allow_redirects=True,
verify=_ARCHIVE_VERIFY_VALUE,
)
if check_response.status_code == 200:
return True, pdf_url