【问题标题】:How do I store a rating in a song?如何在歌曲中存储评分?
【发布时间】:2009-06-27 04:49:39
【问题描述】:

我希望能够存储有关使用我的应用程序打开的歌曲的信息。我希望用户能够给歌曲评分,并且每次用户使用我的应用程序打开该文件时都会加载此评分。

我还需要知道是否应该将评分存储在数据库或 xml 文件中。

【问题讨论】:

  • 随时!我建议将此问题重新命名为“如何在歌曲中存储评分?”

标签: c# .net xml database winforms


【解决方案1】:

C# ID3 Library 是一个 .Net 类库,用于编辑 id3 标签 (v1-2.4)。我会将评级直接存储到 mp3 的 cmets 部分,因为 id3v1 没有 id3v2 的许多存储功能。如果您想为每个 mp3 存储附加信息,如何在 mp3 上放置一个唯一标识符,然后让它进行数据库查找?

我会谨慎添加自定义标签到 mp3,因为这是破坏大型库的简单方法。此外,我以前也曾走这条路,虽然我很享受从中获得的编程知识,但尝试 iTunes SDK 或 Last FM 之类的东西可能是更好的路线。

【讨论】:

  • 谢谢!我已经下载了 C# ID3 Lib,但没有考虑使用 cmets 作为保存评级的方法。这也让我可以使用比 1-5 更好的评分系统。
【解决方案2】:

我会使用单文件、零配置数据库。 SQL Server Compact 在你的情况下。

我认为 XML 不是一个好主意。 XML 在数据交换和存储非常少量的信息方面大放异彩。在这种情况下,用户可能会对数千首曲目进行评分(我个人曾在允许评分的在线广播中进行评分),并且您可能需要存储许多有关曲目的其他信息。

如果需要,可以使用 XML 导出程序进行导出和导入。不要将其用作您的主要数据存储区。

【讨论】:

  • Sqlite 是另一种流行的单文件、零配置数据库。
【解决方案3】:

我会将它存储在一个文件中,因为它更容易与 mp3 文件本身一起保存。如果您所做的只是存储评分,您会考虑改为设置 ID3 评分字段吗?

【讨论】:

  • 您能否提供更多有关 ID3 评级字段的信息? (具体如何用C#修改和保存)
【解决方案4】:

对于这种非常简单的存储类型,我认为这并不重要。 XML 的优点是它非常易于部署并且可以在您的应用程序之外进行编辑。缺点是,它可以在您的应用程序之外编辑(可能是好的,也可能是坏的,取决于您的情况)

也许另一种选择(只是因为您可以 ;-) 是 OODBMS,请查看 DB4Objects,它非常令人上瘾,而且非常非常酷。

【讨论】:

    【解决方案5】:

    如前所述,最好将此类信息存储在媒体文件本身中。我的建议是为此使用TagLib# lib(我能找到的最佳媒体元数据库)。非常强大且易于使用。

    【讨论】:

      【解决方案6】:

      我会将评分存储在 XML 文件中,这样可以轻松从外部进行编辑,在 .NET 中易于阅读,而且您不必担心为应用程序提供简单的数据库。

      这样的事情可能对你有用:

      <Songs>
        <Song Title="{SongTitle}">
          <Path>{Song path}</Path>
          <Rating>3</Rating>
        </Song>
      </Songs>
      

      【讨论】:

      • 在 XML 属性中使用 = 并且必须被引用。元素标签区分大小写(“”)。
      【解决方案7】:

      如果歌曲格式支持合适的元数据(例如 MP3),请按照 Kevin 的建议使用元数据。这是迄今为止最好的方法,也是元数据的用途。

      如果不是,那么这真的取决于您的应用程序。如果您想共享评级信息 - 特别是通过 Web 服务,那么我会选择 XML:例如,将您的 XML 列表作为一个大提要提供是微不足道的。

      XML(或大多数其他文本格式)还有一个优点,即它们可以由人类在文本编辑器中轻松编辑。

      如果您有一个更封闭的系统,您想要速度和快速索引,并且/或者您可能还想要存储其他表(例如,关于专辑和乐队的数据),那么该数据库将具有其优势。

      【讨论】:

        猜你喜欢
        • 2012-05-21
        • 2013-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多