Pythonで作る音楽プレイリスト作成ツール v0.1

Share on:

最近FiioのM5という音楽プレーヤーを買いました。

音楽ファイルは基本的にアーティスト名/アルバム名/曲名でフォルダ分けしているので、アルバム名が違う曲でリストを作って再生したいと思ったときにプレイリストファイルを使う必要があります。

Fiio M5ではm3uに対応してしるようなので、そのファイルを作るツールを作ってみました。

Fiio M5の外部プレイリストの仕様

公式ページのFAQにプレイリストの記述方法が書いてありました。

m3uという拡張子のテキストファイルを用いてプレイリストファイルを作成してください。文字コードはUTF-8のみ対応です。

D:\Diana Krall\From This Moment On\49-0002691404.flac というものがあったとした場合 Diana Krall/From This Moment On/49-0002691404.flac というような形で,m3uファイルには記述してください

microSDカードのルートフォルダに直接ファイルを置いた場合,m3uファイルに記述するのはファイル名のみになります。スラッシュ(/)を記入する必要はありません。上の例だと 49-0002691404.flac とだけ記述するということです。

Fiio M5の場合は、音声ファイルのフルパスからドライブレターを削除して、デリミタを\から/に置換するだけでよさそうです。

使い方

下記のようにファイルをDDしてSaveボタンをクリックすると保存ダイアログが表示されるのでファイル名を指定してm3uファイルを保存します。

パスの置換

m3uファイルに記述されるパスはウィンドウ上部のチェックボックスで設定できます。置換は単純で、anchor、フォルダパス、ファイル名、拡張子をpathlibで抽出して、チェックボックスを判定しながらそれらの文字列を置き換えていき、それらの文字列を結合してからデリミタの置換を行うという内容です。pathlibと文字列置換しかしていないのでなんていうことはありません。

 1    def check_box_changed(self):
 2
 3        for r, item in enumerate( self.model.root_item.children() ):
 4
 5            path = item.data('path')
 6            anchor = path.anchor
 7            folderpath = str(path.parent).replace(anchor, '') + '\\'
 8            filename = str(path.stem)
 9            suffix = str(path.suffix)
10
11            if not self.ui.checkBox_drive_letter.isChecked():
12                anchor = ''
13
14            if not self.ui.checkBox_suffix.isChecked():
15                suffix = ''
16
17            if not self.ui.checkBox_folder_path.isChecked():
18                folderpath = ''
19                
20            if not self.ui.checkBox_file_name.isChecked():
21                filename = ''
22            
23            text = (anchor + folderpath + filename + suffix).replace('\\', '/')
24
25            item.set_data('m3u line', text)
26
27            index = self.model.index(r, 0, QtCore.QModelIndex())
28            self.model.dataChanged.emit(index, index)

ソースコード

githubにアップロードしました

関連記事