私のiTunes再生履歴送信プログラムはJava版もCocoa版も今回のC#版も基本は同じで、「最近再生した項目」というスマートプレイリストを「最後に再生した日時」でソートしておき、その順番でデータを走査し、最後に送信した日時以降だったら、サーバへ送信するというアルゴリズムで組んでいる。
Mac版では問題にならなかったのだが、今回、C#版を動かしていて思うように動かなかった。
iPodでアルバム2枚再生したところでiTunesと同期を取り、アプリを起動したのだが、後から再生した1枚分しか送信されないのだ。
デバッガで追ってみた。COMで取得し、ループで回っている順番と、スマートプレイリストの順番が違うのだ。順番を信用したアルゴリズムを使っていたため、そのような現象になったようだ。
順番が守られないなら話は別だ。
スマートプレイリストから楽曲情報を取得し、内部でソートし、その情報を使うようにプログラムを修正すればよい。コストはかかるが、速度が要求されるプログラムではないから問題にはならないだろう。情報量的にもそれほどではないからメモリ的にも問題にもならない。
それにしても、Macでやっていたとき、本当にこういう現象おきていなかったのかなぁ?
厳密な意味では検証していないからな。
コメント