Как я могу увидеть, что альбом от разных исполнителей

В данный момент я пишу свой собственный небольшой (сетевой) музыкальный проигрыватель. Но я терплю неудачу из-за некоторых альбомов. Я храню всю информацию о песнях, альбомах и исполнителях в базе данных 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. Единственное, что я мог придумать, это что-то вроде: если больше половины песен от разных исполнителей -> «Разное». Это решение? Или вы знаете что-то еще?


person Martin    schedule 15.04.2014    source источник


Ответы (1)


Что следует учитывать:

  • Я думаю, что лучшим решением было бы использовать ID3Tag, понятный большинству игроков. ID3 на самом деле не содержит тега, который выполняет это, но есть несколько тегов, которые можно использовать для этого. См. этот ответ для объяснения.
  • The algorithm you propose will work most in the time, but there are two corner cases.
    1. an album from artist but mixed with many "feat.", e.g. Featuring Luciana
    2. альбом, состоящий всего из двух или трех исполнителей, но все же это сборник
person Absurd-Mind    schedule 15.04.2014