Magicode logo
Magicode
4

学校のタブレットでYoutubeが見れないのでダウンロードできるようにした話 後半

前回の記事で最後に挙げた問題点を解決する

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の変換には以下のパッケージを使用した。

  • @ffmpeg-installer/ffmpeg
  • fluent-ffmpeg

コードの冒頭に以下のコードを追加

先ほどのダウンロードするファイル名を変えたコードを以下のように書き換え(変更箇所にはコメントしてあります)

これでmp3がダウンロードできるようになりました!

容量が節約できます!やったね!

全体のコード

グダグダ書いたのでコードが途切れ途切れになってしまいました。

なので、GitHubにこれまでに書いたコードを置いておきます。

まとめ

前回の問題は解決できたのであとは見た目がダサい(というか見た目が無い)のを解決すればok。 フロントエンドはnetlifyとかで作ろうかなと

とりあえず満足したのでしばらくこれで行くつもりです。

Discussion

コメントにはログインが必要です。