1

我有一个音乐应用程序,它使用TagLib库读取 ID3 标签。它适用于艺术家、标题、专辑、年份......

但我看不懂收视率。我试过这个:

TagLib.File track = TagLib.File.Create(name);
TagLib.Tag tag123 = track.GetTag(TagLib.TagTypes.Id3v2);
var usr = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
TagLib.Id3v2.PopularimeterFrame frame = TagLib.Id3v2.PopularimeterFrame.Get(
                                         (TagLib.Id3v2.Tag)tag123, usr, true);

但总是frame.PlayCount_frame.Rating0

有谁知道为什么我的代码不起作用?

4

2 回答 2

1

usr = "Windows 媒体播放器 9 系列"

于 2013-02-15T20:32:37.807 回答
1

我自己偶然发现了这个问题,标记的答案并没有为我解决。坦率地说,这甚至不是一个答案/解决方案——只是一个幸运的猜测,似乎已经为 OP 解决了。

根据 ID3v2(3) 规范,Popularimeter/POPM 字段的用途如下...

此帧的目的是指定音频文件的质量。在这个框架中可以找到许多有趣的应用程序,例如播放列表,它比其他人更频繁地提供更好的音频文件,或者它可以用来描述一个人的品味并通过比较人们的个人资料来找到其他“好”文件。框架非常简单。它包含给用户的电子邮件地址、一个评级字节和一个四字节的播放计数器,每次播放文件时都会增加一个。电子邮件是终止的字符串。评级为 1-255,其中 1 是最差的,255 是最好的。0 未知。如果不需要个人计数器,则可以省略。当计数器达到全 1 时,在计数器前面插入一个字节,从而使计数器在与播放计数器 (“PCNT”) 相同的距离内大 8 位。

资源

注意最后一句话;可能有多个 POPM 字段 - 但每个电子邮件地址只有一个。据我了解,如果您不提供实际存在的电子邮件(用户)值,TagLib 将返回空评级。在这种情况下,似乎usr = "Windows Media Player 9 Series"的幸运猜测似乎成功了,因为 Windows Media Player 可能是 OP 评级的作者。

使用 MediaMonkey 的我的解决方案是找出该应用程序使用的电子邮件地址值 - 即“no@email”。一旦我提供了该值作为参数,我就可以检索我的所有评分。

于 2017-01-30T18:26:23.640 回答