スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【同じタグを付けた記事の一覧】

x-アプリのジャケット写真フォルダ命名規則

2011年02月25日(金)00時26分

ジャケット画像ファイルの格納先

以前に「ウォークマンのジャケット写真を高画質化するスクリプト」を書いた際、その冒頭で

x-アプリ(以下「x-アプリ for LISMO」も同様)は「マイ ミュージック\Sony MediaPlayerX\Shared\Fringe」フォルダ(以下「Fringe フォルダ」)に、何かしらの規則をもって数字の羅列のフォルダを作り、そこに各トラックに設定されたジャケット画像を格納しています。

と書きました。
今回はその「数字の羅列」を決定する「何かしらの規則」についてのお話です。
なお、例のごとくx-アプリを普通に使っている分にはほとんどどうでもいいような話です。
また「Fringe フォルダとは何か」や「ジャケット画像の格納フォルダを知ることに何の意味があるのか」については、前述の「ウォークマンのジャケット写真を高画質化するスクリプト」をご覧ください。

ご注意

一応念のために書かせていただきますと、ここに記された内容は、公式に公開されているものではなく、独自に検証・試行・推測した結果ですので、正しいものであるとは断言できかねます。
また、これらの内容は、執筆時点(2011/02/25)での最新版である「x-アプリ Ver.2.0」を対象としているため、それ以外のバージョンでは異なる可能性があります。

ObjectId

というわけで、結論から書きますと、この「数字の羅列」は、「ObjectId」がその正体のようです。
ObjectId というのは、x-アプリがライブラリを管理するために、登録されているトラックやプレイリスト等に対して割り振っている一意な番号です。
この ObjectId は、MtData.mdb(x-アプリが管理情報の記録に使っているファイル)に記録されていますので、ここから取得することができます。

フォルダ生成規則

Fringe フォルダ直下には「0」~「9」までの数字1文字のフォルダ計10個が存在します。
これは前述「ObjectId」の下一桁と一致しており、その「数字一文字フォルダ」配下に「ObjectId 名フォルダ」が生成され、その中に「coverart-01.jpg」としてジャケット画像ファイルが保存されていました。
つまり、例えば ObjectId が「123」だった場合は「~\Fringe\3\123\coverart-01.jpg」となり、「456」であれば「~\Fringe\6\456\coverart-01.jpg」となるわけです。

ObjectId 一覧取得スクリプト

これだけではなんですので、x-アプリの MtData.mdb から各トラックの ObjectId 一覧を TEXT ファイルに書き出すスクリプトを作ってみました。
以下に記すスクリプトをコピー(ソースコード部をダブルクリックすると全選択状態になります)し、メモ帳等の TEXT エディタに貼りつけ、ファイル名は何でもかまいませんが、拡張子を必ず「.js」として保存してください(勝手に「.txt」が付く場合は削除して「.js」にしてください)。
保存した「~.js」ファイルを実行すると、うまくいけば同名の TEXT ファイルが生成され、そこに「ObjectId=[アーティスト](アルバム)タイトル」の形式で ObjectId 一覧が書き込まれます。

//MtData.mdb(x-アプリのデータベース)から情報を取得し、各トラックのObjectIdの一覧を生成します。
//一覧はTEXTファイルで、各行「ObjectId=[アーティスト](アルバム)タイトル」の形式となります。
//x-アプリ Ver.2.0のMtData.mdbを対象にテストされています。
//
//64bit版OSで「MtData.mdbの読み込みに失敗しました。」のメッセージが出る場合には
//・Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント
//(http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=ja)
//をインストールすると回避できるかもしれません。
//
//2011/04/27(http://denspe.blog84.fc2.com/)

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

//////////////////////////
//x-アプリの情報取得用。//
//////////////////////////
//MtData.mdbの位置はおそらくここに記録されている。
try{MDBFullPath=Shell.RegRead("HKLM\\SOFTWARE\\Sony Corporation\\Sony MediaPlayerX\\Database\\MetallicData");}catch(exception){MDBFullPath="";}
if(!MDBFullPath){try{MDBFullPath=Shell.RegRead("HKLM\\SOFTWARE\\Wow6432Node\\Sony Corporation\\Sony MediaPlayerX\\Database\\MetallicData");}catch(exception){MDBFullPath="";}}
//MtData.mdbの位置を任意に指定する場合は以下の行を有効化。
//MDBFullPath="ここにMtData.mdbのフルパス(「\」は「\\」とする必要あり)。";
if(!MDBFullPath){WScript.Echo("MtData.mdbの位置が取得できません。");WScript.StdIn.ReadLine();WScript.Quit(0);}
//ADODB.Connectionは一応存在しない場合にも備える。
var AdoDb=null;
try{AdoDb=WScript.CreateObject("ADODB.Connection");}catch(exception){AdoDb=null;}
if(!AdoDb){WScript.Echo("ADODB.Connectionの生成に失敗しました。");WScript.StdIn.ReadLine();WScript.Quit(0);}
//指定ファイルをデータベースとして読み込む(MDBファイルでなければここで失敗するので終了)。
//まずADO(Access 2007~)を使用。
try{AdoDb.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+MDBFullPath+";");}catch(exception){;}
//失敗ならADO(~Access 2003)を使用。
if(!AdoDb.State){try{AdoDb.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+MDBFullPath+";");}catch(exception){;}}
//それも失敗ならDAO使用。
//DAOは「メモ型」フィールドが取得できなかったため、「ファイル名[500](メモ型)」が必要な場合は利用しない。
if(!AdoDb.State){try{AdoDb.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ="+MDBFullPath+";");}catch(exception){;}}
//それでもだめなら失敗。
if(!AdoDb.State){WScript.Echo(MDBFullPath+"の読み込みに失敗しました。");WScript.StdIn.ReadLine();WScript.Quit(0);}

////////////////
//メイン処理。//
////////////////
//レコードセット抽出用のSQL文を生成。
var SqlStr="select";
//対象テーブル。
SqlStr+=" "+"* from t_object";
//抽出対象はトラック(ObjectSpecId=2)。
SqlStr+=" "+"where ObjectSpecId=2";
//無くても動くが一応末尾の「;」を付けておく。
SqlStr+=";";
//生成した条件でレコードセット抽出。
var RecSet=null;
try{RecSet=AdoDb.Execute(SqlStr);}catch(exception){RecSet=null;}

//抽出に成功すれば、抽出したレコードセットから「ID=[アーティスト](アルバム)タイトル」を生成し出力。
if(RecSet)
{
	//スクリプトと同名のTEXTファイルを生成。
	var TextName=fso.BuildPath(fso.GetParentFolderName(WScript.ScriptFullName),fso.GetBaseName(WScript.ScriptFullName))+".txt";
	var TextFile=null;
	try{TextFile=fso.CreateTextFile(TextName,true,true);}catch(exception){TextFile=null;}

	if(TextFile)
	{
		while(RecSet&&!RecSet.EOF)
		{
			var TrackText=RecSet.Fields("ObjectId").Value+"=";
			if(RecSet.Fields("201").Value)TrackText+="["+RecSet.Fields("201").Value+"]";
			if(RecSet.Fields("206").Value)TrackText+="("+RecSet.Fields("206").Value+")";
			if(RecSet.Fields("ObjectName").Value)TrackText+=RecSet.Fields("ObjectName").Value;
			try{TextFile.WriteLine(TrackText);}catch(exception){;}
			RecSet.MoveNext();
		}

		TextFile.Close();
		TextFile=null;
	}

	RecSet.Close();
	RecSet=null;
}

////////////////
//全処理終了。//
////////////////
AdoDb.Close();
AdoDb=null;
WScript.Echo("全処理を完了しました。");
WScript.Quit(0);
関連記事

【同じタグを付けた記事の一覧】
自作ソフト ソースコード ポータブル 音楽管理 LISMO x-アプリ

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(65)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(34)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(26)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(17)
画像管理(15)
WindowsLiveWriter(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
ウォークマン(9)
fi-6130(9)
FLAC(9)
Gracenote(8)
英語音読学習計画(8)
Prolog(8)
JavaScript(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
wxWidgets(7)
spcbght(7)
DCP-J552N(6)
W63CA(6)
MP3Gain(6)
WinRT(6)
iGoinLM(6)
VirtualBox(6)
WindowsLiveMesh(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
楽器演奏(5)
Mery(5)
LAME(5)
音楽技術(5)
GalateaProject(4)
LLVM(4)
nLite(4)
MIDI(4)
ホームページ(4)
WindowsLiveSkyDrive(4)
GalateaTalk(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
112位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
11位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。