Заворачиваем Amarok на MySQL

    Или софтверная зоофилия


    Amarok — на мой, взгляд — гениайнельший из всех ныне существующих аудиоплееров, снабжён не менее гениальной музыкальной библиотекой.(Именно переход на линукс и амарок приучил меня пользоваться этим инструментом музыкоорганизации, винамповская и вин-медиаплеерская либари просто таки пугали своей непонятностью и несуразностью.) Как известно, вся эта музыкальная библиотека крутится на определённой базе данных. В стандартной конфигурации, это SqlLite. Такая чудненькая легковесная БД, не требующая ни пользователе-паролей, ни каких-либо настроек, просто включил и оно себе работает. Но, у нее есть один серьёзный недостаток: она медленная, нет-нет, не то слово, просто таки тормозная!

    SqlLite подходит для музыкальной библиотеки на десять гигабайт, на двадцать, ну хорошо, с натяжкой на пятьдесят гиг. Но заставлять её контролить большее количество записей — взаимомучение как для пользователя, так и для самой БД. На моей домашней машине, с немолодым, но и не самым старым Pentium4 2,4ггц хранится около 150 гиг музыки, первоначальное создание библиотеки — занимает довольно большое, но простительное время, а вот поиск — это уже страшно. Каждый раз окно плеера сереет (да, да, компиз) секунд на десять, а процессор кряхтит на все сто процентов. Да и другие операции с БД осуществляются довольно медленно и ресурсозатратно. С этим нужно было что-то делать.
    У меня, как думаю и у большинства людей, занимающихся веб-разработкой MySQL стоит уже по долгу службы. Если нет — установить её не составляет никаких проблем. Так почему бы не предоставить ей контроль над своей музыкальной библиотекой? Как показывает практика — работает все в десятки раз быстрее.
    Итак, далее я опишу настройку базы данных и плеера, в общем здесь ничего сложного нет, и спокойно можно разобраться самому.
    Скорее всего, большинство читающих убунто/кубунто-воды, а я к ним не принадлежу, так что попытаюсь описать в общих чертах, какие пакеты нам понадобятся.
    В первую очередь это сама база даных:
    вбиваете в поиск своего любимого менеджера пакетов словечко mysql, и интутивно тыкаете галочки напротив того, что нужно:)
    А нужно скорее всего:
    mysql-server (остальное должен потянуть за собой в качестве зависимостей)
    mysql-common (если зависимостей сервер не потянул)
    mysql-client (в общем с той же причины)
    mysql-admin (если конечно вы не умеете управлять базами данных, в ручную вписывая Sql-запросы. Хотя, если умеете, то зачем вы вообще читаете этот мануал?)
    amarok (черт его знает, а вдруг вы собрались настраивать плеер, не установив его?)
    Итак, установив необходимые пакеты, приступаем к настройке.
    Для продвинутых, опционально можно покрутить файл /etc/my.cnf. Но, как показывает практика, это совсем не обязательно.
    Для начала нужно запустить нашу базу данных. Для этого нужно либо перезагрузиться, либо написать в консоли:
    #/etc/init.d/mysqld start

    В любом случае, при следующем запуске, база данных запустится сама.
    Далее, займемся настройками таблиц и пользователей. Некоторым думаю будет удобнее делать это с помощью phpMyAdmin, или вручную с помощью запросов, но для меня — самый знакомый и простой инструмент это mysql-administrator. Его и запускаем.
    mysql-administrator
    Нас встречает окошко авторизации в базу данных: 



    Делаем все так, чтоб было как на картинке. В стандартной конфигурации должно пустить с пользователем root и без пароля. Если нет — попробуйте пароль администратора на вашем компьютере, если все-равно нет — лопатте /etc/my.cnf, или пишите сюда, разберёмся.
    Если все хорошо, то нас должно встретить такое окошко:


    Переходим на вкладку «Catalogs». Кликаем правой клавишей в поле Schemata, выбираем «Create Schema».

    Задаем имя новой таблицы, в нашем случае — amarok.

    Далее — идем в User Administration.

    Выбираем пользователя root и устанавливаем для него пароль (к мануалу отношения не имеет, но все же так значительно безопаснее) Не забывайте, что при следующем подключении с mysql-administrator нужно будет вводить установленный пароль.
    Потом добавляем пользователя amarok (большая такая кнопка внизу «new user»). При желании ставим и для него пароль.
    Выбрав пользователя — переходим на вкладку (вверху, а не сбоку) «Schema Privileges»:

    Там — выбираем в левой колонке созданую нами схему «amarok», в правой — жмем ctrl+a и перемещаем стрелочкой все привилегии в центральную колонку (не, ну конечно можно вручную повыбирать привилегии для пользователя, но по моему, это лишнее).
    С настройкой базы покончено, выходим из администратора.
    Теперь осталось настроить Amarok.
    Останавливаться на том, как пользоваться библиотекой, и какие папки вам сканировать, я не буду.
    Идем в настройки, в пункте «база данных», выбираем MySQL. В названии узла, или как там, прописываете localhost. Базу данных и пользователя — тех что вы создали, в нашем случае — везде пишем amarok.

    Вуаля! Плеер заново создаст музыкальную библиотеку (не бойтесь за скачанные с интернета обложки, они останутся:) ), займет это совсем немного времени. И теперь можно радоваться! Поиск треков по базе значительно шустрее и приятнее. Как и работа с динамическими плейлистами.
    Если, не дай Бог, будут проблемы с треками содержащими кириллицу в названиях (такое у меня случалось на OpenSuse), попробуйте в /etc/my.cnf в разделе [mysql] вписать «default-character-set = utf8».
    Поделиться публикацией

    Комментарии 59

      +1
      Спасибо за описание, при установке амарока видел, что он может поддерживать mysql, но чето было влом разбираться как эту связку настроить, пользовался тормозной sqlite.
      Теперь обязательно попробую настроить связку с мускулом.
        0
        классно... а вот VLC вот виндовс вобще впринципе может хранить библиотеку в мускуле?
          0
          Оочень сомневаюсь...
          Но есть плагин для винампа, который держит медиалибари на MySql. Говорят, можно с него в Vlc-шку драгндропом песни перетягивать... Вот такой вот костыль=)
          А винампоюзерам - полезно будет:)
            +2
            У VLC есть своя медиа-библиотека?
            0
            Собственно, вот ещё один способ правильного отображения кирилицы http://starl1te.wordpress.com/2007/01/13/Русские-теги-в-amarok-2/
              0
              Проблема которую я описал в конце топика не имеет отношения к амароку, это проблема MySql.
              А теги всеравно лучше перевести в utf-8.
                0
                Тэги нельзя делать в UTF-8. Стандарт ID3v2 разрешает кодировки ISO-8859-1 и UTF-16.
                  +1
                  Это вы говорите о ID3v2.3.
                  4я версия как раз поддерживает именно UTF-8.
                  http://www.id3.org/id3v2.4.0-structure

                  Frames that allow different types of text encoding contains a text
                  encoding description byte. Possible encodings:

                  $00 ISO-8859-1 [ISO-8859-1]. Terminated with $00.
                  $01 UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM. All
                  strings in the same frame SHALL have the same byteorder.
                  Terminated with $00 00.
                  $02 UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM.
                  Terminated with $00 00.
                  $03 UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00.
                    0
                    Опередили вы меня...
                      +1
                      Ага, и ни один из нас не отметил, что 2.4 был опубликован более 7 лет назад!
                        0
                        :) дада... При том, читая чейнджлист я это для себя заметил...
                          0
                          Тоже спасибо :)
                        0
                        Ценное замечание, спасибо.
                        0
                        Кроме того, многие признают, что формальный запрет на UTF-8 был ошибочным. Большинство протеганных файлов в ID3v2.3 все равно кодированы UTF-8.
                          0
                          Стандарт ID3v2.4.0 поддерживает utf-8.
                          Читаем например здесть
                    • НЛО прилетело и опубликовало эту надпись здесь
                        +1
                        Хехе... Знал что кто-то спросит:)
                        Gtk-тема называется Aurora. Kde-шная - Domino(та, которую в амароке видно).
                        0
                        Спасибо огромное за статью, сейчас буду настраивать :)
                          0
                          Скажите, Amarok хранит в базе музыкальные файлы целиком? Как я понимаю, достаточно же в базе хранить только описания композиций.
                            0
                            Извиняюсь, неправильно понял фразу про 150 Гиг музыки.
                              0
                              Описания, пути, и ссылки на обложки. Файлы хранятся там, где вы их храните=)
                              –12
                              вот это ппц новость. Собственно я так понимаю это просто инструкция по установке и настройке mysql для самых маленьких?... Только неясно зачем этим маленьким хранить базу амарока в мускуле, для них же специально в амароке сделана поддержка sqlite прямо искаропки.
                                +1
                                Вот угадайте, почему я вам комент минусанул?
                                  –8
                                  может потому что вы как раз и есть тот самый "маленький", о которых я писал, и стыдитесь этого? На самом деле тут конечно нечего стыдиться, но это ваша воля.
                                    0
                                    Мм... Вы забавно пишете, мне понравилась ваша версия.
                                    На счет того, маленький ли я, или большой, говорить ничего не буду. Во первых, как говорилось - основное преимущество - это быстродействие. Во вторых, мускуль у меня лично давно стоит и настроен немного для иных нужд, а описание установки-настройки я провел специально для топика. В третьих - можна быть великим програмистом/дизайнером/кем-либо-другим и при этом не иметь ни малейшего понятия в работе с базами даных. И тратить время на их освоение - совсем невыгодно, нет, точнее не нужно, а при этом, хочется, чтобы любимый плеер работал лучше.
                                      0
                                      Вот и я о том же. Сам перешел на Mysql потому что mysql сервер всё равно висит запущенный, потому грех его не заюзать. Но инструкция очевидно рассчитана на маленьких (хотя бы эти жуткие манипуляции с какими-то граф. интерфейсами для mysql), и вот им она как раз совершенно ни к чему. А тем кто знает что такое mysql она естественно тоже не нужна.

                                      ЗЫ а насчет скорости - давно известно что sqlite заметно обгоняет mysql в запросах на выборку (а в данном случае, я думаю таких запросов будет большинство), потому как-то все это сомнительно выглядит
                                        0
                                        Инструкция рассчитана на людей, которые не знакомы с MySql, но при этом хотят ее использовать для содержания медиалибари.

                                        На счет скорости запросов на выборку, не знал. А можно поподробнее?
                                        Ну, все равно, субьективно на MySql библиотека работает значительно быстрее.
                                          0
                                          Вот я и не понимаю, зачем тем кто не знаком с mysql хотеть его использовать...

                                          Найти самому результаты тестирования - 2 мин делов, если вас в гугле не забанили. Ну а для маленьких http://www.sqlite.org/speed.html Но это естественно не означает что sqlite в итоге окажется быстрее
                                +1
                                Автор упирает на быстродействие.
                                  0
                                  Ну попробуйте 300-гигабайтовую фонотеку с SQLite использовать. SQLite хорошая вещь, но не для таких объемов. Инструкция, да, получилась для новичков, что называется, "с картинками", ну и что в этом плохого? Понятно, что любой, кто работал с MySQL сможет создать юзера, базу и вписать их в Amarok и без этого HOWTO.

                                  А вот чего не хватет - это инструкции по переносу базы и SQLite в MySQL. Лично мне неохота переиндексировать файлы и терять статистику, но с SQLite я не работал и не знаю, как сделать экспорт.

                                  Offtopic: у меня при проигрывании через OSS (звуковуха M-Audio Revolution 5.1) кушается ~15% процессорного времени (с помощью ossplay (несжатые файлы, разумеется), в Amarok [xine] также, хотя osstest ~2%). У всех так, или только у меня? Что этим делать? (вариант ALSA не предлагать)
                                    0
                                    Хоть 300 гигабайт, хоть 500, хоть терабайт! Произвольный доступ к файлам спасает и мир и SQLite.
                                  0
                                  Кстати говоря меня тоже именно переход на линух и Rhythmbox подвигли на медиа либрари, других вариантов в нем просто нет, но и перспектива заставить крутиться любую песню из коллекции примерно за 3-4 кнопки тоже впечатляет, я с ужасом вспоминаю и с недопониманием смотрю на друзей, которые говорят:
                                  "Да вот смотри, как все просто *Add to playlist*, нафиг мне твои библиотеки *Переход переход переход по папкам* все и так просто длается *Наконец то находит нужную песню в файлопомойке, добавляет, давит Play*" Но все быстро утихают, когда я делаю тоже самое набрав 3 первые буквы названия песни и пцыкнув Enter :)
                                    0
                                    а в какую бд пакует библиотеку mpd? в беркли?
                                      0
                                      насколько понимаю она делает лист с путями и хранит его в памяти, динамически запрашивая метаданные о треке... http://www.musicpd.org/uploads/files/mpd…
                                      +1
                                      кстати необязательно мускул юзать можно и PostgreSql - http://amarok.kde.org/wiki/Postgresql_Ho…
                                        +1
                                        В Ubuntu ставится amarok, который сразу поддерживает PostgreSQL — не нужно пересборкой заниматься, всё отлично работает и так.
                                          0
                                          В Fedora 8 тоже
                                            0
                                            Почти везде так.
                                            Просто,я в своем случае использовал MySql.
                                        0
                                        Спасибо большое!!!!
                                        Вернусь домой — настрою обязательно! ;)
                                          0
                                          винамповская и вин-медиаплеерская либари просто таки пугали своей непонятностью и несуразностью.)

                                          а вот мне после перехода на linux очень не хватает mediamonkey, может привычка конечно, но мне она гораздо симпатичней amarok'a
                                            +1
                                            А давайте вы не будете бросаться словом "тормознутая" по отношению SQLite. Не знаю, чего у вас там тормозит, но музыкальная библиотека --- как раз тот случай, когда SQLite это лучшее решение.
                                              0
                                              да и у меня на 60 гигах музыки SQLite не тормозит. У кого нибудь она вообще тормозила на современных компьютерах?
                                                0
                                                Да в том-то и дело, что компьютер у меня не современный. Что именно происходит медленно из-за SQLite совершенно не ясно. До сих пор хожу в глубокой задумчивости.
                                              0
                                              А я на замену взял PostgreSQL и доволен как слон (кто не в курсе эмблема этой БД - слон :)
                                                0
                                                Amarok - это просто чудо! Когда я перешел на Linux, то был от него просто в восторге, сразуже сделал базу в mysql (тоже нужна по долгу службы =)
                                                  0
                                                  чего мне действительно не хватает в линухе - так это фубара :(
                                                    0
                                                    сори за офтоп, но это действительно крик души (((
                                                      0
                                                      Аналогично :) А в фубаре мне не хватает поддержки хранения библиотеки в MySQL :)
                                                        0
                                                        Что говорят в ответ на письмо разработчикам?
                                                          0
                                                          "Foobar2000 разработан исключительно под платформу Windows с английским интерфейсом. У автора нет желания разрабатывать ни многоязыковую, ни многоплатформенную версии." (Вики)
                                                          0
                                                          Что есть фубар?
                                                        +1
                                                          0
                                                          что-то у меня что с default-character-set = utf8, что без оного, ерунда в базе. Нет, Amarok всё отлично показывает, но вот если попробовать полазать в базе ручками:

                                                          Ну что это за безобразие в title?! Вообще все папки/урлы в норме, а вместо кириллических тегов - крякозяблики :-/ Что я делаю не так?
                                                            0
                                                            А в тегах у вас то utf-8?
                                                              0
                                                              Да. Та же фигня у *ogg и *flac файлов, в которых теги по определению utf8. Amarok 1.4.7
                                                                0
                                                                Ну, судя по кракозябрам - это отображение utf-8 в ANSI кодировке... В общем, это либо глюк вашего "просматривателя базы", либо какие то другие интересные глюки.
                                                                Я в свое время выставил default-character-set = utf8 во всех разделах mysq.cnf (для клиента, базы и т.д.) - так чтоб на повал.
                                                                  0
                                                                  Мда, похоже это действительно косяк MySQL Query Browser. И как это я не додумался проверить? Из консольки всё ништяк:
                                                                  mysql> select dir,title from Amarok.tags where modifydate=1148247250;
                                                                  +------------------------------------------------+-------------------------------------------------+
                                                                  | dir | title |
                                                                  +------------------------------------------------+-------------------------------------------------+
                                                                  | ./Music/Кино/Лучшие песни 88-90 | Последний герой |
                                                                  | ./Music/Кино/Лучшие песни 88-90 | Следи за собой |
                                                                  | ./Music/Кино/Лучшие песни 88-90 | Песня без слов |
                                                                  | ./Music/Кино/Лучшие песни 88-90 | Когда твоя девушка больна |
                                                                  | ./Music/Кино/Лучшие песни 88-90 | Печаль |
                                                                  +------------------------------------------------+-------------------------------------------------+
                                                                  5 rows in set (0.00 sec)

                                                                  Спасибо.

                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                          Самое читаемое