role_detector: classify items as Interstitial by collection name/tag patterns.
Wire chapter extraction + role detection into sync adapter (worker + presentation).
SQLite: persist/read role column, migration.
PUT /library/items/{id}/role endpoint for manual override.
52 lines
1.4 KiB
TOML
52 lines
1.4 KiB
TOML
[package]
|
|
name = "presentation"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[[bin]]
|
|
name = "k-tv"
|
|
path = "src/main.rs"
|
|
|
|
[features]
|
|
default = ["sqlite", "auth-jwt", "jellyfin"]
|
|
sqlite = ["dep:adapter-sqlite", "infra-wiring/sqlite"]
|
|
auth-jwt = ["adapter-auth/jwt"]
|
|
jellyfin = ["dep:adapter-jellyfin"]
|
|
local-files = ["dep:adapter-local-files", "dep:tokio-util"]
|
|
|
|
[dependencies]
|
|
domain = { workspace = true }
|
|
application = { workspace = true }
|
|
api-types = { workspace = true }
|
|
infra-wiring = { workspace = true }
|
|
adapter-common = { workspace = true }
|
|
adapter-auth = { workspace = true }
|
|
adapter-event-publisher = { workspace = true }
|
|
|
|
# Feature-gated adapters
|
|
adapter-sqlite = { workspace = true, optional = true }
|
|
adapter-jellyfin = { workspace = true, optional = true }
|
|
adapter-local-files = { workspace = true, optional = true }
|
|
|
|
# Framework
|
|
axum = { workspace = true }
|
|
axum-extra = { workspace = true, features = ["typed-header"] }
|
|
tower = { workspace = true }
|
|
tower-http = { workspace = true }
|
|
tokio = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
|
|
# Utils
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
uuid = { workspace = true }
|
|
chrono = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
anyhow = "1"
|
|
dotenvy = "0.15"
|
|
|
|
# Local-files streaming
|
|
tokio-util = { version = "0.7", features = ["io"], optional = true }
|