スポンサーサイト

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

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

iTunes(Win)で楽曲情報の一覧を TEXT で取得したい

2017年05月24日(水)12時30分

JScript

前回「foobar2000 で楽曲情報の一覧を TEXT で取得したい」の続きです。
今回は iTunes(Windows 版)で同様の情報を得ます。
WSH(JScript)で iTunes にアクセスし、必要情報を抽出しました。
以前に書いた「iTunes の「スキップ回数をリセット」スクリプト」を少し改変したものです。

使い方

適当な名前で TEXT ファイルを作り、下記に掲載した JScript のソースコードをコピペし、拡張子「.txt」を「.js」に変更します。
実行するとスクリプトのファイル名と同名の TEXT ファイルが作成され、各トラックの「アーティスト」「アルバム」「曲番」「タイトル」「時間」がタブ区切りで記録されているはずです。
以下のソースコード部分は、ダブルクリックで全選択状態になりますので、コピーが簡単になります。

//iTunesで選択トラックの「アーティスト」「アルバム」「曲番」「タイトル」「時間」をTEXTファイルで出力するスクリプトです。
//トラックが選択されていない場合は全てのトラックを対象にします。
//出力されるTEXTファイルはスクリプト名の拡張子を「.txt」に変更したタブ区切りのUTF-16LE(改行CRLS)です。
//
//2017/05/24(http://denspe.blog84.fc2.com/)

////////////////
//出力対象取得//
////////////////
//iTunes操作用オブジェクトの生成。
var iTunesApp=WScript.CreateObject("iTunes.Application");
//出力対象のトラック情報オブジェクト群格納用変数。
var iTracks=null;
//選択トラックの確認。
if(iTunesApp.SelectedTracks)
{
	//トラックが選択中である場合はそれらを対象トラックとして設定する。
	iTracks=iTunesApp.SelectedTracks;
}
else
{
	//MessageBox用の定数値。
	var MbYesNo=4;
	var MbQuestion=32;
	var MbNo=7;

	//トラックが未選択である場合は全トラックを対象とするかメッセージボックスで尋ねる。
	if(new ActiveXObject('WScript.Shell').Popup("対象トラックが未選択です。\n全てのトラックを対象にしますか?",0,"楽曲情報をTEXT出力",MbYesNo+MbQuestion)==MbNo)
	{
		//メッセージボックスで「いいえ」が選択された場合は出力対象が存在しないためスクリプトを終了させる。
		WScript.Echo("スクリプトを終了します。");
		WScript.Quit(0);
	}

	//メッセージボックスで「はい」が選択された場合は全トラックを対象として設定する。
	iTracks=iTunesApp.LibraryPlaylist.Tracks;
}

//この時点で選択トラックが存在しない場合は出力対象が存在しないためスクリプトを終了させる(iTunesに一曲も登録されていない等)。
if(!iTracks||iTracks.Count<1)
{
	WScript.Echo("対象トラックが存在しないため、スクリプトを終了します。");
	WScript.Quit(0);
}

//////////////
//メイン処理//
//////////////
//ファイル操作用オブジェクトの生成。
var fso=WScript.CreateObject("Scripting.FileSystemObject");

//TEXTファイルを生成する。
try
{
	//「スクリプトパス\スクリプト名.txt」形式のファイル名の生成。
	var TextFileName=fso.BuildPath(fso.GetParentFolderName(WScript.ScriptFullName),fso.GetBaseName(WScript.ScriptFullName))+".txt";
	//UNICODE形式の強制上書きモードでファイルを生成する。
	var TextFile=fso.CreateTextFile(TextFileName,true,true);
}
catch(exception)
{
	//TEXTファイルの生成に失敗した場合はスクリプトを終了させる。
	WScript.Echo("TEXTファイルの生成に失敗しました。");
	WScript.Quit(0);
}

//出力失敗回数カウント用変数。
var ErrCnt=0;
//選択トラックの情報を順に書き出していく。
for(var Cnt=1;Cnt<=iTracks.Count;Cnt++)
{
	try
	{
		//変数「Str」に「アーティスト\tアルバム\t曲番\tタイトル\t秒数」形式でトラック情報文字列を構築する。
		//アーティスト+タブ。
		var Str=iTracks.Item(Cnt).Artist;
		Str+="\t";
		//アルバム+タブ。
		Str+=iTracks.Item(Cnt).Album;
		Str+="\t";
		//曲番+タブ。
		Str+=NumericStrings(iTracks.Item(Cnt).TrackNumber,2);
		Str+="\t";
		//タイトル+タブ。
		Str+=iTracks.Item(Cnt).Name;
		Str+="\t";
		//時間(秒数)。「iTracks.Item(Cnt).Time」にすると「時:分:秒」形式で取得。
		Str+=iTracks.Item(Cnt).Duration;
		//構築したタブ区切り文字列を一行出力でファイルに書き込む。
		TextFile.WriteLine(Str);
	}
	catch(exception)
	{
		//エラーが出た場合はスクリプト終了ではなく回数を記録しておいて終了時に提示する。
		ErrCnt+=1;
	}
}

//書き込みを終えたTEXTファイルの事後処理。
TextFile.Close();
TextFile=null;

////////
//終了//
////////
//成功メッセージを表示する。
PopUpMessage=iTracks.Count+"トラックの楽曲情報をTEXT出力しました。";
//エラーが出ていた場合はその回数を提示する。
if(ErrCnt>0)PopUpMessage+="\n出力に失敗したトラックが"+ErrCnt+"個ありました。";
//終了メッセージを表示する。
PopUpMessage+="\nスクリプトを終了します。";
WScript.Echo(PopUpMessage);
//スクリプトを終了する。
WScript.Quit(0);

//////////////////
//各種補助関数。//
//////////////////
//指定した数値(Number)を指定した桁数(Digits)の文字列(0埋め)に変換する。
//引数に数字以外渡された場合は0として扱われる。
function NumericStrings(Number,Digits)
{
	//引数が数字でないなら0として扱う。
	if(isNaN(Number))Number=0;
	if(isNaN(Digits))Digits=0;
	//数値が初めから指定桁数を超えている場合は終了。
	if(String(Number).length>=Digits)return Number;
	//指定桁数分の"0"を連ねた文字列を生成。
	var NumStr="";
	for(DigCnt=0;DigCnt<Digits;DigCnt++)NumStr+="0";
	//指定された数値の頭に指定桁数分の"0"を連結。
	NumStr=NumStr+Number;
	//生成した文字列の右側から指定桁数分の文字列を切り出す。
	NumStr=NumStr.substr(NumStr.length-Digits,Digits);
	//切り出した文字列を返す。
	return NumStr;
}
関連記事

【同じタグを付けた記事の一覧】
自作ソフト ソースコード JavaScript 音楽管理 iTunes

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
09 | 2017/10 | 11
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 31 - - - -
月別アーカイブ
プロフィール

電脳太助

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

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

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

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

音楽管理(66)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(35)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(27)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(18)
WindowsLiveWriter(15)
画像管理(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
fi-6130(9)
FLAC(9)
JavaScript(9)
ウォークマン(9)
英語音読学習計画(8)
Gracenote(8)
Prolog(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
spcbght(7)
wxWidgets(7)
VirtualBox(6)
W63CA(6)
DCP-J552N(6)
WinRT(6)
WindowsLiveMesh(6)
iGoinLM(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
MP3Gain(6)
LAME(5)
音楽技術(5)
Mery(5)
楽器演奏(5)
GalateaTalk(4)
nLite(4)
WindowsLiveSkyDrive(4)
ホームページ(4)
GalateaProject(4)
MIDI(4)
LLVM(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アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
161位
アクセスランキングを見る>>

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