From 1414bb94bfbcc7ba485c258225ec92e1e81c43b2 Mon Sep 17 00:00:00 2001 From: Amitai Schlair Date: Sun, 21 Jul 2013 20:06:12 -0400 Subject: [PATCH] Document podcasts, from scratch and by migrating. --- doc/features.mdwn | 10 +- doc/ikiwiki/directive/inline.mdwn | 5 +- doc/ikiwiki/directive/meta.mdwn | 3 +- doc/index.mdwn | 3 +- doc/podcast.mdwn | 18 ++++ doc/tips/migrating_podcast_to_ikiwiki.mdwn | 21 ++++ doc/todo/fancypodcast.mdwn | 114 +-------------------- doc/todo/fancypodcast/discussion.mdwn | 5 + 8 files changed, 57 insertions(+), 122 deletions(-) create mode 100644 doc/podcast.mdwn create mode 100644 doc/tips/migrating_podcast_to_ikiwiki.mdwn diff --git a/doc/features.mdwn b/doc/features.mdwn index 5bbe5ef21..61b23bb59 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -64,11 +64,11 @@ Ikiwiki can also [[plugins/aggregate]] external blogs, feeding them into the wiki. This can be used to create a Planet type site that aggregates interesting feeds. -You can also mix blogging with podcasting. Simply drop media files -where they will be picked up like blog posts. For fuller-featured -podcast feeds, enclose media files in blog posts using [[plugins/meta]]. -Either way, this will work for any files that you would care to -syndicate. +You can also mix blogging with [[podcasting|podcast]]. Simply drop +media files where they will be picked up like blog posts. For +fuller-featured podcast feeds, enclose media files in blog posts +using [[plugins/meta]]. Either way, this will work for any files +that you would care to syndicate. ## Valid html and [[css]] diff --git a/doc/ikiwiki/directive/inline.mdwn b/doc/ikiwiki/directive/inline.mdwn index c0d4e035b..c6c401b53 100644 --- a/doc/ikiwiki/directive/inline.mdwn +++ b/doc/ikiwiki/directive/inline.mdwn @@ -11,8 +11,9 @@ Any pages that match the specified [[PageSpec]] (in the example, any [[SubPage]] of "blog") will be part of the blog, and the newest 10 of them will appear in the page. Note that if files that are not pages match the [[PageSpec]], they will be included in the feed using RSS -enclosures, which is useful for simple podcasting; for fuller-featured -podcast feeds, enclose media files in blog posts using [[meta]]. +enclosures, which is useful for simple [[podcasting|podcast]]; for +fuller-featured podcast feeds, enclose media files in blog posts +using [[meta]]. The optional `rootpage` parameter tells the wiki that new posts to this blog should default to being [[SubPages|SubPage]] of "blog", and enables a diff --git a/doc/ikiwiki/directive/meta.mdwn b/doc/ikiwiki/directive/meta.mdwn index fbbffa575..4cb02c597 100644 --- a/doc/ikiwiki/directive/meta.mdwn +++ b/doc/ikiwiki/directive/meta.mdwn @@ -139,7 +139,8 @@ Supported fields: * enclosure Specifies a link to a file to be rendered as an "enclosure" in - RSS/Atom feeds (and a plain old link in HTML). Useful for podcasting. + RSS/Atom feeds (and a plain old link in HTML). Useful for + [[podcasting|podcast]]. * redir diff --git a/doc/index.mdwn b/doc/index.mdwn index 4c22ce0e0..89802c604 100644 --- a/doc/index.mdwn +++ b/doc/index.mdwn @@ -2,7 +2,8 @@ Ikiwiki is a **wiki compiler**. It converts wiki pages into HTML pages suitable for publishing on a website. Ikiwiki stores pages and history in a [[revision_control_system|rcs]] such as [[Subversion|rcs/svn]] or [[rcs/Git]]. There are many other [[features]], including support for -[[blogging|blog]], as well as a large array of [[plugins]]. +[[blogging|blog]] and [[podcasting|podcast]], as well as a large +array of [[plugins]]. [[!template id=links]] diff --git a/doc/podcast.mdwn b/doc/podcast.mdwn new file mode 100644 index 000000000..67eb793a7 --- /dev/null +++ b/doc/podcast.mdwn @@ -0,0 +1,18 @@ +A podcast is just a [[blog]] with RSS/Atom feeds containing media +enclosures. Once you've made a blog, ikiwiki gives you two ways to +turn it into a podcast. + +## Basic podcasting + +Put a media file where you'd put a blog post, and your `\[[!inline]]` +directive will include it as a media-only post. + +## Fancier podcasting + +Put the media file where `\[[!inline]]` _won't_ directly include it. +Write a blog post with `\[[!meta enclosure="WikiLink/to/media.mp3"]]` +and your show notes. + +----- + +See also [[tips/migrating_podcast_to_ikiwiki]]. diff --git a/doc/tips/migrating_podcast_to_ikiwiki.mdwn b/doc/tips/migrating_podcast_to_ikiwiki.mdwn new file mode 100644 index 000000000..ac460ea8d --- /dev/null +++ b/doc/tips/migrating_podcast_to_ikiwiki.mdwn @@ -0,0 +1,21 @@ +[[!toc]] + +First, get familiar with [[howto avoid flooding aggregators]]. + +## Into ikiwiki, from another CMS + +7. Copy content into ikiwiki, taking care to: + 7. Match article paths to preserve old permalinks. + 7. Match enclosure paths (or use redirects) to preserve old URLs. + 7. Match titles, post dates, and guids with `\[[!meta]]`. + 7. Match feed paths with permanent redirects from old Atom + location to `index.atom` (likewise for RSS). + 7. `\[[!inline]]` the articles. +7. Rerun `ikiwiki --setup`. + +## Within ikiwiki, from basic to fancy + +7. Exclude media files from `\[[!inline]]`. +7. Replace direct `\[[WikiLinks]]` to media files with + `\[[!meta enclosure="WikiLink/to/media.mp3"]]`. +7. Rerun `ikiwiki --setup`. diff --git a/doc/todo/fancypodcast.mdwn b/doc/todo/fancypodcast.mdwn index bff509325..179d76961 100644 --- a/doc/todo/fancypodcast.mdwn +++ b/doc/todo/fancypodcast.mdwn @@ -1,16 +1,9 @@ -ikiwiki's simple podcasting, while elegant and minimal, doesn't (as -mentioned in [[todo/blogging]]) produce full-featured feeds. In -fancy podcasts, episodes are accompanied by text content. The feeds -also have lots more metadata. - -[[!toc]] - ## Status [[!template id=gitbranch branch=schmonz/fancypodcast author="[[schmonz]]"]] [[!tag patch]] -Nothing new on the branch since 2013/07/21 merge to `master`. +Nothing new since 2013/07/21 [[merge|done]] to `master`. ## Features @@ -31,107 +24,6 @@ Episode description|(./) |(./) |(./) | Episode enclosure |(./) |(./) |(./) |(./) """]] -## Migration - -### Upgrading within ikiwiki: from simple to fancy - -#### My test podcast - -For this test, I chose a podcast that tries to work around ikiwiki's -current limitations by issuing two separate `inline`s: - -* One with `feedonly=yes` that includes `.mdwn`, `.pdf`, and `.mp3` -* One with `feeds=no` that includes only `.mdwn` (and makes a trail) - -This has the following effects: - -* Browser: sees just the articles (each of which has a manually - created link to its corresponding media file) -* Feedreader: sees all the articles and media in one flat stream -* Podcatcher: sees just the media (sans articles) - -I want instead to write one `inline` with these effects: - -* Browser: sees just the articles (each of which automatically links - to its enclosure) -* Feedreader: sees just the articles (each of which specifies its - enclosure) -* Podcatcher: sees just the enclosures (each of which has an enclosing - article, rendered as the media's "description") - -#### Upgrade steps - -7. Set up a non-production copy of the podcast. - 7. Visually diff RSS and Atom feeds against production. - 7. Subscribe to the copy (both feeds) in `r2e`, iTunes, Downcast. -7. Apply fancypodcast patch to the installed ikiwiki: - 7. `cd ~/Documents/trees/ikiwiki && git checkout fancypodcast` - 7. `git diff --no-prefix master > ~/Documents/trees/localpatches/www/ikiwiki/fancypodcast.diff` - 7. `cd ~/Documents/trees/pkgsrc-current/www/ikiwiki && make deinstall && make install clean` -7. Verify that simple podcasts are unaffected: - 7. Rerun `ikiwiki --setup`. - 7. `diff -uB simple-before.rss simple-after.rss` - * A few new elements and attributes, as expected. - 7. `diff -uB simple-before.atom simple-after.atom` - * No change. -7. Remove the feed-only `inline` and enable feeds on the remaining one. -7. Convert articles' manual download links to `\[[!meta enclosure=""]]`. -7. I want existing and future podcatchers to get my new fancy - episodes, and I know my podcast isn't in any planets, so I'm - going to skip [[tips/howto avoid flooding aggregators]]. -7. Rerun `ikiwiki --setup`. -7. Verify browser shows the same stuff. -7. `diff -uB simple-after.rss fancy-after.rss # and atom` - * MP3s and PDFs are no longer naked enclosures, but belong to - articles as they should. - * Articles have updated modification times, as they should. -7. `r2e run` (both RSS and Atom) - * Nothing new with the default `trust-guid = True` (otherwise - would expect updated articles). -7. iTunes "Update Podcast" (both RSS and Atom) - * Added one episode per article, with article text as the episode - description. - * Kept old naked-enclosure episodes around. -7. Downcast refresh (RSS): - * Added one episode per article, with article text as the episode - description. - * Kept old naked-enclosure episodes around. -7. Downcast refresh (Atom): - * Added one episode per article, with no episode description - (expected, see feature table). - * Kept old naked-enclosure episodes around. - -Different tradeoffs are possible. These seem okay to me. - -### Importing into ikiwiki: fancy (from another CMS) - -#### My test podcast - -For this test, I chose a podcast currently being published with -Textpattern and tru_podcast, because I'd strongly prefer to publish -it with ikiwiki instead. - -#### Upgrade steps - -7. Set up a non-production copy of the podcast. - 7. Visually diff RSS and Atom feeds against production. - 7. Subscribe to the copy (both feeds) in `r2e`, iTunes, Downcast. -7. With a fancypodcast-enabled ikiwiki installed: - 7. Copy content from Textpattern to ikiwiki: - 7. Match article paths to preserve `/YYYY/MM/DD/post-title` permalinks. - 7. Match enclosure paths (or redirect) to preserve Textpattern's URLs. - 7. Match titles, post dates, and guids with `\[[!meta]]`. - 7. Match feed paths with permanent redirects from `/atom/` to - `/index.atom` (and same for RSS). - 7. `\[[!inline]]` the articles. - 7. Rerun `ikiwiki --setup`. -7. Stop Textpattern, start ikiwiki. -7. Verify that podcatchers see the feeds and don't redownload anything. -7. Naively add two new blog posts, one with an enclosure. -7. Verify that podcatchers download the new enclosures. - ------ - ## Future improvements ### iTunes fancy podcasting @@ -177,7 +69,3 @@ it with ikiwiki instead. * Configurably generate additional subscription links (such as iTunes) alongside the RSS/Atom ones in [[plugins/inline]]. * Support Apple's "enhanced podcasts" (if they're still relevant). - ----- - -[[merged|done]] --[[Joey]] diff --git a/doc/todo/fancypodcast/discussion.mdwn b/doc/todo/fancypodcast/discussion.mdwn index bb225f89c..bffc532c9 100644 --- a/doc/todo/fancypodcast/discussion.mdwn +++ b/doc/todo/fancypodcast/discussion.mdwn @@ -1,5 +1,10 @@ # Round 1 +ikiwiki's simple podcasting, while elegant and minimal, doesn't (as +mentioned in [[todo/blogging]]) produce full-featured feeds. In +fancy podcasts, episodes are accompanied by text content. The feeds +also have lots more metadata. + ## Design 7. For each fancy podcast episode, write a blog post containing