Как мне сохранить рейтинг в песне? - PullRequest
7 голосов
/ 27 июня 2009

Я хочу иметь возможность хранить информацию о песне, которая была открыта с помощью моего приложения. Я хотел бы, чтобы пользователь мог дать песне оценку, и эта оценка будет загружаться каждый раз, когда пользователи открывают этот файл с помощью моего приложения.

Мне также нужно знать, следует ли мне хранить оценки в базе данных или в файле XML.

Ответы [ 7 ]

5 голосов
/ 27 июня 2009

C # ID3 Library - это библиотека классов .Net для редактирования тегов id3 (v1-2.4). Я бы сохранял оценки непосредственно в разделе комментариев в mp3, поскольку у id3v1 нет многих функций хранения, которые есть у id3v2. Если вы хотите хранить дополнительную информацию для каждого mp3, как насчет размещения уникального идентификатора в mp3 и последующего поиска в базе данных?

Я бы с осторожностью добавлял пользовательские теги в mp3, поскольку это простой способ испортить большую библиотеку. Кроме того, я шел по этому пути раньше, и, хотя я наслаждался полученными в результате знаниями в области программирования, пробовать что-то вроде iTunes SDK или Last FM могло бы быть лучшим путем.

4 голосов
/ 27 июня 2009

Я бы использовал однофайловую базу данных с нулевой конфигурацией. SQL Server Compact в вашем случае.

Я не думаю, что XML - это хорошая идея. XML сияет в данных , обменивается и хранит очень небольшие объемы информации. В этом случае пользователь может оценивать тысячи треков (лично я в онлайн-радио, которые позволяют оценки), и у вас может быть много другой информации о треке для хранения.

Экспорт и импорт с использованием процедур экспорта XML, если это необходимо. Не используйте его в качестве основного хранилища данных.

2 голосов
/ 27 июня 2009

Я бы сохранил его в файле, так как его проще хранить с самим mp3-файлом. Если все, что вы делаете - это сохраняете рейтинги, рассмотрите вместо этого установку поля рейтинга ID3?

1 голос
/ 27 июня 2009

Как уже упоминалось ранее, такую ​​информацию лучше хранить в самом медиафайле. И я предлагаю использовать для этого TagLib # lib (лучшая библиотека метаданных медиа, которую я могу найти). Очень мощный и простой в использовании.

1 голос
/ 27 июня 2009

Для такого типа очень простого хранилища, я не думаю, что это действительно так важно. Преимущества XML - это простота развертывания и возможность редактирования вне вашего приложения. "против", его можно редактировать за пределами вашего приложения (может быть хорошо, может быть плохо, зависит от вашей ситуации)

Может быть, другой вариант (только потому, что вы можете ;-) - это OODBMS, посмотрите DB4Objects , это серьезно затягивает и очень, очень круто.

0 голосов
/ 20 декабря 2010

Если формат песни поддерживает подходящие метаданные (например, MP3), следуйте советам Кевина по использованию метаданных. На сегодняшний день это лучший способ сделать это, и именно для этого предназначены метаданные.

Если нет, то это действительно зависит от вашего приложения. Если вы хотите поделиться информацией о рейтинге - особенно через веб-сервис, то я бы остановился на XML: было бы тривиально представить ваши списки XML, например, одним большим потоком.

XML (или большинство других текстовых форматов) также имеет то преимущество, что он может быть легко отредактирован человеком в текстовом редакторе.

База данных имела бы свои преимущества, если бы у вас была более закрытая система, вы хотели бы иметь быструю и быструю индексацию и / или имели бы другие таблицы, которые вы могли бы также захотеть хранить (например, данные об альбомах и группах).

0 голосов
/ 27 июня 2009

Я бы хранил оценки в XML-файле, чтобы его было легко редактировать извне, легко читать в .NET, и вам не нужно беспокоиться о доставке базы данных для чего-то простого с вашим приложением.

Что-то вроде этого может работать для вас:

<Songs>
  <Song Title="{SongTitle}">
    <Path>{Song path}</Path>
    <Rating>3</Rating>
  </Song>
</Songs>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...