Python

【Pythonista】Pythonを使ってiPhoneに音楽や動画をダウンロードしてみる

2021年4月21日

今回は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を活用すると幸せになれるかも

よく読まれている記事

1

DeepFaceLab 2.0とは DeepFaceLab 2.0は機械学習を利用して動画の顔を入れ替えるツールです。 以前にDeepFaceLab 1.0を記事としてアップしていましたが、2.0は以 ...

2

自作PCで、多くのパーツをCorsair製品で揃えたので、iCUEでライティング制御していきました。 私のPCでは、表示されている4つのパーツが制御されています。ここで、HX750i電源ユニットは、L ...

3

コンピュータは有限桁の数値しか扱う事はできないので、桁数の多い場合や無限小数の場合は四捨五入され切り捨てられます。なので実際の数値とは多少の誤差が生じますが、これを丸め誤差といいます。 なので、コンピ ...

-Python
-