tekitoumemo’s diary

思ったことを書くだけ。長文版Twitter

【C#】iTunes COM Interface & Gapi.NET

5月からWeb系会社に転職するんで、必要に迫られてC#の復習。
でも普通に勉強なんてしてらんないんで、メンテナンスがてらにいじってる。
ってことでITunEsTooLの処理一部。

たぶんもう一生使わない。

iTunes COMGapi.NETがキーとなる感じ。

・曲情報を取得(iTunes COM)

int highID;
int lowID;
iTunesApp app = new iTunesApp();
IITFileOrCDTrack file = null;

foreach (IITTrack files in app.libraryPlaylist.Tracks)
{
 try
 {
  file = (IITFileOrCDTrack)files;
 }
 catch (Exception)
 {
  continue;
 }
 //get_ITObjectPersistentIDHighの引数はIITTrack、IITFileOrCDTrackどっちでもOK
 highID = itunes.get_ITObjectPersistentIDHigh(file);
 lowID = itunes.get_ITObjectPersistentIDLow(file);
}

ループでIITTrackでなくIITFileOrCDTrackにすると暗黙の型変換を行ってくれるんだけど、
編集不可能なファイルがあったりすると落ちる(マジでココの人ありがとう
だから明示的にキャストしてtry catchで囲ってる感じ(なにがあるかわかんねーからExceptionでcatchしてる、プログラマ失格。
get_ITObjectPersistentIDHighについては後述。


・任意の曲情報を取得(iTunes COM)

IITTrack track;
IITTrackCollection trackCol;
track = trackCol.get_ItemByPersistentID(highID,lowID);

iTunesの外部ソフトって再生中に何かしらするってものが多い。わざわざ再生なんかしたくねー曲がいっぱいあるからiTunes COMを読み漁ったらget_ItemByPersistentIDってのがあった。Name(名前検索)、PlayOrder(曲順)とかもあるけど、重複曲があったり、曲順とか常に変更するから全く使い物にならん。ItemByPersistentIDって名前から永続的に持ってる固有のID的な感じで読みとれた(恐らくTOEIC100点台の英語力)からこれでいいはず。引数は上記のとおりに取得出来る。

Google検索で画像のURLを取得(Gapi.NET)

SearchResults results;
results = Searcher.Search(SearchType.Image, Searchword);
foreach (SearchResult result in results.Items)
{
 //WebClient使って画像のダウンロードが可能(URLプロパティに検索結果が入ってくる
}

Searchの第一引数のSearchTypeをImageにする。
一回の検索で取得可能な回数は8回まで。たしかSearchの第三引数かなんかで検索開始位置を設定出来たような。
要は無限で検索可能っぽい。

どうしてもGit使いたいからVisual Studio2013Expressをインストール中。
今後使えるプログラマはGitHuber(GitHubを使いこなす人(俺命名)かそうでない人で分けられる気がする。