Document podcasts, from scratch and by migrating.
parent
b4a41c0595
commit
1414bb94bf
|
@ -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
|
the wiki. This can be used to create a Planet type site that aggregates
|
||||||
interesting feeds.
|
interesting feeds.
|
||||||
|
|
||||||
You can also mix blogging with podcasting. Simply drop media files
|
You can also mix blogging with [[podcasting|podcast]]. Simply drop
|
||||||
where they will be picked up like blog posts. For fuller-featured
|
media files where they will be picked up like blog posts. For
|
||||||
podcast feeds, enclose media files in blog posts using [[plugins/meta]].
|
fuller-featured podcast feeds, enclose media files in blog posts
|
||||||
Either way, this will work for any files that you would care to
|
using [[plugins/meta]]. Either way, this will work for any files
|
||||||
syndicate.
|
that you would care to syndicate.
|
||||||
|
|
||||||
## Valid html and [[css]]
|
## Valid html and [[css]]
|
||||||
|
|
||||||
|
|
|
@ -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
|
[[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
|
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
|
match the [[PageSpec]], they will be included in the feed using RSS
|
||||||
enclosures, which is useful for simple podcasting; for fuller-featured
|
enclosures, which is useful for simple [[podcasting|podcast]]; for
|
||||||
podcast feeds, enclose media files in blog posts using [[meta]].
|
fuller-featured podcast feeds, enclose media files in blog posts
|
||||||
|
using [[meta]].
|
||||||
|
|
||||||
The optional `rootpage` parameter tells the wiki that new posts to this
|
The optional `rootpage` parameter tells the wiki that new posts to this
|
||||||
blog should default to being [[SubPages|SubPage]] of "blog", and enables a
|
blog should default to being [[SubPages|SubPage]] of "blog", and enables a
|
||||||
|
|
|
@ -139,7 +139,8 @@ Supported fields:
|
||||||
* enclosure
|
* enclosure
|
||||||
|
|
||||||
Specifies a link to a file to be rendered as an "enclosure" in
|
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
|
* redir
|
||||||
|
|
||||||
|
|
|
@ -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
|
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]].
|
[[revision_control_system|rcs]] such as [[Subversion|rcs/svn]] or [[rcs/Git]].
|
||||||
There are many other [[features]], including support for
|
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]]
|
[[!template id=links]]
|
||||||
|
|
||||||
|
|
|
@ -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]].
|
|
@ -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`.
|
|
@ -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
|
## Status
|
||||||
|
|
||||||
[[!template id=gitbranch branch=schmonz/fancypodcast author="[[schmonz]]"]]
|
[[!template id=gitbranch branch=schmonz/fancypodcast author="[[schmonz]]"]]
|
||||||
[[!tag patch]]
|
[[!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
|
## Features
|
||||||
|
|
||||||
|
@ -31,107 +24,6 @@ Episode description|(./) |(./) |(./) |
|
||||||
Episode enclosure |(./) |(./) |(./) |(./)
|
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
|
## Future improvements
|
||||||
|
|
||||||
### iTunes fancy podcasting
|
### iTunes fancy podcasting
|
||||||
|
@ -177,7 +69,3 @@ it with ikiwiki instead.
|
||||||
* Configurably generate additional subscription links (such as
|
* Configurably generate additional subscription links (such as
|
||||||
iTunes) alongside the RSS/Atom ones in [[plugins/inline]].
|
iTunes) alongside the RSS/Atom ones in [[plugins/inline]].
|
||||||
* Support Apple's "enhanced podcasts" (if they're still relevant).
|
* Support Apple's "enhanced podcasts" (if they're still relevant).
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
[[merged|done]] --[[Joey]]
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
# Round 1
|
# 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
|
## Design
|
||||||
|
|
||||||
7. For each fancy podcast episode, write a blog post containing
|
7. For each fancy podcast episode, write a blog post containing
|
||||||
|
|
Loading…
Reference in New Issue