mirror of
https://github.com/calibrain/shelfmark.git
synced 2026-04-20 05:51:21 -04:00
Emoji check fix Fix multi language books Fix DNS in Chromium Headless Fix DNS IPv6 address by un-abreviating them Fix typo in Quad9 DNS
102 lines
3.8 KiB
Python
102 lines
3.8 KiB
Python
"""Configuration settings for the book downloader application."""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
import json
|
|
import env
|
|
from logger import setup_logger
|
|
|
|
logger = setup_logger(__name__)
|
|
|
|
for key, value in env.__dict__.items():
|
|
if not key.startswith('_'):
|
|
if key == "AA_DONATOR_KEY" and value.strip() != "":
|
|
value = "REDACTED"
|
|
logger.info(f"{key}: {value}")
|
|
|
|
with open("data/book-languages.json") as file:
|
|
_SUPPORTED_BOOK_LANGUAGE = json.load(file)
|
|
|
|
# Directory settings
|
|
BASE_DIR = Path(__file__).resolve().parent
|
|
logger.info(f"BASE_DIR: {BASE_DIR}")
|
|
if env.ENABLE_LOGGING:
|
|
env.LOG_DIR.mkdir(exist_ok=True)
|
|
|
|
# Create necessary directories
|
|
env.TMP_DIR.mkdir(exist_ok=True)
|
|
env.INGEST_DIR.mkdir(exist_ok=True)
|
|
|
|
CROSS_FILE_SYSTEM = os.stat(env.TMP_DIR).st_dev != os.stat(env.INGEST_DIR).st_dev
|
|
logger.info(f"STAT TMP_DIR: {os.stat(env.TMP_DIR)}")
|
|
logger.info(f"STAT INGEST_DIR: {os.stat(env.INGEST_DIR)}")
|
|
logger.info(f"CROSS_FILE_SYSTEM: {CROSS_FILE_SYSTEM}")
|
|
|
|
# Network settings
|
|
_custom_dns = env._CUSTOM_DNS.lower().strip()
|
|
_doh_server = ""
|
|
if _custom_dns == "google":
|
|
CUSTOM_DNS = ["8.8.8.8", "8.8.4.4", "2001:4860:4860:0000:0000:0000:0000:8888", "2001:4860:4860:0000:0000:0000:0000:8844"]
|
|
_doh_server = "https://dns.google/dns-query"
|
|
elif _custom_dns == "quad9":
|
|
CUSTOM_DNS = ["9.9.9.9", "149.112.112.112", "2620:00fe:0000:0000:0000:0000:0000:00fe", "2620:00fe:0000:0000:0000:0000:0000:0009"]
|
|
_doh_server = "https://dns.quad9.net/dns-query"
|
|
elif _custom_dns == "cloudflare":
|
|
CUSTOM_DNS = ["1.1.1.1", "1.0.0.1", "2606:4700:4700:0000:0000:0000:0000:1111", "2606:4700:4700:0000:0000:0000:0000:1001"]
|
|
_doh_server = "https://cloudflare-dns.com/dns-query"
|
|
elif _custom_dns == "opendns":
|
|
CUSTOM_DNS = ["208.67.222.222", "208.67.220.220", "2620:0119:0035:0000:0000:0000:0000:0035", "2620:0119:0053:0000:0000:0000:0000:0053"]
|
|
_doh_server = "https://doh.opendns.com/dns-query"
|
|
else:
|
|
_custom_dns_ip = _custom_dns.split(",")
|
|
CUSTOM_DNS = [dns.strip() for dns in _custom_dns_ip if dns.replace(":", "").replace(".", "").strip().isdigit()]
|
|
logger.info(f"CUSTOM_DNS: {CUSTOM_DNS}")
|
|
DOH_SERVER = _doh_server
|
|
if env.USE_DOH:
|
|
DOH_SERVER = _doh_server
|
|
else:
|
|
DOH_SERVER = ""
|
|
logger.info(f"DOH_SERVER: {DOH_SERVER}")
|
|
|
|
# Proxy settings
|
|
PROXIES = {}
|
|
if env.HTTP_PROXY:
|
|
PROXIES["http"] = env.HTTP_PROXY
|
|
if env.HTTPS_PROXY:
|
|
PROXIES["https"] = env.HTTPS_PROXY
|
|
logger.info(f"PROXIES: {PROXIES}")
|
|
|
|
# Anna's Archive settings
|
|
AA_BASE_URL = env._AA_BASE_URL
|
|
AA_AVAILABLE_URLS = ["https://annas-archive.org", "https://annas-archive.se", "https://annas-archive.li"]
|
|
AA_AVAILABLE_URLS.extend(env._AA_ADDITIONAL_URLS.split(","))
|
|
AA_AVAILABLE_URLS = [url.strip() for url in AA_AVAILABLE_URLS if url.strip()]
|
|
|
|
# File format settings
|
|
SUPPORTED_FORMATS = env._SUPPORTED_FORMATS.split(",")
|
|
logger.info(f"SUPPORTED_FORMATS: {SUPPORTED_FORMATS}")
|
|
|
|
# Complex language processing logic kept in config.py
|
|
BOOK_LANGUAGE = env._BOOK_LANGUAGE.split(',')
|
|
BOOK_LANGUAGE = [l for l in BOOK_LANGUAGE if l in [lang['code'] for lang in _SUPPORTED_BOOK_LANGUAGE]]
|
|
if len(BOOK_LANGUAGE) == 0:
|
|
BOOK_LANGUAGE = ['en']
|
|
|
|
# Custom script settings with validation logic
|
|
CUSTOM_SCRIPT = env._CUSTOM_SCRIPT
|
|
if CUSTOM_SCRIPT:
|
|
if not os.path.exists(CUSTOM_SCRIPT):
|
|
logger.warn(f"CUSTOM_SCRIPT {CUSTOM_SCRIPT} does not exist")
|
|
CUSTOM_SCRIPT = ""
|
|
elif not os.access(CUSTOM_SCRIPT, os.X_OK):
|
|
logger.warn(f"CUSTOM_SCRIPT {CUSTOM_SCRIPT} is not executable")
|
|
CUSTOM_SCRIPT = ""
|
|
|
|
# Debugging settings
|
|
if not env.USING_EXTERNAL_BYPASSER:
|
|
# Virtual display settings for debugging internal cloudflare bypasser
|
|
VIRTUAL_SCREEN_SIZE = (1024, 768)
|
|
RECORDING_DIR = env.LOG_DIR / "recording"
|
|
if env.DEBUG:
|
|
RECORDING_DIR.mkdir(parents=True, exist_ok=True)
|