Как и где можно получить правильное название музыкального трека?
Имеется множество записей с названиями музыкальных композиций (пример записи: Nickelback - Edge Of A Revolution)
Названия треков парсятся из метаданных, которые отдают различные интернет-радиостанции (Icecast, Shoutcast и т.д).
Очень часто, в названии трека встречается много лишних символов и мусора, которое никак не относится к названию трека. В следствии чего, возникает трудность в дальнейших манипуляциях с этими названиями треков.
Приведу небольшой пример:
Есть множество радиостанций, которые отдают названия треков с искаженным содержанием. Присутствуют всякие символы, крякозябры, лишние слова не относящиеся к названию самого трека или вовсе какой-нибудь мусор не являющийся названием песни. Я их выделил жирным шрифтом:
MODERN TALKING - Brother Louie || 3322
LINKIN PARK - One Step Closer || 21005
Animal ДжаZ - Счастье [Русский рок] !!! ПРЕМЬЕРА !!! SCOTTY - Children (Record Mix)
#2МАШИ - МНОГО КОФЕИНА [0:14] 004. Виа-Гра - Мое сердце занято 0107в - новогодняя - дискотека авария (СПУТНИК)
Существуют ли какие нибудь Сервисы или API, через которые можно на основе имеющегося названия трека - найти правильное и точное название песни?
Допустим мы ищем какой-либо трек в названии которого присутствует лишние символы...мусор, - а в ответ получаем правильное название трека оригинальное.
Есть вариант "в рукопашную". Если приведённые примеры - это имена файлов. Смотрите глазами на список файлов и выявляете какой-то шаблон. Например, 100 файлов типа Название трека || мусор. Натравливаете на этифайлы утилиту массового (пакетного) переименования. Например pyRenamer или GPRename. И по шаблону удаляете мусор из имён файлов. Утилита сделает это за секунду. Находите другой шаблон, например, Название трека [мусор]. Удаляете по этому шаблону мусор ещё из 200 файлов, и т.д. Конечно, на часть файлов не удастся подобрать шаблоны. Но хотя бы переименуете большие группы файлов, часть работы будет сделана относительно малой кровью.
hint000, Приведенные примеры - это то, что отдаёт радиостанция в метаданных, о чём я написал в вопросе. Наличие полмиллиона записей в базе данных, это как пример количества треков. Как раз-таки для того, чтобы люди не писали о регулярках.
Есть множество радиостанций, которые отдают названия треков с искаженным содержанием.
У меня нет никаких музыкальных файлов. Есть только текст. Названия треков могут быть совершенно хаотичные и применять здесь регулярки, регекспы , прочие шаблоны и паттерны - просто не целесообразно и не реально.
Есть трек с названием "Alexia - Uh La La La" , который радиостанции отдают в разных вариациях:
ALEXIA - Uh La La La
ALEXIA - Uh_La_La_La 016. Aleksia - Uh La La La ALEXIA Uh La La La #2019
Вариант в рукопашную, регуляркой, регекспами, паттернами, шаблонами и любыми другими модификациями и форматированием здесь не целесообразен.
Нужен какой то музыкальный сервис, которому можно скормить любой из приведенных выше примеров. В результате чего, если у музыкального сервиса имеется в базе трек, он вернет нормальное, оригинальное, чистое и правильное название трека: Alexia - Uh La La La.
hint000, Да всё уже изобретено до нас. Вопрос только найти такой "сервис" или его подобие, и понять, где и как можно получить нормальный трек, имея его необработанные вариации..
Saboteur, Неплохо было бы написать как? У Shazam нет публичного API., а также нет никаких SDK. Если брать альтернативу шазаму, в которой есть API, то их сервис платный , и посчитав стоимость прогона полмиллиона треков по их прайсу, можно квартиру в Москве купить)))
Насколько я знаю, до сих пор нет какой-то единой Базы Данных всех музыкальных произведений. Есть множество отдельных. Например, РАО, Discogs (есть api), AllMusic.
Поиск в них может помочь найти наиболее похожие названия. Ошибки исключить нельзя.
Лучше всего будет поделить название песни на составляющие: Исполнитель - Имя Песни
Создать базу исполнителей и занести туда все их песни(один раз спарсить базу).
Дальше при помощи fuzzylogic алгоритма сравнивать названия и удалять ненужные символы.