synops/tools/synops-import-podcast/Cargo.toml
vegard 2cc389e7f5 synops-import-podcast: importer podcast fra RSS-feed (oppgave 30.6)
CLI-verktøy som parser RSS-feed, laster ned lydfiler og artwork til
CAS, og oppretter content-noder med has_media/belongs_to/og_image-edges.

Funksjoner:
- Duplikatdeteksjon via <guid> — idempotent ved gjentatt kjøring
- --dry-run for forhåndsvisning uten skriving til DB/CAS
- Metadata: tittel, beskrivelse, pubDate, duration, episode/season-nummer
- Lydfil → CAS → media-node + has_media-edge
- Artwork → CAS → media-node + og_image-edge
- publish_at satt fra pubDate i belongs_to-edge metadata
- --payload-json for jobbkø-integrasjon med maskinrommet
- JSON-output til stdout med detaljert per-episode status

Testet med The Daily (2801 episoder) og Huberman Lab (389 episoder)
i dry-run modus — parser korrekt inkl. episode-nummerering.
2026-03-19 00:06:37 +00:00

23 lines
774 B
TOML

[package]
name = "synops-import-podcast"
version = "0.1.0"
edition = "2024"
[[bin]]
name = "synops-import-podcast"
path = "src/main.rs"
[dependencies]
clap = { version = "4", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
uuid = { version = "1", features = ["v7", "serde"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid", "json", "chrono"] }
chrono = { version = "0.4", features = ["serde"] }
feed-rs = "2"
quick-xml = "0.37"
synops-common = { path = "../synops-common" }