WEBブラウザで音楽再生_02

Last-modified: 2014-08-16 (土) 12:41:50 (2184d)

全音楽ファイルのリストを作成する

WEBにて音楽を再生するアプリケーションを作成するにあたり、まずは音楽データフォルダ中の音楽ファイルを列挙したリストが必要だ。スクリプトを使いさっくり書いてしまおう。

私の環境下では、音楽データフォルダはNAS上にあり、NAS外にあるPHPスクリプトからは読み込むことができない(という権限設定となっている)。音楽データフォルダ内にPHPスクリプトを置けばそのスクリプトでリストを作成できるのだが、メンテナンスの面でデメリットが大きい。また、どのみち作業自体非常に長いものとなるのが予想されるため、できるかぎり進捗のわかりやすいインターフェイスとすることがストレスの軽減となるだろう。

そこで、全音楽ファイルのリスト作成はWindows Scripting Host を使って作ることにした。私はJScriptが好きなため、中身はJScriptでいた。例えば、このようになる。

makePlayList_Full.wsf

<JOB id="makePlayList_Full.wsf">
<SCRIPT language="JScript">

//▼出力先ファイル名
var DESTINATION_FILE_NAME = "list_fullmusic.m3u";

//▼スキャンを開始するフォルダ名
var sourceFolder ="X:\\music";

//▼リスト化を許可するファイル名
var aryRegEnableFilename = new Array(/\.mp3$/i,/\.ogg$/i,/\.wav$/i,/\.wma$/i,/\.m4a$/i,/\.aac$/i);

var fso = WScript.CreateObject("Scripting.FileSystemObject");

var objIE = WScript.CreateObject("InternetExplorer.Application");
with(objIE){
	navigate('about:blank');
	document.title="プレイリスト作成中";
	AddressBar = false;
	MenuBar    = false;
	StatusBar  = false;
	ToolBar    = 0;
	Width      = 300;
	Height     = 300;
	document.body.style.fontSize="75%";
	document.body.style.margin="2px";
	Visible    = true;
}

aryFilename = new Array();

makeList(sourceFolder);

var outputList = fso.OpenTextFile(DESTINATION_FILE_NAME,2,true);
for(i in aryFilename){
	try{
		outputList.WriteLine(aryFilename[i]);
	}catch(e){ }
}

outputList.Close();

WScript.Echo("プレイリスト作成終了");
objIE.Quit();

function makeList(strFolder){
	var objFolder = fso.GetFolder(strFolder);
	
	objIE.document.body.innerHTML =objFolder.Path+"<BR />" + objIE.document.body.innerHTML;
	
	var fullFiles = new Enumerator(objFolder.Files);
	for (;!fullFiles.atEnd();fullFiles.moveNext()) {
		f = fullFiles.item();
		
		var isEnable = false;
		for(i in aryRegEnableFilename){
			if(f.Name.match(aryRegEnableFilename[i])){
				aryFilename.push(f.Path);
				//WScript.Quit();
				break;
			}
		}
	}
	var fullFolders = new Enumerator(objFolder.SubFolders);
	for (;!fullFolders.atEnd();fullFolders.moveNext()) {
		f = fullFolders.item();
		makeList(f.Path);
	}
}

</SCRIPT>
</JOB>

sourceFolder ="X:\\music"; このフォルダ名を適宣言書き換えること。

このスクリプトを実行させてしばらく待つと、list_fullmusic.m3u というファイルが作成される。

拡張子がm3uとなっているのは、他のプレイヤーに読み込ませる場合もそのままでつかえるように考慮したつもりだ。