LXF169: Командная строка Beets
Olkol (обсуждение | вклад) (Новая страница: «Категория: Учебники '''Менеджер медиа-библиотек: Организуйте свою фонотек…») |
Olkol (обсуждение | вклад) (→Beets: Рулите своей музыкой) |
||
Строка 3: | Строка 3: | ||
== Beets: Рулите своей музыкой == | == Beets: Рулите своей музыкой == | ||
''Технари-меломаны ликуют. Фанат командной строки Шашанк Шарма открыл менеджер файлов мультимедиа для командной строки.'' | ''Технари-меломаны ликуют. Фанат командной строки Шашанк Шарма открыл менеджер файлов мультимедиа для командной строки.'' | ||
− | [[Файл: |100px|left|thumb|'''Наш эксперт''' Шашанк Шарма более четырех лет пишет о свободном ПО для различных изданий включая Linux.com. Он соавтор книги «Fedora для начинающих». ]] | + | [[Файл: LXF119.tut adv.shashank fmt.png|100px|left|thumb|'''Наш эксперт''' Шашанк Шарма более четырех лет пишет о свободном ПО для различных изданий включая Linux.com. Он соавтор книги «Fedora для начинающих». ]] |
Недавние тектонические сдвиги в популярных рабочих столах привели к тому, что многие люди меняют пристрастия, рабочие среды и операционные системы. А командная строка не спеша пыхтит себе в полной уверенности, что будет только привлекать новых пользователей, но никогда не потеряет старых. Причина – отчасти в огромном количестве мощных утилит, которые она предоставляет. | Недавние тектонические сдвиги в популярных рабочих столах привели к тому, что многие люди меняют пристрастия, рабочие среды и операционные системы. А командная строка не спеша пыхтит себе в полной уверенности, что будет только привлекать новых пользователей, но никогда не потеряет старых. Причина – отчасти в огромном количестве мощных утилит, которые она предоставляет. | ||
Версия 07:20, 13 ноября 2018
|
|
|
Менеджер медиа-библиотек: Организуйте свою фонотеку из командной строки
Beets: Рулите своей музыкой
Технари-меломаны ликуют. Фанат командной строки Шашанк Шарма открыл менеджер файлов мультимедиа для командной строки.
Недавние тектонические сдвиги в популярных рабочих столах привели к тому, что многие люди меняют пристрастия, рабочие среды и операционные системы. А командная строка не спеша пыхтит себе в полной уверенности, что будет только привлекать новых пользователей, но никогда не потеряет старых. Причина – отчасти в огромном количестве мощных утилит, которые она предоставляет.
Здесь мы обсудим Beets, менеджер медиа-библиотеки, умеющий исправлять метаданные песен, загружать обложки, тексты, чинить имена файлов и др. В отличие от других аналогов из командной строки, Beets немного неуклюж – по крайней мере, в названии. Все потому, что он отвергает традиционное для командной строки совпадение имени приложения с именем команды. Чтобы воспользоваться Beets, вы запускаете не beets, а beet! Установить Beets можно из менеджера пакетов дистрибутива, но версия скорее всего будет старой. Проект активно разрабатывается, и лучше загрузить самую последнюю версию.
Независимо от вашего дистрибутива, последнюю версию Beets удобнее всего установить с pip – это система управления пакетами, используемая для установки пакетов Python и управления ими. Это не альтернатива yum и другим подобным утилитам. Если pip еще не установлен в вашей системе, установите пакет python-pip из программных репозиториев. Команда
sudo apt-get install python-pip
или
su -c ‘yum install python-pip’
сделает это, а также установит зависимости, такие как python-setuptools и python-dev. Затем установите Beets командой
pip install beets
Pip загрузит и установит все необходимые зависимости. В дальнейшем можно обновить Beets в любой момент, командой
pip install -U beets
Параметр -U велит pip обновить установленный пакет. Если вы устанавливали пакет из менеджера пакетов дистрибутива, не пытайтесь обновить его с pip. Если вы это сделаете, то у вас будет два отдельных экземпляра одного и того же пакета. То же относится к удалению пакета. Если вы устанавливали пакет с pip, удаляйте его командой
pip uninstall packagename
Самая обширная задача при работе с Beets – создание его файла настройки, которого по умолчанию не существует. Его придется создать вручную. Но пусть это вас не беспокоит. Понадобится минута или две, во всяком случае, для начала. Откройте свой любимый текстовый редактор и введите
[beets]
directory: ~/Music
library: ~/beetsmusic.blb
Сохраните файл под именем .beetsconfig в своем домашнем каталоге. Это минимально необходимое содержимое файла ~/.beetsconfig. Файл библиотеки уже есть в домашнем каталоге пользователя, но при желании его можно передислоцировать в другое местоположение.
В зависимости от настройки Beets, параметр directory выше служит одной из двух целей. Это либо каталог, в котором хранятся ваши музыкальные файлы, либо пустой каталог, куда вы собираетесь переместить свои файлы после того, как их проиндексирует Beets.
Если вы намерены только импортировать файлы в библиотеку Beets, сохранив текущие структуру каталогов и расположение файлов, укажите в параметре directory каталог со своими музыкальными файлами и выполните команду
beet import ~/Music
Она проиндексирует все музыкальные файлы из указанного каталога. В порядке альтернативы предположим, что ваши музыкальные файлы хранятся в каталоге ~/Desktop/songs/, а вы хотите импортировать и переместить их в каталог ~/Music. Тогда прежде всего сделайте так, чтобы параметр directory в файле ~/.beetsconfig указывал на пустой каталог. Также нужно добавить в конец файла четвертую строку:
import_move: yes
Она гарантирует, что при запуске команды
beet import ~/Desktop/songs
музыкальные файлы из каталога songs будут проиндексированы и перемещены в каталог ~/Music. Если не указывать
import_move: yes
Beets скопирует все проиндексированные файлы в пустой каталог music. Если вы не хотите и копировать файлы, добавьте в файл ~/.beetsconfig строку
import_copy: no
Параметры настройки
Полный список параметров слишком обширен, чтобы приводить его полностью, но мы обсудим несколько важных параметров по ходу статьи. В документации проекта есть информация о многих параметрах, и мы настоятельно советуем сначала прочесть ее.
Пусть обилие параметров вас не пугает: начиная пользоваться Beets, всех их указывать не нужно. Настройки по умолчанию удовлетворяют большинство пользователей, поэтому поместить три вышеупомянутые строки в ~/.beetsconfig будет достаточно для старта в Beets.
Мы коснулись импорта файлов лишь наскоро, но это самый важный аспект менеджера медиа-библиотеки, поэтому займемся им поподробнее.
При импортировании файлов в библиотеку Beets попытается найти информацию о файлах в Интернете и получить всевозможные метаданные этих файлов.
Затем он попытается добавить метаданные в файлы. В зависимости от количества добавляемых в библиотеку файлов, это потребует некоторого времени. Команда
beet import /path/to/music/files
выполняет несколько функций. Она добавит файлы в библиотеку, скопирует файлы в каталог, указанный в ~/.beetsconfig, и попытается загрузить и добавить в файлы метаданные и другие тэги. Если у вас большая коллекция музыки, и вы не хотите добавлять в них тэги при импорте в библиотеку, укажите параметр -A, чтобы Beets не добавлял тэги автоматически:
beet import -A /path/to/music/files
Возможность автодобавления тэгов может прославить или опозорить Beets в будущих релизах. Пока ею лучше не пользоваться, если у вас на диске сотни треков. В нашем тесте импортирование восьми песен с включенным автоматическим добавлением тэгов заняло несколько минут. Более того, эта возможность работает только с альбомами. То есть, если вся ваша музыка лежит в одном большом каталоге, Beets, возможно, не сделает многого для каждого из этих файлов. Однако если вы приложили некоторые усилия и разместили треки в разных каталогах, Beets сочтет каждый каталог альбомом и попробует найти метаданные для треков. Если вы хотите только загрузить метаданные, не применяя их к файлам, нужно воспользоваться ключом -W. Команда
beet import -W /path/to/files
велит Beets загрузить метаданные и сохранить их в базе данных без записи в музыкальные файлы. Вместо использования параметра -W можно добавить параметр
import_write: yes
или
import_write: no
в файл ~/.beetsconfig. Еще одна важная возможность при импорте файлов – возобновление, resume. Она активируется, если Beets обнаружит прерванный import. Импорт может быть прерван пользователем или в случае ошибки. Beets фиксирует все прерванные импорты и при обнаружении незавершенного импорта спрашивает у вас, что нужно сделать. Если вы хотите, чтобы все прерванные импорты всегда восстанавливались в исходное состояние, можно добавить строку
import_resume: yes
в файл ~/.beetsconfig или, если вам лень, воспользоваться параметром -p. Команда
beet import -p /path/to/files
восстановит все прерванные импорты, если это возможно. Строка
import_resume
в ~/.beetsconfig принимает три возможных значения: yes [да], no [нет] и ask [спросить]. Есть множество других похожих параметров, применяемых при импорте файлов в Beets. Полный список и краткое описание всех параметров можно получить командой
beet ? Import
Работа с автоматическим тэггером
Если файлов у вас немного или файлы тщательно отсортированы по различным каталогам, вы должны попробовать автоматический тэггер Beets в действии.
Сделать так, чтобы у всех файлов были осмысленные имена, нельзя, и вполне естественно, если в имя файла закрадется спецсимвол или у песни нет точного названия. Если это касается и ваших музыкальных файлов, автотэггер не только загрузит метаданные для файлов, но и попытается переименовать файлы, заодно очистив их имена от лишних символов.
Для получения всей информации о файлах Beets подключается к базе данных MusicBrainz. Затем для каждого файла в альбоме Beets попросит подтвердить, что найденная информация верна. Он выведет список всех треков, найденных в Интернете, с вероятностью соответствия каждого в процентах.
Если все файлы распределены по каталогам, у автотэггера Beets не возникнет с ними проблем, даже если они глубоко упрятаны в каталоги вроде songs/hiphop/male/2000s/fanboy-artist-hero/. Beets также распознает альбомы на нескольких дисках и помечает их вместе как один релиз. Для этого он ищет ключевые слова, такие как ‘part’, ‘vol.’, ‘volume’, ‘CD’ и ‘disc’.
Для каждого найденного варианта Beets отображает процент соответствия. Соответствие в 100 % – точное, и в этом случае Beets при необходимости переименует файл автоматически. Если процент соответствия не слишком высок или соответствие имени файла не полное, а частичное, Beets попросит вас подтвердить изменения.
linuxlala@playground ~ $ beet import Music/Infinite_Livez/Cracks\ in\ the\ Great\ Lens/
/home/linuxlala/Music/Infinite_Livez/Cracks in the Great Lens
Finding tags for album “Infinite Livez - Cracks in the Great Lens”.
Candidates:
1. INFINITE - INFINITIZE [Woollim Entertainment, 2012] (36.5%)
2. INFINITE - OVER THE TOP [Woollim Entertainment, 2011] (35.1%) (partial match!)
3. Infinite Livez vs. Stade - Morgan Freeman’s Psychedelic [Big Dada, 2008] (33.2%) (partial match!)
4. Annie Lennox - Pavement Cracks (The Remixes) [BMG UK & Ireland, 2003] (29.8%)
5. Infinite Livez - Bush Meat [2004] (27.9%) (partial match!)
- selection (default 1), Skip, Use as-is, as Tracks, Enter search, enter Id, aBort?
В данном случае Beets не смог найти точного исполнителя/альбом и предоставил список частичных соответствий. Можно либо пропустить импорт этого альбома, нажав S, либо нажать U, чтобы импортировать треки как они есть, с текущими метаданными. Если файлы не являются частью альбома, нажмите T. Затем Beets попытается найти для них соответствие среди синглов, а не альбомов. Также можно сообщить Beets исполнителя и название альбома, по которым он сможет найти информацию в базе данных в Интернете. Если ни один из этих вариантов вас не удовлетворяет, нажмите B, чтобы не импортировать этот альбом в вашу упорядоченную библиотеку.
Иногда Beets не слишком уверен в найденных вариантах и предлагает поискать другие:
linuxlala@playground ~ $ beet import Music/The\ Strangers/
/home/linuxlala/Music/The Strangers
Здесь тэги
The Strangers - Live On WFMU’s Minor Music with Jesse
Krakow, 11-19-12
были изменены на
Strangers - Shine On You
(Similarity: 47.1%)
- A Little Too Fast (3) -> Shine On You (1)
- Missing track: Shine On You (Draper remix) (2)
[A]pply, More candidates, Skip, Use as-is, as Tracks, Enter search, enter Id, aBort?
При нажатии M Beets выведет список других возможных совпадений. Затем можно выбрать трек из списка, если найден верный вариант, или импортировать треки как есть. Если совпадения не найдено, можно нажать A для применения изменений, и Beets переименует файлы.
Запросы к библиотеке
Невозможно, да и незачем помнить все треки/альбомы, которые вы индексировали в библиотеке Beets: к библиотеке в любой момент можно легко сделать запрос командой list. Например, команда
beet ls desire
выведет все песни со словом ‘desire’ в имени файла. Beets будет искать слово ‘desire’ в метаданных всех файлов и отобразит результаты, в которых это слово есть в любых метаданных, в названии, исполнителе, названии альбома и т. д.
Если указать несколько слов, Beets автоматически объединит их логическим «и» и выведет только те результаты, в которых есть все указанные слова в любом порядке. То есть, одно из слов может быть в имени исполнителя, другое – в названии альбома, и т. д. Все слова могут быть в разных полях. Если результатов слишком много, уточните запрос, задав поле поиска. Например, команда
beet ls artist:pink
покажет все результаты, в которых имя исполнителя соответствует ‘pink’. Точно так же можно задавать параметры альбомов параметром -a с командой
beet ls
Список всех альбомов заданного жанра выведет команда
beet ls -a genre:rap
В одном запросе можно объединять несколько полей, чтобы сузить рамки поиска.
В поисковых запросах можно использовать и несколько полей, например, year [год], genre [жанр], month [месяц] и country [страна]. Команда
beet fields
выведет полный список полей трека и альбома, которые можно использовать в запросах. Аналогичная структура запроса есть у команды remove, так что можно писать сложные запросы для удаления записей из библиотеки Beets. Например, если вы хотите удалить из библиотеки файлы со словом ‘infin’, скомандуйте
beet remove infin
Затем Beets попросит вас подтвердить, что вы хотите удалить все показанные файлы, которые соответствуют запросу. Чтобы удалить файлы и из библиотеки, и с диска, добавьте к команде remove параметр -d. Команда
beet remove -ad infi
удалит из библиотеки и с диска все альбомы (параметр -a), в которых есть слово ‘infi’.
Модули расширения Beets
Основное назначение Beets – помочь вам упорядочить музыкальные файлы. Он не пытается делать что-то еще. Тем не менее, как у любой приличной программы, у Beets существует добавочный список модулей-плагинов, расширяющих его функциональность.
Нет ничего плохого, если программа для управления музыкальным каталогом заодно проигрывала бы музыку, даже не имея всех возможностей полноценного музыкального плейера, и разработчики Beets, похоже, с этим согласны. Beets поставляется вместе с BPD, а это, как можно догадаться по названию, клон популярного музыкального проигрывателя командной строки MPD. В нем нет всей функциональности MPD, и вам не обязательно проигрывать музыку в BPD или упорядочивать музыкальные файлы с Beets. Сама документация проекта указывает на CMUS, один из самых простых и мощных музыкальных проигрывателей в командной строке, которые только можно найти.
На самом деле, нам не удалось заставить BPD работать с Beets ни на одном из тестовых компьютеров с разными дистрибутивами! Сам процесс настройки BPD состоит из нескольких этапов, поэтому лучше пользоваться CMUS или любым клиентом MPD.
По умолчанию в Beets есть несколько модулей расширения, но сначала их нужно активировать. Для активации модуля зайдите в файл ~/.beetsconfig и добавьте строку
plugins =
В этой строке задается разделенный пробелами список модулей, которые нужно активировать. Скажем, если вы хотите активировать модули BPD, Info и Random, строка будет выглядеть так:
plugins = bpd rdm info
После активации модуля в строке
plugins =
в файле ~/.beetsconfig вам станет доступна его справка, которую можно получить командой
beet ? pluginname
Так, для получения справки про модуль random скомандуйте
beet ? Random