Files
the-daily-epub/Cargo.toml
T
thalladaandClaude Fable 5.1 c538afa540 Unwrap Scour's /r/rss/ redirector when canonicalizing URLs
Scour interest feeds link every entry through
https://scour.ing/r/rss/<percent-encoded article URL>, so the wrapper
became the article's canonical URL: the same post arriving via Hacker
News and Scour never merged, and the publication fallback showed
"scour.ing" instead of the site's own domain. Resolve the wrapper like
the Google News redirector. `publication_label` re-canonicalizes the
stored URL so the 477 articles saved with the wrapper show the real
domain too.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VXYGBPoHZSDSfE5WcJ9bvj
2026-09-09 18:12:30 +00:00

78 lines
2.3 KiB
TOML

[package]
name = "daily-epub"
version = "0.3.0"
edition = "2024"
[dependencies]
ammonia = "4.1.4"
anyhow = "1.0.104"
askama = "0.16.0"
async-trait = "0.1.92"
axum = "0.8.9"
axum-login = { git = "https://github.com/maxcountryman/axum-login.git", rev = "151c72d7a1b4646830f86b4332e6bd6e34d719a7", version = "0.18.0" }
base64 = "0.23.1"
clap = { version = "4.6.6", features = ["derive"] }
dom_smoothie = "0.18.0"
epub-builder = "0.8.3"
figment = { version = "0.10.19", features = ["toml", "env"] }
futures = "0.3.34"
hex = "0.4.3"
hmac = "0.13.0"
image = "0.25.10"
jiff = { version = "0.2.35", features = ["serde"] }
lettre = { version = "0.11", default-features = false, features = ["builder", "smtp-transport", "tokio1", "tokio1-rustls-tls", "hostname"] }
libc = "0.2.189"
password-auth = "1.0.0"
percent-encoding = "2.3.2"
rand = "0.10.2"
reqwest = { version = "0.13.4", default-features = false, features = [
"rustls",
"gzip",
"json",
"charset",
"http2",
"query",
"system-proxy",
] }
resvg = "0.48.1"
rpassword = "7.5.4"
scraper = "0.27.0"
serde = { version = "1.0.229", features = ["derive"] }
serde_json = "1.0.151"
sha2 = "0.11.0"
sqlx = { version = "0.9.0", default-features = false, features = [
"derive",
"json",
"macros",
"migrate",
"runtime-tokio",
"sqlite",
"tls-rustls-ring",
] }
thiserror = "2.0.20"
time = "0.3.55"
tiny-skia = "0.12.0"
tokio = { version = "1.53.1", features = ["full"] }
tokio-util = { version = "0.7.19", features = ["io"] }
toml = "1.1.4"
toml_edit = "0.25"
tower-http = { version = "0.7.0", features = ["trace", "fs", "request-id"] }
tower_governor = { version = "0.8.0", features = ["axum"] }
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
url = { version = "2.5.8", features = ["serde"] }
zip = { version = "6", default-features = false, features = ["deflate"] }
[profile.release]
# Per-request cost in the web server is JSON decode and template render, both
# CPU-bound and spread across crates; whole-program LTO and one codegen unit
# buy a slice of that for a longer release build (tests use the dev profile).
lto = "fat"
codegen-units = 1
[dev-dependencies]
figment = { version = "0.10.19", features = ["test", "toml", "env"] }
roxmltree = "0.21.1"
tempfile = "3.27.0"
tower = { version = "0.5.3", features = ["util"] }