Edited at

PelicanでPodcast配信をしてみた作業メモ

More than 1 year has passed since last update.


概要


  • PelicanでPodcastの配信ページを作成してみました。

  • feedの作成には pelican-podcast-feed プラグインを使わせてもらってます。

  • Pelicanの詳細な使い方は別の記事を参考にしてください……。

注) ここは単なるメモ書きです。有用な情報はないかもしれないですょ。


準備

友人とPodcastでの配信を目指して駄弁った内容を配信するために、Pythonで書かれた静的サイトジェネレータPelicanでやってみようということで挑戦しました。

まずは、Pelicanのインストールですが、pyvenvをつかって、以下のようにインストールしました。

% mkdir asterisk

% cd asterisk
% pyvenv pelican
% source pelican/bin/activate
% pip3 install pelican

コンテンツの記述には、流行にしたがってMarkdownをつかいました。ということでMarkdownもインストールします。

% pip3 install Markdown

ひとまず、ここまでをgitにでもコミットしておきます。.gitignoreを以下のようにしてinitial commitです。


.gitignore

/pelican

/output

*.pid
__pycache__



Pelicanの初期設定をする

次に、Pelicanの初期設定をします。pelican-quickstartを実行します。実行すると色々と質問が出てくるので、適当に回答します。

% pelican-quickstart

Welcome to pelican-quickstart v3.7.1.

This script will help you create a new Pelican-based website.

Please answer the following questions so this script can generate the files
needed by Pelican.

> Where do you want to create your new web site? [.]
> What will be the title of this web site? Podcast test
> Who will be the author of this web site? A, B, rarewin
> What will be the default language of this web site? [ja]
> Do you want to specify a URL prefix? e.g., http://example.com (Y/n)
> What is your URL prefix? (see above example; no trailing slash) http://hogehoge
> Do you want to enable article pagination? (Y/n)
> How many articles per page do you want? [10]
> What is your time zone? [Europe/Paris] Asia/Tokyo
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n)
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n)
> Do you want to upload your website using FTP? (y/N)
> Do you want to upload your website using SSH? (y/N) y
> What is the hostname of your SSH server? [localhost] hogehoge
> What is the port of your SSH server? [22]
> What is your username on that server? [root] rarewin
> Where do you want to put your web site on that server? [/var/www]
> Do you want to upload your website using Dropbox? (y/N)
> Do you want to upload your website using S3? (y/N)
> Do you want to upload your website using Rackspace Cloud Files? (y/N)
> Do you want to upload your website using GitHub Pages? (y/N)
Done. Your new project is available at /tmp/asterisk

この状態で

% ./develop_server.sh start 18889 

とすると、 http://localhost:18889/ からブラウザで内容を確認できます。ここまでも一旦gitにコミットしておくとよいかもしれない。


pelican-podcast-feed をつかってみる

ということで、本題の pelican-podcast-feed です。適当にぐぐったら出てきたので、こちら以外にもプラグインはあるかもしれません。

が、二年前にコミットしたREADMEが


Alert: Still in early development stage.


を含む3行という漢らしさに惹かれて(?)、これをつかってみたいと思います。

とにもかくにも、インストールしてあげましょう。今回は、pluginsというフォルダを作った上で、submoduleとして取得しました。

使用したコマンドラインそのままなので、GitHubのアカウントがない人はhttpsに変更しましょう(ここをコピペする人はいないような気もしてますが)。

% mkdir plugins

% cd plugins
% git submodule add git@github.com:magnunleno/pelican-podcast-feed.git

さて、今度はプラグインを使用するためにpelicanconf.pyを編集します。

ここでは、追加・変更した行だけ載せておきますね。


pelicanconf.part.py

# Podcast

PODCAST_FEED_PATH = 'feeds/podcasts.atom.xml'
PODCAST_FEED_AUTHOR = AUTHOR
PODCAST_FEED_COPYRIGHT = AUTHOR

# Blogroll
LINKS = (('Podcast', './feeds/podcasts.atom.xml'),)

# Plugin
PLUGIN_PATHS = ['plugins',]
PLUGINS = ['pelican-podcast-feed',]


本当はRSSやAtomと同じくSotial widgetとして追加したかったんですが、まだうまく動かせてないのでLINKSにつっこんでます。

動かせたら、また追記します。たぶん。

とはいえ、これだけではまだ何も生成されません。実施に配信するエピソードについてはcontentにMarkdownやらを置いていきます。

今回は、以下のようなファイルを用意してみました。


content/test.md

Title: episode title

Date: 2017-03-16
Podcast: http://hogehoge/mp3/20170316.mp3

test podcast

<audio controls><source src="http://hoehoge/mp3/20170316.mp3" type="audio/mpeg"></audio>

## Speakers

*
Aさん
* Bさん
* rarewin


一番のポイントは、Podcastというメタデータです。まだプラグインのソースコードを読み切れていないのですが、コンテントがpublishedになっていること(これは設定をデフォルトから換えていなければdraftと宣言しなければOK)と、Podcastというメタデータが入っているとプラグインが動くようです。

上記のファイルからは、以下のようなatomが生成されます。


feed.atom.xml

<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Podcast test</title><link>/</link><description></description><lastBuildDate>Fri, 17 Mar 2017 22:49:53 -0000</lastBuildDate><copyright>A, B, rarewin</copyright><itunes:author>A, B, rarewin</itunes:author><item><enclosure type="audio/mpeg" url="http://hogehoge/mp3/20170316.mp3"></enclosure><description><![CDATA[<p>test podcast</p>
<p><audio controls><source src="http://hoehoge/mp3/20170316.mp3" type="audio/mpeg"></audio></p>
<h2>Speakers</h2>
<ul>
<li>Aさん</li>
<li>Bさん</li>
<li>rarewin</li>
</ul>]]></description><pubDate>Thu, 16 Mar 2017 00:00:00 +0900</pubDate><link>/episode-title.html</link><itunes:summary>test podcast Speakers Aさん Bさん rarewin</itunes:summary><itunes:author>A, B, rarewin</itunes:author><title>episode title</title><guid>/episode-title.html</guid></item></channel></rss>

上記はhogeな値を入れてますが、実際には真面目な値を入れており、そちらで生成されたatomをfeedとしてpodcastのクライアントに読ませると、ちゃんとエピソードとして認識されました!なお、動作確認はAndroidのPodcastAddictを使用しております。


追記: 2017-04-03

iTunes Storeに登録の申請をするには、pelican.confに以下の内容を追記する必要がありました。


pelican.conf.py

PODCAST_FEED_LANGUAGE = 'ja'          # 日本語

PODCAST_FEED_CATEGORY = 'Technology' # テクノロジ!! きっと…….
PODCAST_FEED_EXPLICIT = 'No' # ぁゃιくないよ……?
PODCAST_FEED_SUMMARY = "ほげほげ"
PODCAST_FEED_IMAGE = "http://hogehoge/hoge.png"

審査通ると良いなぁ……。

(とおりました)


追記: 2017-04-13

ファイルサイズと再生時間については、各ページに


episode.md

Duration: 59:09

Length: 56805629

のように入れておくとフィードに反映されるようです。


今後の課題


  • Social widgetとして表示させたい。

  • 他にもいくつか設定があるようなので確認したい。

  • 継続してPodcast配信をする。


参考にさせていただいたもの