①replitのストレージが少ない(20本くらい動画をダウンロードすると埋まってしまう)。 ②ダウンロードされるファイル名がIDなので分かりにくい。 ③(建前は部活で音源を聞くことなので)オーディオ形式でダウンロードできるようにする。
これはもうどうしようもないので、起動時&定期的にtmp
フォルダ内のデータを削除するしかない。どなたかいい案があったらコメントで教えてください。
定時実行にはnode-cron
を使用した。
前回のコードに以下のコードを追加。
因みにreplitは1日に数回、UptimerRobotの更新が間に合わずに落ちることがあるので、そのタイミングでファイルが消えることがある(replitはユーザーがリポジトリで作業していない状態で追加されたファイルや変更は再起動時に消える)。
前回のコードだとファイル名がIDの状態でダウンロードされてしまう。
特にサウンドトラックを複数個ダウンロードするとサムネが同じなので聞いてみるまで中身がわからない。
そこでyoutubeのapiを使用して動画のタイトルを取得し、ダウンロードされるファイルの名前を変更する。
パッケージはsimple-youtube-api
を使用した。APIキーの取得方法はこちらの記事などを参考に…
前回のコードの冒頭に以下のコードを追加
前回のコードを次のように書き換え(追加、変更点にはコメントをしてあります)。
Youtubeからサーバーにダウンロードするファイル名がIDのままなのは、奇跡的にIDの違う同じタイトルの動画をダウンロードしていた場合に事故らないようにするため。
これで端末側にダウンロードするファイルの名前がタイトルになりました。
最初に述べた通りこのapiは部活で使用するために作ったものである。音源を聴く時に動画はいらないので使用可能容量が1.5GBしか残っていないタブレットのためにもオーディオのみにして軽量化を図りたい。
mp4→mp3の変換には以下のパッケージを使用した。
コードの冒頭に以下のコードを追加
先ほどのダウンロードするファイル名を変えたコードを以下のように書き換え(変更箇所にはコメントしてあります)
これでmp3がダウンロードできるようになりました!
容量が節約できます!やったね!
グダグダ書いたのでコードが途切れ途切れになってしまいました。
なので、GitHubにこれまでに書いたコードを置いておきます。
前回の問題は解決できたのであとは見た目がダサい(というか見た目が無い)のを解決すればok。 フロントエンドはnetlifyとかで作ろうかなと
とりあえず満足したのでしばらくこれで行くつもりです。