Merge remote-tracking branch 'schmonz/proxy'
[ikiwiki] / doc / todo / fancypodcast.mdwn
1 ## Status
2
3 [[!template id=gitbranch branch=schmonz/fancypodcast author="[[schmonz]]"]]
4 [[!tag patch]]
5
6 Nothing new since 2013/07/21 [[merge|done]] to `master`.
7
8 ## Features
9
10 [[!table data="""
11 Feature            |iTunes RSS|iTunes Atom|Downcast RSS|Downcast Atom
12 Feed image         |          |           |            |
13 Feed title         |(./)      |(./)       |(./)        |(./)
14 Feed publisher     |          |           |            |
15 Feed "category"    |          |           |            |
16 Feed date          |(./)      |(./)       |(./)        |(./)
17 Feed description   |(./)      |(./)       |(./)        |
18 Episode image      |          |           |            |
19 Episode title      |(./)      |(./)       |(./)        |(./)
20 Episode date       |(./)      |(./)       |(./)        |(./)
21 Episode duration   |          |           |            |
22 Episode author     |          |           |            |
23 Episode description|(./)      |(./)       |(./)        |
24 Episode enclosure  |(./)      |(./)       |(./)        |(./)
25 """]]
26
27 ## Future improvements
28
29 ### iTunes fancy podcasting
30
31 * [iTunes-specific tags](https://www.apple.com/itunes/podcasts/specs.html)
32   appear to be RSS-only
33     * If they work in Atom, teach `inline` to optionally iTunesify RSS/Atom.
34     * Else, add `itunes` as a third kind of feed (RSS plus more stuff).
35 * Notable tags for feeds:
36     * `itunes:subtitle`
37     * `itunes:author`
38     * `itunes:summary` (same as `description`)
39     * `itunes:owner` (includes `itunes:name` and `itunes:email`)
40     * `itunes:image href=''`
41     * `itunes:publisher`
42     * `itunes:category text=''` (can contain subcategories)
43     * `itunes:keywords`
44 * Notable tags for entries:
45     * `itunes:duration`
46         * [[!cpan Audio::TagLib]] might be fastest, if present and applicable
47         * [ffprobe](http://ffmpeg.org/ffprobe.html) is reasonably fast
48         * [mediainfo](http://mediainfo.sourceforge.net/) is way slower
49         * Cache computed durations as pagestate
50
51 ### Fancy podcast aggregating
52
53 * Write tests comparing a fancy podcast (HTML and feeds) against
54   the same podcast aggregated and republished, then make them pass
55   via changes to `aggregatepost.impl` and [[plugins/aggregate]].
56
57 ### Other ideas
58
59 * Don't render template text (e.g., "Use this template to insert a
60   note into a page") in feeds.
61 * Optionally specify the enclosure's:
62     * MIME type, in case `File::MimeInfo` guesses wrong.
63     * Duration, in case `ffprobe` guesses wrong.
64 * Optionally specify enclosures outside the wiki:
65     * Some people don't want to store big unchanging files in the VCS.
66     * Other people like [podcasting found media](http://huffduffer.com/about).
67     * We'd have to download the file just to compute some metadata
68       about it, and then somehow not frequently re-download it.
69 * Configurably generate additional subscription links (such as
70   iTunes) alongside the RSS/Atom ones in [[plugins/inline]].
71 * Support Apple's "enhanced podcasts" (if they're still relevant).