「Spotifyで確認できる音楽をダウンロードしたい」
「怪しいサイトを使わずにP3ファイルをダウンロードしたい」
「spotDLのインストールに失敗してしまう・・・」
このような場合には、spotify_dlがオススメです。
この記事では、spotify_dlのインストールについて解説しています。
本記事の内容
- spotify_dlとは?
- spotify_dlのシステム要件
- spotify_dlのインストール
- spotify_dlの動作確認
それでは、上記に沿って解説していきます。
spotify_dlとは?
spotify_dlは、Spotifyから曲をダウンロードするためのコマンドラインツールです。
Pythonのライブラリとして提供されています。
ただし、勘違いしてはいけないことがあります。
spotify_dlは、Spotifyから楽曲をダウンロードするわけではないことです。
SpotifyのAPIからは、メタデータを取得しているだけです。
そして、そのメタデータをもとにYouTubeから該当する楽曲をダウンロードしています。
つまり、spotify_dlはYouTubeから音声をダウンロードしているのです。
その際に、yt-dlpをspotify_dlは利用しています。
yt-dlpについては、次の記事で説明しています。
以上、spotify_dlについて説明しました。
次は、spotify_dlのシステム要件を説明します。
spotify_dlのシステム要件
現時点(2022年7月末)でのspotify_dlの最新バージョンは、8.3.0となります。
この最新バージョンは、2022年4月20日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下となっています。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
- Python 3.10
一応、以下のPython公式開発サイクルに準拠してはいます。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
ただし、Python 3.6は2021年末でサポート期限が切れています。
そのため、ここではPython 3.7を推奨しておきます。
以上、spotify_dlのシステム要件を説明しました。
次は、spotify_dlのインストールを説明します。
spotify_dlのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.10.2
spotify_dlのインストールの際は、Pythonの仮想環境を利用することを推奨します。
理由は、spotify_dlの依存するパッケージ数が多いからです。
Python仮想環境については、次の記事で解説しています。
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 22.2 setuptools 63.2.0 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、spotify_dlのインストールです。
spotify_dlのインストールは、以下のコマンドとなります。
pip install spotify-dl
spotify_dlのインストールには、少し時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。
$ pip list Package Version ------------------ --------- Brotli 1.0.9 certifi 2022.6.15 charset-normalizer 2.1.0 commonmark 0.9.1 idna 3.3 mutagen 1.45.1 pip 22.2 pycryptodomex 3.15.0 Pygments 2.12.0 requests 2.28.1 rich 12.0.1 sentry-sdk 1.5.12 setuptools 63.2.0 six 1.16.0 spotify-dl 8.3.0 spotipy 2.19.0 urllib3 1.26.11 websockets 10.3 wheel 0.36.2 yt-dlp 2022.7.18
spotify_dlが多くのパッケージに依存していることを確認できます。
だからこそ、Python仮想環境の利用を推奨しています。
以上、spotify_dlのインストールを説明しました。
次は、spotify_dlの動作確認を説明します。
spotify_dlの動作確認
spotify_dlの動作確認には、Spotify Web APIの認証情報が必要です。
Spotify Web APIにおける認証情報については、次の記事で説明しています。
上記記事を参考にして、次の情報を用意します。
- Client ID
- Client Secret
そして、これらの認証情報を環境変数に設定する必要があります。
各環境での設定方法は、以下となります。
Linux: export SPOTIPY_CLIENT_ID='your-spotify-client-id' export SPOTIPY_CLIENT_SECRET='your-spotify-client-secret' Windows Powershell: $env:SPOTIPY_CLIENT_ID='your-spotify-client-id' $env:SPOTIPY_CLIENT_SECRET='your-spotify-client-secret' Windows CMD: set SPOTIPY_CLIENT_ID='your-spotify-client-id' set SPOTIPY_CLIENT_SECRET='your-spotify-client-secret'
環境変数に設定ができたら、次のコマンドで楽曲をダウンロードできます。
spotify_dl -l SpotyfyのURL -o 保存先ディレクトリ
今回は、アルバムを対象にしてダウンロードしてみましょう。
別にアルバムだけというわけではなく、楽曲、プレイリストでも構いません。
ダウンロード対象となるアルバムのURLは、以下。
https://open.spotify.com/album/3dHpUUUw783S8gByoLIXMN
このアルバムには、2曲の楽曲が含まれています。
よって、結果的には2曲をダウンロードすることになります。
実際に実行した結果は、以下。
「tmp」ディレクトリにダウンロードしたファイルを保存するように指定しています。
$ spotify_dl -l https://open.spotify.com/album/3dHpUUUw783S8gByoLIXMN -o ./tmp [19:00:40] Starting spotify_dl v8.3.0 spotify_dl.py:68 Saving songs to 口笛 directory Fetched 2 of 2 songs from the album 口笛 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00 [download] Downloading playlist: Mr.Children - 口笛 Lyrics [youtube:search] query "Mr.Children - 口笛 Lyrics": Downloading web client config [youtube:search] query "Mr.Children - 口笛 Lyrics" page 1: Downloading API JSON [youtube:search] Playlist Mr.Children - 口笛 Lyrics: Downloading 1 videos of 1 [download] Downloading video 1 of 1 [youtube] Qxxvqbk7dik: Downloading webpage [youtube] Qxxvqbk7dik: Downloading android player API JSON [info] Qxxvqbk7dik: Downloading 1 format(s): 251 [download] Destination: tmp/口笛/Mr.Children - 口笛.webm [download] 100% of 5.77MiB in 00:00 [SponsorBlock] Fetching SponsorBlock segments [SponsorBlock] No segments were found in the SponsorBlock database [ModifyChapters] SponsorBlock information is unavailable [ExtractAudio] Destination: tmp/口笛/Mr.Children - 口笛.mp3 Deleting original file tmp/口笛/Mr.Children - 口笛.webm (pass -k to keep) [download] Finished downloading playlist: Mr.Children - 口笛 Lyrics [download] Downloading playlist: Mr.Children - Heavenly kiss Lyrics [youtube:search] query "Mr.Children - Heavenly kiss Lyrics": Downloading web client config [youtube:search] query "Mr.Children - Heavenly kiss Lyrics" page 1: Downloading API JSON [youtube:search] Playlist Mr.Children - Heavenly kiss Lyrics: Downloading 1 videos of 1 [download] Downloading video 1 of 1 [youtube] aETzztW9kmU: Downloading webpage [youtube] aETzztW9kmU: Downloading android player API JSON [info] aETzztW9kmU: Downloading 1 format(s): 251 [download] Destination: tmp/口笛/Mr.Children - Heavenly kiss.webm [download] 100% of 5.64MiB in 00:00 [SponsorBlock] Fetching SponsorBlock segments [SponsorBlock] No segments were found in the SponsorBlock database [ModifyChapters] SponsorBlock information is unavailable [ExtractAudio] Destination: tmp/口笛/Mr.Children - Heavenly kiss.mp3 Deleting original file tmp/口笛/Mr.Children - Heavenly kiss.webm (pass -k to keep) [download] Finished downloading playlist: Mr.Children - Heavenly kiss Lyrics
2曲分のダウンロードが終わりました。
「tmp」の中身を確認。
$ tree ./tmp/ ./tmp/ └── 口笛 ├── Mr.Children - Heavenly kiss.mp3 ├── Mr.Children - 口笛.mp3 └── downloaded_songs.txt 1 directory, 3 files
アルバム名「口笛」でディレクトリが作成されています。
その「口笛」ディレクトリの中に、音声ファイルを確認できます。
音声ファイル以外に、「downloaded_songs.txt」があります。
このファイルの内容は、以下となります。
$ cat ./tmp/口笛/downloaded_songs.txt youtube Qxxvqbk7dik youtube aETzztW9kmU
このファイルには、YouTube上の動画IDが記載されています。
それぞれの楽曲は、以下のURLからダウンロードしているということですね。
口笛
https://www.youtube.com/watch?v=Qxxvqbk7dik
Heavenly Kiss
https://www.youtube.com/watch?v=aETzztW9kmU
Spotify上から音声(動画)をダウンロードしているわけではありません。
あくまで、Spotify上ではダウンロードする対象を選ぶだけです。
そのことが、「downloaded_songs.txt」を見ると再確認できます。
また、アルバム以外では、楽曲、プレイリストもダウンロードを確認できました。
以上、spotify_dlの動作確認を説明しました。