MeloManiac — база данных альбомов для меломанов

В начале этого года я начал заниматься разработкой системы workflow для одной компании, причем по условиям нужно было работать с фреймворком Turbogears — питоновской системой для создания клиент-серверных приложений, работающих через браузер. Чтобы было интереснее разбираться с новой для себя штукой, я одновременно начал писать для себя систему по классификации музыкальных альбомов. Дело в том, что существующие подобные базы, которые есть в интернете, меня не устраивали: Last.fm не позволяет оценивать альбомы, навигация везде неудобная, и главное — нет привязки к своей коллекции. Оффлайновые программы вроде iTunes меня тоже не устраивают, опять же из-за другой изначальной нацеленности: они заточены больше под прослушивание, чем классификацию и сортировку по нужным критериям, кроме того, в функционал необходимо было добавить и альбомы, которые находятся не на компьютере, а в виде физических дисков.

Зачем я всё это здесь пишу. Интересно посмотреть, насколько это дело сейчас актуально, кому-нибудь нужно. А может быть какие-то компании заинтересованы в подобных разработках — тогда буду рад предложениям о сотрудничестве (dimouse _at_ old-games.ru).

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



image

С интерфейсом особо не заморачивался: есть три основные страницы с доступом к таблицам, соответственно, исполнителей, альбомов и жанров. На каждой, само собой, реализован основной CRUD функционал, есть возможность сортировок и фильтраций таблиц. Всё это очень легко организовать благодаря MVC парадигме, которой руководствовались создатели Turbogears, а также использованию SQL Alchemy.

image

На странице с исполнителями хотел бы отметить рейтинг исполнителя, который вычисляется по следующей формуле: средняя оценка по альбомам (кроме тех, которые не оценены) + число таких альбомов / 10. Таким образом будут более-менее уравновешены титаны, которые сделали несколько десятков отличных альбомов, но несколько подпортили впечатление небольшим числом середнячков или провальных альбомов (а такие бывают у всех, кроме Mercyful Fate:)), и группы, ярко выстрелившие одним-единственным альбомом, но потом ничего не сделавшие. Результат подобного рейтинга мне показался очень близок к моим настоящим предпочтениям, поэтому я его и использую.

image

Основная страница — это, конечно же, альбомы. Как было заявлено в начале, кроме информации о самом альбоме, я здесь храню и информацию о его наличии. Дело в том, что база мной начала собираться в виде текстового файла еще н-ное число лет назад, а многие альбомы, которые когда-то были, неизбежно потерялись, особенно это касается mp3-файлов, поэтому система может быть полезна и тем, что может показать такие альбомы — их надо найти и скачать. Ссылка «rips I don't have» на главной странице как раз является шорткатом для отображения таких альбомов. Кроме того, я здесь же храню информацию о наличии у меня альбомов в физическом виде — причем отдельный бит здесь выделен под альбомы, выпущенные зарубежом (к сожалению, до сих пор основная часть дисков у меня — это наследие пиратского прошлого 90-ых). Еще хотел добавить бит на наличие альбома в виде пластинки, но пока не стал — пластинок у меня мало, хотя если какие-то меломаны захотят этим пользоваться, то им, возможно, будет нужен такой функционал.

Каждое изменение записи об альбоме записывается в виде «даты последнего изменения». На самом деле надо было сделать отдельную переменную для фиксирования именно даты прослушивания, но пока сделано так, поэтому сортировка и фильтрация по дате показывают всё в куче: те альбомы, которые прослушаны и оценены, те, у которых изменились данные, а также новые свежедобавленные (их, правда, можно отделить от оцененных, так как у них, как правило, еще нет оценки).

Наполнение базы вручную — это, безусловно, весело, но странно было бы не использовать автоматизированные средства по добавлению данных прямо с компьютера: ведь на сегодняшний день музыкальные коллекции — это прежде всего MP3. А в MP3 файлах есть теги, с которыми у любителей всё разложить по полочкам всегда головная боль: ну не любят люди их правильно заполнять, да и вообще заполнять. Не говоря уже о именах файлов… Поэтому система Меломаньяк с одной стороны, проверяет соответствие базы и файлов, а с другой, может «населяться» вообще сразу оттуда (правда, сначала все-таки надо будет завести нужных исполнителей), что будет весьма удобно тем, кто только начинает свой список альбомов, а не как я — подстраивает уже существующий список под написанную для нее систему с помощью цепочки сложных конвертаций (сначала я, пока не определился в каком виде оно будет, писал систему на Си с помощью CppSQLite3.

image

Да, несколько слов о технической реализации. Для того, чтобы всё это организовать нам нужно как-то работать с MP3-тегами под Python. Подобных библиотек наклепали великое множество, поэтому делать что-то самому смысла нет. Был взят Mutagen, как наиболее удобный и развитый. В Мутагене помимо прочего есть скрипт для преобразования всех тегов в Unicode, но под Винду с ним особо не поработаешь, поэтому код был адаптирован и включен в Меломаньяка. Теперь, наконец-то, все треки отображаются нормально, когда мне хочется послушать музыку с телевизора! Вывод информации о треках в данной директории носит скорее информационный характер, так как информации о самих треках в базе пока нет, хотя, честно говоря, иногда тянет такое сделать и посмотреть, какой альбом самый длинный у меня в коллекции, где больше всего песен и т.д.

Вообще, поле для развития есть огромное: можно еще говорить о разных релизах одного альбома, о привязке этих релизов к определенным директориям на компьютере (или на сетевом диске, как у меня), проверке системой наличия нужных треков в этих директориях, а также слежении за структурой вложенности этих директорий и их названий (например, ЖАНР/ИСПОЛНИТЕЛЬ/АЛЬБОМ/РЕЛИЗ), но на данный момент мне не хочется перегружать систему малоиспользуемыми штуками: я могу посмотреть прослушанные альбомы и те, которые еще предстоит прослушать, посмотреть на свои оценки, сравнить, имею доступ к http-серверу с программой на любом из своих компьютеров (внутри домашней сетки), — а большего мне, в общем-то, и не надо.

Буду рад услышать отзывы или заинтересованных в использовании программы людей.

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 12

    +1
    Видели echonest.com, discogs.com?
    0
    beets.radbox.org/ — для гиков-меломанов.

    ИМХО, дизайн вырвиглазный. Посмотрите в сторону twitter.github.io/bootstrap/ или designmodo.github.io/Flat-UI/

    P. S. Хотя если вам нравится, то кто я такой чтобы судить :)
      0
      Вот это спасибо! Приятно, что люди внимательно читают:) Beets вроде похоже, но все-таки не то — больше похоже на систему для контроля MP3-тегов, чем для классификации коллекции (внимательно не смотрел). Для контроля тегов я использую программку MP3tag, хотя там всё больше вручную надо работать.

      Над дизайном толком не работал, да и нет у меня способностей к этому. За ссылки спасибо — пригодятся!
      0
      Мне в качестве сервиса классификации очень понравился Gracenote (https://developer.gracenote.com/)
        0
        Про discogs уже написали. Rateyourmusic смотрели? Дискогз мне нравится своей чистотой и лаконичностью (+ иногда покупаю через него диски); рейтюмьюзик более социальный (ревью, оценочки и чарты).
          0
          Да, видел такой сайт. Но социализация — это последнее, чего мне бы хотелось. К тому же, сейчас вот зарегался, получается только сделать таблички с сортировкой по названию альбома, исполнителя и по рейтингу — никаких фильтраций или по году выпуска, например. В общем, сервис явно не на это рассчитан.
            0
            Не знаю, правильно ли я понял, но скорее всего имеется ввиду это rateyourmusic.com/wiki_deprecated/Collection%20Links
            Там после оценивания/добавления себе в коллекцию можно делать так.
              0
              Да, имеется в виду такой список
              Может быть, там и можно передавать через урл что-то больше, чем я написал выше, но это моветон — заставлять пользователя писать буковки и циферки в урл, а не реализовать это через веб-интерфейс.
                0
                Там заявок на доработку функционала у них ещё тьма и чуточку больше, так что наверняка доделают это в последствии, чтобы было удобно рядовому пользователю :)

        Only users with full accounts can post comments. Log in, please.