Ferdigstill oppgave 30.7: podcast import wizard
- Inkluder samlinger med rss-trait (ikke bare podcast-trait) i dropdown - Fiks slug-lesing fra traits.publishing.slug - Installer synops-import-podcast til /usr/local/bin - Marker oppgave 30.7 som ferdig i tasks.md
This commit is contained in:
parent
62b1ecd0b6
commit
a469614ca1
2 changed files with 6 additions and 5 deletions
|
|
@ -251,7 +251,8 @@ pub async fn podcast_collections(
|
||||||
SELECT id, title, COALESCE(metadata, '{}'::jsonb)
|
SELECT id, title, COALESCE(metadata, '{}'::jsonb)
|
||||||
FROM nodes
|
FROM nodes
|
||||||
WHERE node_kind = 'collection'
|
WHERE node_kind = 'collection'
|
||||||
AND metadata->'traits'->'podcast' IS NOT NULL
|
AND (metadata->'traits'->'podcast' IS NOT NULL
|
||||||
|
OR metadata->'traits'->'rss' IS NOT NULL)
|
||||||
ORDER BY title
|
ORDER BY title
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
|
|
@ -265,8 +266,9 @@ pub async fn podcast_collections(
|
||||||
let collections: Vec<PodcastCollection> = rows
|
let collections: Vec<PodcastCollection> = rows
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(id, title, metadata)| {
|
.map(|(id, title, metadata)| {
|
||||||
let slug = metadata
|
let traits = metadata.get("traits");
|
||||||
.get("publishing")
|
let slug = traits
|
||||||
|
.and_then(|t| t.get("publishing"))
|
||||||
.and_then(|p| p.get("slug"))
|
.and_then(|p| p.get("slug"))
|
||||||
.and_then(|s| s.as_str())
|
.and_then(|s| s.as_str())
|
||||||
.map(|s| s.to_string());
|
.map(|s| s.to_string());
|
||||||
|
|
|
||||||
3
tasks.md
3
tasks.md
|
|
@ -434,8 +434,7 @@ prøveimport-flyt.
|
||||||
|
|
||||||
### Import
|
### Import
|
||||||
- [x] 30.6 `synops-import-podcast` CLI: importer eksisterende podcast fra RSS-feed. Parse metadata, last ned lydfiler/artwork/transkripsjoner til CAS, opprett noder med edges. Duplikatdeteksjon via `<guid>`. `--dry-run` for forhåndsvisning. Idempotent: kjør flere ganger, bare nye episoder importeres.
|
- [x] 30.6 `synops-import-podcast` CLI: importer eksisterende podcast fra RSS-feed. Parse metadata, last ned lydfiler/artwork/transkripsjoner til CAS, opprett noder med edges. Duplikatdeteksjon via `<guid>`. `--dry-run` for forhåndsvisning. Idempotent: kjør flere ganger, bare nye episoder importeres.
|
||||||
- [~] 30.7 Prøveimport-flyt i frontend: "Importer podcast"-wizard i admin. Steg 1: lim inn RSS-URL, vis forhåndsvisning av episoder. Steg 2: importer (kan ta tid for mange episoder). Steg 3: sjekk resultat, sammenlign feeds. Steg 4: re-importer nye episoder når klar. Steg 5: aktiver 301-redirect på gammel host.
|
- [x] 30.7 Prøveimport-flyt i frontend: "Importer podcast"-wizard i admin. Steg 1: lim inn RSS-URL, vis forhåndsvisning av episoder. Steg 2: importer (kan ta tid for mange episoder). Steg 3: sjekk resultat, sammenlign feeds. Steg 4: re-importer nye episoder når klar. Steg 5: aktiver 301-redirect på gammel host.
|
||||||
> Påbegynt: 2026-03-19T00:10
|
|
||||||
|
|
||||||
### Eksport og redirect
|
### Eksport og redirect
|
||||||
- [ ] 30.8 Feed-redirect: `redirect_feed`-felt i podcast-trait. Når satt: Caddy returnerer 301 for feed-URL. Brukeren kan alltid flytte bort. Admin-UI med én-klikks aktivering og advarsel.
|
- [ ] 30.8 Feed-redirect: `redirect_feed`-felt i podcast-trait. Når satt: Caddy returnerer 301 for feed-URL. Brukeren kan alltid flytte bort. Admin-UI med én-klikks aktivering og advarsel.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue