В данный момент я пишу свой собственный небольшой (сетевой) музыкальный проигрыватель. Но я терплю неудачу из-за некоторых альбомов. Я храню всю информацию о песнях, альбомах и исполнителях в базе данных NoSQL, например так:
{
"artist" : "Some artist",
"albums" :
[
{
"name": "Some album",
"info" :
{
"id" : ObjectId("534a7d66f1053d665015825b"),
"released" : "2013"
},
"songs" :
[
{
"name" : "Some song",
"file" : "music.mp3",
"time" : 219,
"id" : ObjectId("534a7d66f1053d665015825c")
}
]
}
],
"_id" : ObjectId("534a7d66f1053d665015825d")
}
Теперь я хочу показать пользователю все альбомы, которыми он владеет. Без проблем. Прокрутите всех исполнителей, выберите все альбомы, покажите их пользователю. Это бы отлично работало, если бы не компиляции. Когда я показываю все альбомы, как описано выше, пользователь видит компиляцию несколько раз, по одному разу для каждого исполнителя.
Сейчас я посмотрел на свой нынешний музыкальный плеер — Banshee — и увидел, что он показывает все компиляции как альбомы из «Разного». Но откуда он знает? Его нет в тегах ID3. Единственное, что я мог придумать, это что-то вроде: если больше половины песен от разных исполнителей -> «Разное». Это решение? Или вы знаете что-то еще?