見出し画像

ラジオ番組をいかにダウンロードするか

話の概要

ラジオ番組をダウンロードしてみたいなぁ…という話。

ちょっとだけ技術的な話をすれば
AWS lambdaでsh shellも実行できる。
shellが実行できれば、実行できるバイナリがなにがあるのかがわかる。
足りないバイナリはレイヤとして追加すれば、/opt/bin以下に入って、普通に動作する。
これらを足し算すると…
rec_radiko_ts.shをつかって、S3バケットに保存ができます…ともあれ技術的には
という話。

技術的な話はQiitaに記載しますのでそちらで確認ください。

はじめに

時は2020年、緊急事態宣言がでて、テレビ番組が総集編だらけになったとき。
情報を得るためにもyoutubeを見るようになり、メインがyoutubeに変わったよね。

そして、2021年後半ごろから…
youtubeを見るのがつかれてきた。
なんでかな?と思ったら…
youtubeって再生時間が収入につながる(らしい)
→そのため、youtuberという方は隙間なく喋ったり、ピッチをアップする
→受信者側である私はそれに疲れた…

というわけで、どうなっていたかといえば「動画を垂れ流す」ようになった。
でもさすがにチラチラみないと内容がわからない!
おっはもーにんぐ!

もう音声だけでなんとかわかるものないの!
って思ったら、ラジオがあった。

ラジオってニュースか深夜に夜更かしして聞くイメージしかなかったのだが…
radikoをみたら、これでいいじゃん!

すっかりはまり、radikoで聞くようになりましたとさ。
もっと自由に聞けたらなぁとおもうようになっていろいろやってみた。

ダウンロードしてみたい

ネットを検索すると、ラジオをダウンロードできるアプリはいくつか検索されます。私はrec_radiko_tsに行き着きました。rec_radiko_tsはUbuntuやFreeBSDで動作確認しているというシェルスクリプトです。

環境に依存せず動作させたいとすれば…AWSかなと。
AWSのサービスでできそうなものをあげていくと…

  1. EC2のインスタンス
    昔ならこれしかなかった。まぁやってやれなくはないけど、どんだけコストかかるんだって話。これは今回やらない。

  2. Fargate on Docker
     悪くはない。Dockerを利用できるようになってからは自由な感じが増してきた。

  3. lambda
     お手軽なのは実はこっち。

最初にアプローチしたのがFargateによる方法。
というのも、lambdaってNodeJsなりPythonで完結する簡単な処理またはAWSへのサービスとのリンクがしかできないイメージだったから。

なんて記事をみてもへぇーでしかなかった。
というわけで、fargateでまず実装してみた。

しかし!

これをみてびっくりした。え?シェル動くのか!
さらにいえば…

あれ?これもしかして…
とおもって試したら、できました。

となると、絶対コスト面でlambdaの方が上。
Fargateだと
1 時間あたりの vCPU 単位 0.05056USD
1 時間あたりの GB 単位 0.00553USD
(東京リージョン)
これにECRの保存料(S3 Standard相当)がプラスされる。

これに対してlambdaなら
リクエスト 100 万件あたり 0.20USD(東京リージョン)
ソースのコード量やレイヤーのサイズに制約はあるが、保存料はナシ

個人ユースならタダみたいなもんですね。
というわけで、最終的にはlambdaを使うことにしました。せっかくなので別案も示します。

案1 lambdaを使う

具体的な話はQiitaを確認ください。

案2 Fargateを使う

具体的な話はQiitaを確認ください。

AWSにこだわる必要ってあるの?

ないです!
今回つかっているrec_radiko_tsはUbuntuやFreeBSDで動作確認しているというシェルスクリプトなのだから、ラズパイとかあれば十分実行可能でしょう。
また、対話式であれば

というのもあります。windowsでも動きます。

世の中にはVPNという考え方があり、VPNの出口がどこかによってはまた違う世界が広がるよね。

世界が広がれば、podcastじゃないものが聞けるよね。

あれ?本当にAWSにこだわってなかったのかなぁ。
まぁいいか。
ほんじゃあ。


追記

にもあるようにlambdaは時刻が日本のインスタンスでもUTC。
よって、Lambdaの関数コードの環境変数にて設定する。
キーにTZ、値にAsia/Tokyoと入力して保存するだけ。

追記2

この記事ではlambdaはVPC設定してません。
VPC設定せずに実行すると…東京のIPが割り当てられて実行されるようです。(2022/11/11時点)

大阪リージョンでlambda関数をVPC設定せずに実行しても東京のIPとなるようです。(2022/11/11時点)
大阪のIP固定にすれば、いろいろ考えられそうです。
しかし…
IP固定にするなら「Elastic IP アドレス」 コストも。
NATゲートウェイ」の設定も必要で、こいつのコストが…結構。
0.062USD/1時間
最低課金単位が1時間らしく、1回10分しか使うつもりなくても月4回使ったら…
0.25USD
払えないことはまったくないけど…コスパが。

この記事が気に入ったらサポートをしてみませんか?