Путь Unix: способ проигрывания списка MP3-файлов
|
ПрелюдияУже существует немало навороченных, с кричащим интерфейсом, MP3-проигрывателей для Linux, но ни один из них даже отдаленно не приближается к Истинно Юниксоидному Образу [True Unix Touch-n-Feel]. Все они попались на удочку убогой идеи Гуевого Пользовательского Интерфейса [Gooey User Interface -- игра слов, gooey означает липкий (в контексте завалявшейся в кармане старой конфеты), слащавый, сентиментальный. прим. перев.] и я отказываюсь даже перечислять в этой статье их имена. Ведь статья посвящена Единственно Правлиьному в Unix Способу [The One True Unix Way of doing things]. В конце концов, удовольствие, получаемое от прослушивания, обычно НЕ ПОДРАЗУМЕВАЕТ участие зрения, так почему же не дать глазам роздых, выкинув эти графические примочки и полностью сконцентрировавшись на прекрасной музыке? Все мы, естественно, убежденные сторонники Linux. (О, я слышу, как вы спрашиваете, почему я говорю Linux, а не Unix? М-м, приятно иметь дело с внимательными читателями -- гы-гы). Но это не означает, что мы менее дружелюбны к новичкам, чем члены любого другого около-компьютерного сообщества. Ни в коем разе! Поэтому я начну с того, что объясню тем из вас, кто еще не прошел Посвящения, в чем, собственно, состоит Единственно Верный UNIX-Способ Сделать Что-либо. Стоп, стоп, стоп! Я услышал, как некоторые из вас пытаются промямлить гадкий, самоуверенный, отравленный философией бред душевнобольного:). О-кей, дадим этим новичкам пинка, а я уж дам вам вкусить от истины из этой статьи. Совет новичкам: просто притовритесь, что вы уже не новичок. Инструментарий наслаждения Первым делом бросим взгляд на консольные MP3-проигрыватели. Затем
я расскажу про некоторые гибкие способы управления списками проигрываемых
MP3-файлов и продемонстрирую "нарезку" из коротких шелл-скриптов
и маленькую программку на C, которые помогут нам добиться желаемого.
Очень полезная утилита Конслольные MP3-Коммандеры
Рынок предлагает много консольных MP3-проигрывателей. Блин, я хотел
сказать -- Интернет. Но я хочу представить лишь своего любимца:
Ключ Далее, нам понадобится консольный же редактор тэгов ID3. Тэг ID3
-- это запихнутая в MP3-файл информация, что-либо сообщающая о содержащейся
в нем музыке: название, имя испольнителя и т.д. Редактор тэгов, на
который мы положим свой взгляд назвается zw@q ~/mp3/chopin % mp3info chopin:revolutionary_etude:robin_alciatore.mp3 File: chopin:revolutionary_etude:robin_alciatore.mp3 Title: CHOPIN: "REVOLUTIONARY" ETUDE Track: Artist: CHOPIN PIANO FAVORITES Album: Year: Comment: http://www.mp3.com/chopinpiano Genre: Blues [0] zw@q ~/mp3/chopin % Признаю, что дисплей выглядит неброско, а представленная информация неудовлетворительна. Например, о классическом фортепианном произведении хотелось бы узнать поболее того, что втистнуто в бедный ID3 тэг. Читетели приглашаются вносить собственные улучшения. Подготовка к использованию Скриптов Шелла: Строкотасователь [Line Randomizer]
Часто хочется проигрывать песни в случайном порядке. Для этого нам нужна утилита,
выбирающая строки в случайном порядке, которая находится здесь: rand.c.
Она читает строки (имена файлов) из zw@q ~/mp3/chopin % ls chopin:nocturne_in_c_minor:robin_alciatore.mp3 chopin:nocturne_in_db_major:elena_kuschnerova.mp3 chopin:nocturne_in_e_major:joerg_demus.mp3 chopin:nocturne_in_f#_major:john_bell_young.mp3 chopin:nocturne_in_g_minor:robin_alciatore.mp3 zw@q ~/mp3/chopin % ls|rand chopin:nocturne_in_g_minor:robin_alciatore.mp3 chopin:nocturne_in_e_major:joerg_demus.mp3 chopin:nocturne_in_db_major:elena_kuschnerova.mp3 chopin:nocturne_in_f#_major:john_bell_young.mp3 chopin:nocturne_in_c_minor:robin_alciatore.mp3 zw@q ~/mp3/chopin % Подготовка к использованию Скриптов Шелла: Переименование MP3-файла После скачивания MP3-файлов из Интернета, многие файлы содержат
в именах пробелы, а в скриптах имена файлов с пробелами -- это просто
вилы. Мы, конечно, можем смошенничать при помощи "волшебной" переменной
окружения zw@q ~/mp3/u2 % ls u2 all that you can't leave behind new york.mp3 u2 all that you can't leave behind peace on earth.mp3 u2 all that you can't leave behind stuck in a moment you can't get over.mp3 zw@q ~/mp3/u2 % rename 's/^(u2) /$1:/; s/(behind) /$1:/; s/ /_/g' *.mp3 zw@q ~/mp3/u2 % ls u2:all_that_you_can't_leave_behind:new_york.mp3 u2:all_that_you_can't_leave_behind:peace_on_earth.mp3 u2:all_that_you_can't_leave_behind:stuck_in_a_moment_you_can't_get_over.mp3 zw@q ~/mp3/u2 % Ну что, теперь захотелось выучить Perl? Использование для эмуляции "плейлиста" жестких/символических ссылок Если вам случалось открывать playlist MP3 (файл с расширением В ходе нашей подготовки, мы просто создадим новую директорию-playlist
командой zw@q ~/mp3 % ls chopin classical-all debussy fav nightly u2 zw@q ~/mp3 % find chopin chopin chopin/chopin:nocturne_in_db_major:robin_alciatore.mp3 chopin/chopin:berceuse:robin_alciatore.mp3 chopin/chopin:nocturne_in_db_major:elena_kuschnerova.mp3 chopin/chopin:nocturne_in_c_minor:robin_alciatore.mp3 zw@q ~/mp3 % find nightly nightly nightly/chopin:nocturne_in_db_major:robin_alciatore.mp3 nightly/chopin:berceuse:robin_alciatore.mp3 nightly/ravel:gaspard_de_la_nuit:elena_kuschnerova.mp3 nightly/chopin:nocturne_in_db_major:elena_kuschnerova.mp3 nightly/chopin:nocturne_in_c_minor:robin_alciatore.mp3 На концерт!
Теперь, когда подготовка закончена, привожу фрагмент моего PLAYLISTS=$HOME/mp3 # Первый аргумент - список для проигрывания # Второй аргумент - громкость воспроизведения play() { # Установка ALSA-драйвера звуковой карты. if [[ -z ` lsmod | grep snd-card-cmipci ` ]]; then sudo modprobe snd-card-cmipci; fi # Проигрываем список. while true; do for i in ` find $PLAYLISTS/$1 -name '*.mp3' | rand `; do j=` basename $i | sed -e 's/:/: /g; s/_/ /g; s/,/, /g; s/.mp3$//;' `; echo -n "Проигрываем $j "; alsaplayer-text -l $2 -q -n "$i" >/dev/null 2>&1; echo "ГОТОВО."; done done }
В приведенном фрагменте, мы сначала проверяем, что ALSA-драйвер звуковой
карты уже установлен. Если нет, то устанавливаем его вызовом
Этот скрипт проигрывает в случайном порядке все внесенные в список песни, в чем можно
убедиться из приведенного ниже вывода. Пока играется песня можно даже "перескочить"
к следующей песне нажав zw@q ~ % play chopin 75 Playing chopin: nocturne in e major: joerg demus DONE. Playing chopin: nocturne in db major: robin alciatore DONE. Playing chopin: nocturne for violin and piano: alexander skwortsow, violin DONE. Для достижения удовлетворения результатом, вы можете легко написать собственные скрипты, если, конечно, подключите воображение. Открывайте этот Сезам! Теперь ваша очередь, дорогой читатель! Спасибо, что проследовали со мной по Одному Из Путей Unix! Пока! Удачи и не вешайте носа! Жаовай [Zhaoway]Жаовай живет в Наньдзине, в Китае. Свое время он делит между прелестной подружкой, стареьнким "пнем" и чистой математикой. (Он занимается "высшематематическим самообразованием", так что если у вас завалялось несколько лишних, но драгоценных марок и/или книг по высшей математике, то не стесняйтесь послать ему копию). Еще он на добровольной основе участвует в проекте Debian GNU/Linux. Copyright (С) 2001, Zhaoway.
|
Вернуться на главную страницу |