Anchor.fm 各話の再生数 一括取得コマンド
Anchor.fm でポッドキャストを配信すると,各エピソードがどれくらい再生されてるのか気になるよね.簡単に一覧するためのシェルスクリプトを作ってみました!
#!/bin/bash
# ログイン情報
id="メールアドレス"
pw="パスワード"
# ログインして cookie を作成
curl --basic -u $id:$pw https://anchor.fm/api/login -H "accept: application/json" -c cookie
# エピソードの数を取得
limit=`curl -b cookie https://anchor.fm/api/podcastepisode | jq ".totalPodcastEpisodes"`
# エピソードの数だけデータを取得
json=`curl -b cookie https://anchor.fm/api/podcastepisode?limit=$limit | jq ".podcastEpisodes"`
# 各エピソードの再生回数を含む配列を作成
for i in `seq 0 $(expr $limit - 1)`
do
#title=`echo $json | jq .[${i}].title`
downloads=`echo $json | jq .[$i].downloads`
#echo "$title $downloads"
arr+=($downloads)
done
echo ${arr[@]}
依存
たぶんこれだけだと思う.
使い方
4行目と5行目のところに Anchor にログインするための情報を書いてください.メールアドレスとパスワードね.スクリプトに平文でログイン情報を書くのは安全じゃない気がするけど,もっといい方法を知らないのでこうなっています… 知ってる人はぜひ教えてください!

ananこのスクリプトを,例えば ~/bin/anan (ANchor ANalytics … みたいな気持ち) に保存する.~/bin にパスが通っていれば次のコマンドでOK!
$ anan
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
1 4 10 15 8 9 9 7 14 7 6 6 7 8 6 9 15 9 3 4 4 4 2 5 6 6 2 2 5 8 3 6 12 4 10 4 2 5 3 4 7 11
こんな感じで端末にドバッと再生数が一覧表示されます.新しい順なので,上の例の場合だと最初の 1 は一番新しいエピソードが1回再生されたことを,末尾の 11 は一番古いエピソードが11回再生されたことを意味していますよ.
注意 (?)
これを動作させると, ~/cookie というファイルが作成されます.これは (たぶん) ログイン状態を保持するためのファイルなので,(たぶん) 削除してはいけません.僕自身,まだよく分かってません… 分かり次第追記します.
参考
- 8行目:
curlで Basic 認証をする - 11行目:
curlでcookieを使う - 14行目:
jqを使ってシェルスクリプトで json を扱う - 17行目:
jq+for+seqで json を処理する - 23行目: シェルスクリプトで配列を使う

上の画像のように,実際にブラウザでログインしたりしながら必要な情報を取得してそうな api がどれなのかを手探りで見付けていく過程も結構楽しい笑.8行目,11行目,14行目の api のエンドポイントは,こんな地味な作業で特定しました…!
