- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:comインターフェイスを使ってiTunes操作)
COMインターフェイスを使ったiTunes操作方法とtrackIDの特定に関する質問
このQ&Aのポイント
- VBAを使用して、COMインターフェイスを介してiTunesを操作しています。ExcelのVBAを通じて、プレイリストとWalkmanのフォルダを同期させるために、曲リストを作成しています。しかし、時間がたつとtrackIDが変更されてしまい、特定の曲を更新することができません。
- 現在、タイトル、アーティスト、歌詞、ファイル名を変更し、Excelシートで更新しています。更新結果と元のリストを比較して、一致するtrackIDを特定し、更新しています。
- 一意に曲を特定するためのtrackIDを見つける方法について、ご助力をお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
なければ作れば良いんです。 IDの生成で一番簡単なのはHash関数を使う方法です。 ただVBAでHash関数は何かと問題があるのでHash関数そのものは外部アプリを使うと良いです。 お薦めとしてはsha256.exeまたはsha256sum.exeというフリーソフトを探して下さい。 Hash関数を使うと、内容を読み取って内容に基づいた固定長の値(16進数文字列)を吐き出します。 この値は内容が同じであれば必ず同じ値が吐き出されます。 1バイトでも違っていると大きく異なる値が吐き出されます。 sha256を使うと、乱暴な言い方をすると2の256乗個ぶんのファイルを区別できます。 但し(詳しい説明は省きますが)実際にはこれよりは大きく減りますが、それでも数千万くらいは全く問題なく区別付けられると思います。 それでももし万が一異なる曲なのに同じ値が得られてしまったら、sha256と一緒に別のHash関数による値を組合せる事で区別出来ます。 例えばべつのHash関数としてsha1というものを使った場合 sha256による値@sha1による値 といった形で連結した文字列をIDとして使うと良いと思います。 あとはExeclのテーブルで曲ごとに上記IDも併せて記憶しておき、実際の音楽ファイルとのマッチングは曲のプロパティのコメントにでも埋め込むなどして比較すると良いと思います。
お礼
ご回答ありがとうございます。 hash はアイデアとしては考えました。scriptdictionary を使おうかと思っていました。 ただ、やりたいのは、track を"直接指定"する事なので、結局「比較する必要がある」点では、現状とあまり変わりません。 ※trakid の振り直し対策には有効と思います。 もう少し検討してみます。