2014.07.10

ESエクスプローラ@Android用にm3uからプレイリスト作成

※言わずもがなだが、下記の情報で生じるいかなる損害も私は担保しない。実施時は自己責任にてどうぞ。
※下記は、Android:4.2.2、ESエクスプローラ:3.1.8での試行。

パソコン(Windows)の過去資産にm3uファイル(音楽プレイリスト)があるのだけれど、Android付属のplayミュージックでは、ファイルを指定する事ができない。
最初の頃は、playミュージックが勝手にm3uファイルを見つけて取り込んだので特に問題無かったのだけど、何度目かのUpdateで、リストが大部分消えるわ、残ったリストも読み込みがおかしいわで、すっかり使う気が無くなった。
#一応どこかのディレクトリにリストがファイル保存されている様だが、一寸見てみた所、ファイルが多いわ名前規則がさっぱりわからんわで、面倒臭くなって調べるのをやめた。

で、代替ソフトを探したのだけど、一番使いたかったwinampも、playミュージック同様、m3uファイルを指定して読み込ませる事ができない。
という事で、仕方なく、ESエクスプローラ付属の音楽プレイヤーを使う事にした。
このプレイヤーは、m3uファイルを読み込・・・みはしない。指定する事もできない。
だが、プレイリストを
/sdcard/.estrongs/playlists.db
#「.estrongs」の親パスは、環境によって変わるかも。ESエクスプローラで「playlists.db」を検索するよろし。
#「.estrongs」は隠しフォルダなので(先頭に「.」が付いている)、探す時はESエクスプローラの「ツール」で隠しフォルダ表示をONにする事。
というSQLiteファイルに作成するので、SQLiteで編集できる。
#確か「ESエクスプローラ m3u」だか「~ プレイリスト」だかでググって調べたのだけど、参考頁を忘れてしまった。参考にした頁の作成者さん、御免なさい。
#蛇足。SQLiteは簡易データベースソフト。

・・・ここから嵌ってしまった。いや、一寸横着と言うかLinuxびいきが仇になったのだけれど。
Linux(Redhat系あたり.多分Ubuntuも)にはSQLiteが最初から入っているから、VirtualBoxで作っていたFadoraだかにplaylist.dbを(Virtualboxの)共有フォルダで渡して、SQLiteで編集しよう!としたのだけど・・・渡したファイルの内容が途中から消えるわ、やっとこ強制編集しても「カラムの数が違う」だの出てきてうまくいかない。
業を煮やして、ホストのWindowsマシンにSQLite3をインストールしてやったら、少しだけつまづいたものの、すんなりうまく行った。
う”~ん・・・多分LinuxじゃなくてViertualBoxの共有フォルダに問題があるんだろうけど、もーやだ。使いたく無ぇ~。

一応、Windows環境でやった事を書いておく。


1.SQLite3インストール@Windows環境
インストールと言っても、公式サイトから実行体(exe)を落として、好きなフォルダに入れるだけ。「SQLite インストール」でググれば良いだろう。
#解凍してファイルが増えたり、レジストリに情報を書き込んだりはしない、と思う。不要になったらフォルダごと消せば宜しい。
#多分、このサイトに行き着くと思う。以降のSQLite操作も、このサイトで大体Fixすると思う。
[SQLite入門]
<DBOnline>
http://www.dbonline.jp/sqlite/


2.Android機からplaylists.dbをWin機に落としてくる。
※あらかじめ、ESエクスプローラにて適当に複数のプレイリストを作っておく事。

3.コマンドプロンプトを開く。
このままだと、SQLiteでファイルリストを見たら、日本語が文字化けするので、
3-1.ウインドウ左上のアイコンクリック→プロパティ→フォントで、フォントをMSゴシックにしておく。
3-2.「chcp 65001」と入力。
参考:
[SQLiteの基本(Windows)]
<PG CENTER(プログラムセンター)>
http://pgcenter.web.fc2.com/contents/sqlite.html


4.
「置いた所のパス\sqlite3.exe 置いた所のパス\playlists.db」
でSQLitre3起動。
#勿論Windowsに対して上記の所のPath環境変数を通しておけば、「置いた所のパス」は指定する必要は無い。
#DBファイル名の打ち間違いに注意。その名前の空のDBファイルが新しく作成されてしまう。


5.一応「.tables」で、既存テーブルの名を確認。
多分、
「android_metadata audio_playlists audio_playlists_map」
と表示される。
audio_playlists:プレイリストの名前のリスト。
#1カラム目の数はaudio_playlists_mapで使われるので注意。
audio_playlists_map:詳細情報。
ヘッダは
_id|_data|playlist_id|play_order|title|album|artist|duration
となっている。
本テーブル内での通し番号, 音楽ファイル名フルパス, プレイリストNo., プレイリスト内No., 曲名, アルバム名, アーティスト名, 継続(?)
といった所か。
#「.header on」「.header off」で、SQLで内容を表示させた時に、ヘッダ(各列の意味)が表示・非表示にできる。デフォルトはoff状態。但しここではonにしない事(ヘッダがファイル出力されてしまうので)。


6.「.separator ,」で、区切り文字をカンマ「,」にする。


7.audio_playlists_mapテーブルの内容をファイル出力する。
7-1.「.output 置き場所パス\\ファイル名」で、今後のSQLiteの出力をファイルに指定する。
#パスは「\」ではなくて「\\」で指定の事。
#ファイル名の拡張子は「csv」にしておく事を推奨。
7-2.「select * from audio_playlists_map ;」
で、audio_playlists_mapテーブルの内容を、指定ファイルに吐き出す。
#入力の右端に「;」を付ける事を忘れない事。
7-3.「.exit」でSQLiteを終了する。


8.7.で作ったファイルを編集する。
_id, _data, playlist_id, play_order、duration
列がちゃんと書かれていれば多分OK。
自分が持っているm3uファイルの内容を、ここに反映する。
_data列には、「Android上の」ファイルフルパスを記載の事。
プレイリストを追加する場合は、playlist_idを新しく作る(&後でaudio_playlistsテーブルに追加する)事。
#OpenOfficeのCalcで修正する事を薦める。
#MS-Excelだと、一旦エディタ等でUTF-8のBOM付の文字コードで保存しておかないと、文字化け&Text扱いされてしまう。修正後の保存も、ちゃんとcsv指定をしないと、タブ区切り保存されてしまう。又、勝手に文字コードがsjisで保存されてしまうので、再度エディタでUTF-8のLF改行指定で保存の事。


9.8.で作ったファイルを、SQLiteにてplaylists.dbのaudio_playlists_mapテーブルに読み込ませる。
9-1.4.と同じ様にしてplaylists.dbをSQLiteで開く。
9-2.6.と同じ様にして区切り文字を「,」にする。
#多分、これをしていないせいで、読み込ませた時に「カラム数が違う」とエラーが出る。
9-3.一旦audio_playlists_mapテーブルの内容を消す。
「delete from audio_playlists_map ;」
9-4.読み込ませる。
「.import 置き場所\\読み込ませるファイル名 audio_playlists_map」
#「select * from audio_playlists_map ;」で、読み込ませられたか確認できる。
9-5.プレイリストを追加した場合は、audio_playlistsテーブルにも追加する。
「insert into audio_playlists values( 追加プレイリストNo., "プレイリスト名") ; 」


10.SQLiteを終了する。
「.exit」


後は、修正したplaylists.dbを、Androidの元あったパスに置いて、ESエクスプローラを再起動すれば良い。
#元ファイルは変名等で念の為残しておく事を推奨。
#ESエクスプローラの再起動は不要かもしれんけど、まぁ念の為。


にしても・・・プレイリストを自分で指定できないソフトなんて、正直いらんわ。便利でも何でもない。思いっきり不便だ。


| | Comments (161) | TrackBack (0)