subscribeonandroid.com 経由のpodcast をAndroid 以外で購読する

最近のPodcast の購読はPodget というアプリケーションで購読してダウンロードしたファイルを聞いています.

cron で回しているのですが,最近購読開始したPodcast がエラーになっています.購読URL を間違えたかな?と確認するとURL はPodcast ページのRSS のものと同じで正しそうだけどウェブブラウザで閲覧するとhtml のページが表示されています.

これはPodcast サービスがSubscribe on Android というサービスを利用していて,対応アプリでアクセスするとiTunes のようにワンクリック登録が出来てそうでない場合Android Podcast アプリを紹介するサービスのようです.podget はAndroid でもないしもちろん対応アプリケーションでもないので駄目ということのようです.

User-Agent で判別しているのかな?だとするとUser-Agent を詐称するGW を用意すれば良さそう対応アプリケーションのPodcastAddict に適当な自分の管理しているサーバのアドレスを登録してアクセスさせてログでUser-Agent を確認してみます.

127.0.0.1 - - [05/Apr/2019:19:43:23 +0900] "GET /podcast HTTP/1.1" 404 3806 "-" "PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; PH-1 Build/PQ1A.190105.045)"

PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; PH-1 Build/PQ1A.190105.045) というのがそれのようです.

curl でUser-Agent を詐称してアクセスしてみましたがhtml ドキュメントが渡ってきます.この方法ではダメそう.

$ curl -sA 'PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; PH-1 Build/PQ1A.190105.045)' http://subscribeonandroid.com/example.com/rss | head -1
<!DOCTYPE html>

以下のページを見ると,subscribeonandroid.com のURL の後ろに RSS のURL を指定してあるよう.

Web Developers
Web developers are welcome to create Subscribe On Android links and buttons.

http://geeknewscentral.com/podcast.xml
Separate the scheme from the URL to a podcast feed.

http:// geeknewscentral.com/podcast.xml
Add “subscribeonandroid.com/” between the scheme and remaining URL.

http:// + subscribeonandroid.com/ + geeknewscentral.com/podcast.xml
The Subscribe-on-Android URL will have the following format:

http://subscribeonandroid.com/geeknewscentral.com/podcast.xml
Both http:// and https:// protocols are supported.

単純に subscribeonandroid.com/ を削ればいけるのではと試すとそのとおりでPodget でも問題なく購読できるようになりました.

Podcastが無くなって困る

現在Podcastをpodgetで取得して,

2 * * * *       podget -s

その中の新しいものだけをownCloudにコピーしてAndroidやPCで視聴しています.

10 * * * *      cd ~mk/POD ; find . -mmin -2880 -type f | egrep -v 'm3u$|LOG\/' | rsync --delete --progress --files-from=- ~mk/POD/ /var/www/owncloud/data/matoken/files/podcast/; find /var/www/owncloud/data/matoken/files/podcast/ -ctime +7 -type f -print0 | xargs -0 rm ; find /var/www/owncloud/data/matoken/files/podcast/news/ -mmin +1`

今日聞こうとしたらownCloud内のPodcastが0個になっていました.心当たりはUbuntu 14.04 LTSからUbuntu 16.04 LTSへのdist-upgrade.ownCloudは上げる前と後に動作確認してたんで他の部分が怪しいとログを見るとpodgetがエラーを吐いています.こんな感じ.

$ podget -s
/home/mk/.podget/podgetrc cannot be verified to be compatible with this version of podget.

It is missing the version line that is included in configuration files created by newer versions of podget.

Please create a new configuration file by running 'podget --create-config <FILENAME>',
and then converting your old configuration to the new format.  Then move the new file
in place of the old and podget will work as it used to.

設定ファイルが使えなくなってるみたいですね.枯れてるのかと思ってたら結構変化があったようです.
ちなみに更新前のバージョンがpodget 0.6.9-1で現在はpodget 0.7.9-1でした.

てことで,設定ファイルの雛形を別の場所に書き出して,

$ podget --create-config /tmp/podgetrc
podget

Configuration filename specified by -c or --create-config violates the following rules...

Suggestion(s):
  1. Filenames should not include any directory configuration.
     Remove the directory configuration.
     If you need to specify a directory other than the default,
     use the -d or --dir_config command line options.

Closing session.

…….--dir_config付けて再度.

$ podget --dir_config /tmp --create-config podgetrc
podget
  Installing default user configuration file in /tmp/podgetrc
  Installing default server list configuration.

Closing session.

https://gist.github.com/1b5fba2e949409a87e1955e0c779b057

diffを取ってみると設定項目自体はそう変わってない感じですが,設定値が大文字小文字が変わったりしています.
比較しながら書き換えて叩くと動き始めたようです.

$ podget
podget


Session directory not found, creating
Session file not found.  Creating podget.18364 .

-------------------------------------------------
Category: tech                 Name: 電脳空間カウボーイズ

Downloading feed index from http://feeds.feedburner.com/weblogs/csc
2017-04-06 06:13:13 URL:http://feeds.feedburner.com/weblogs/csc [46549] -> "-" [1]

Downloading csc_2017_design2.mp3 from http://onosendai.jp/csc
2017-04-06 06:20:43 URL:http://onosendai.jp/csc/csc_2017_design2.mp3 [51781411/51781411] -> "/home/mk/POD/tech/電脳空間カウボーイズ/csc_2017_design2.mp3" [1]
PLAYLIST: Adding tech/電脳空間カウボーイズ/csc_2017_design2.mp3 to /home/mk/POD/New-2017-04-06.m3u

Downloading csc_2017_design1.mp3 from http://onosendai.jp/csc
2017-04-06 06:25:04 URL:http://onosendai.jp/csc/csc_2017_design1.mp3 [37304885/37304885] -> "/home/mk/POD/tech/電脳空間カウボーイズ/csc_2017_design1.mp3" [1]
PLAYLIST: Adding tech/電脳空間カウボーイズ/csc_2017_design1.mp3 to /home/mk/POD/New-2017-04-06.m3u
 :

しかし,ダウンロード済みのファイルも取得しているような?
新規のみの設定にしているつもりなんですが,初回は舐めちゃうのかな?2度目のときに確認してみます.

# Force
# 0 == Only download new material.
# 1 == Force download all items even those you've downloaded before.
FORCE=0

とりあえず終わるまではsoundcloud辺りで聞いてます.

その後2回目はちゃんと期待通りの動作するのを確認したのでcrontabに登録し直しました.