今回はPythonistaを使って、iPhoneで完結する自由に音楽をダウンロードできる音楽プレイヤーを作ろうと思い立ちました.
要件としては
- 音楽をダウンロードするプログラム
- 音楽プレイヤーのアプリ
の2つです.
ここで音楽をダウンロードするプログラムは「youtube_dl」と言われるライブラリを使えば解決できます.ただ、音楽プレイヤーを作ろうとするとメチャクチャ大変そうです.現にPythonistaで作ろうとしている方はいましたが、難しそうだったので今回はすでにAppStoreに公開されている音楽プレイヤーを使おうと思います.
ちなみにApple Musicに追加するにはPCを介する必要がありそうなので,今回は諦めました.
youtube_dlのインストール
Stashのインストール
Pythonistaにyoutube_dlをインストールするにはStashをインストールする必要があります.StashはLinuxのようなコンソールで、pipなどのコマンドを使えるようになります.
youtube_dlのインストール
▼ Stashのコンソールで「pip install youtube_dl」を入力します.

▼ youtube_dlは「ffmpeg」が使えないらしいので,エラーを出さないために「Modules/site-packages-3/youtube_dl/YotubeDL.py」の以下の部分をコメントアウトしておきます.(つまりmp3やwavに変換することができないので,m4aとしてダウンロードすることになります)

- youtube_dlの対応しているサイト一覧
メチャクチャ多くの動画サイトに対応しているみたいなので,お気に入りの動画や音楽が見つかりそうですね.
音楽ファイルのダウンロード
▼ プログラムをiCloudにおいておき,musicフォルダに保存していきます.

▼ iOSのファイルアプリから見るとこんな感じ.

▼ ちなみにプログラムをホーム画面に置いておくと簡単に起動できて便利だよ.

▼ Pythonistaからショートカットを作ると不具合で作れないから,純正のショートカットから作るといいかも.今回はPythonistaのスクリプト実行URLをSafariで開くようにしました.

▼ 起動したら,ダウンロードしたい動画のURLを入力すればOK!ちなみに対応サイトであればYoUtubeじゃなくてもダウンロードできるよ.(本当はもっとオプションがあって,保存ファイルの舐めを変えたり時間のトリミングをしたり,いろいろあるけど割愛しました)

・全体のソースコード
import console
import youtube_dl
import traceback
try:
download_url = console.input_alert('input YouTube URL', '', '', hide_cancel_button=True)
ydl_opts = {
'format':'bestaudio[ext=m4a]',
'postprocessors' : [{
'key' : 'FFmpegExtractAudio',
'preferredcodec' : 'wav',
'preferredquality' : '192',
}],
'outtmpl': './music/' + '%(title)s_video.%(ext)s',
'postprocessor_args' : [
'-ar', '44100',
],
'prefer_ffmpeg' : True,
}
ydl = youtube_dl.YoutubeDL(ydl_opts)
result = ydl.extract_info(download_url, download=True)
except:
#traceback.print_exc()
pass
動画ファイルのダウンロード
動画の場合は,さっきのスクリプトからオプションを削ればOK.
・全体のソースコード
import console
import youtube_dl
import traceback
try:
download_url = console.input_alert('input YouTube URL', '', '', hide_cancel_button=True)
ydl_opts = {
'outtmpl': '%(title)s_video.%(ext)s',
}
ydl = youtube_dl.YoutubeDL(ydl_opts)
result = ydl.extract_info(download_url, download=True)
except:
#traceback.print_exc()
pass
音楽プレイヤーに入れる
外部の音楽プレイヤーを使うことは仕方ないんだけど,あまり使い勝手の良いものがなくて残念.
クラウドサービスを使って音楽ファイルを同期するものだと自動的に同期して追加してくれるみたいだけど,iCloudはなぜか同期してくれるアプリがなかった.仕様的に難しいのかもしれないですね.
▼ 今回は「Evermusic」という音楽プレイヤーを使わせていただきました!

▼ アプリの使い方は,左のAppleファイルからiCloudの音楽フォルダを選択すれば終わり.

本当はDropBoxに音楽を保存して、音楽プレイヤーとDropBoxと自動同期させることで、音楽ファイルの移動の手間を省きたかった.だけどDropBoxに音楽ファイルをアップロードがなぜかできず断念.もしできる方がいたら、DropBoxを活用すると幸せになれるかも