概要
NAS内の音楽ファイルをPCとAndroid両方で同じプレイリストを使用したかった。
今回は、VLC でプレイリストファイルの「xspf」で作成する。
PCでプレイリストを 作成してAndroidにそのまま使用としても「その場所 file:/// は再生できません」とエラーが出て利用できない。
色々調べてみた結果、プレイリストのファイルパスを相対パスにするとPC、Androidどちらでも開けるようになった。
- 相対パスは「../music.mp3」の「../」部分のこと
- ちなみに、相対パスにすると「m3u」でも使用できた。
プレイリスト作成手順
-
プレイリストを保存するフォルダを作成する
この時には出来るだけ目的のファイルがある場所に近いところに作っておくと後でファイルを書き換えるときに相対パスを考えるのが楽になる。
-
PCのVLCに動画ファイルをドロップ&ドラッグなどで読み込み
-
プレイリストを保存する
-
保存したプレイリストを開いて相対パスに書き換える
ここは書き換える量が多いのでスクリプトなどでやる -
PCとAndoridで使用できるようになる
-
めちゃ便利になる
手順 3 で使用する相対パスに書き換えるPython
PCの方で作成した「xspf」を開くとファイルパスは「絶対パス」で書かれているので、「相対パス」に書き換えるために、Pythonで行うようにした。
「xspf」内の書き換える前のパスはE://music/アルバム01/music.mp3
となっていて、これを上記のフォルダ位置で相対パスにすると../アルバム01/music.mp3
となる。
今回はファイルパスがE://
となっているが共有IPアドレスでも同じ用に書き換えると、そのままで使用できる。
それで、下記のPythonをPlaylistフォルダに作成して、実行すれば相対パスに書き換えてくれる。
import shutil
import os
from pathlib import Path
def replace(file_path):
file_name = file_path
# バックアップファイルの作成
print('path: ', file_path)
back_name = str(file_name) + '.bak'
print('back_name: ', back_name)
shutil.copy(file_name, back_name)
with open(file_name , encoding=`utf-8`) as f:
data_lines = f.read()
# 文字列の置き換え
# 「[」と「]」を「%5B」と「%5D」に置き換えないと「vlc:nop」になって読み込まない
data_lines = data_lines.replace('file:///E://music/', '../').replace('[', '%5B').replace(']', '%5D')
# 同じファイル名で保存
with open(file_name, `w`, encoding=`utf-8`) as f:
f.write(data_lines)
# 自身のpy が在るフォルダを取得
p_temp = os.path.dirname(__file__)
# フォルダ内でxspfファイルを一覧取得
for f in Path(p_temp).glob(`**/*.xspf`):
replace(f)