Mocp & Conky и обложка к альбому
| Июнь 28th, 2010Chapter [0x01] Для затравки.
Вот к такому виду мы придем в конце этого руководства, как немного облагородить свой рабочий стол (на любителя).
Chapter [0x02] Необходимый инструментарий.
А точнее софт, для воплощения задуманного.
1) conky -
sudo apt-get install conky
2) mocp
Все очень легко и просто на этой Ubuntu ![]()
3) скрипты и конфиги (в следующей «главе»)
Chapter [0x03] Скриптинг.
Здесь приведу код необходимых скриптов, и в конце куда их положить, чтоб все работало.
Основной конфиг — это конфиг conky (обзываем его .conkyrc и сохраняем в домашней директории, так которая ~/):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | background yes use_xft yes xftfont Lucida Grande:size=9 xftalpha 0.4 update_interval 1.0 total_run_times 0 own_window yes own_window_type normal own_window_transparent yes own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager double_buffer yes minimum_size 350 10 maximum_width 350 draw_shades no draw_outline no draw_borders no draw_graph_borders no default_color white default_shade_color white default_outline_color white alignment top_left gap_x 12 gap_y 28 no_buffers yes uppercase no cpu_avg_samples 2 override_utf8_locale yes imlib_cache_size 0 TEXT ${color ff9000}Now Playing: ${color aeaeae}${texeci 1 sh ~/.scripts/songs.sh}${color ffffff} ${image ~/.scripts/.album -p 60,20 -s 100x100} $stippled_hr IP: ${execi 14400 wget -O - http://k0derz.ru/ip.php | tail} | eth0 ${addr eth0} $uptime | ${downspeed eth0} / ${upspeed eth0} | ${totaldown eth0} / ${totalup eth0} ${texeci 180 python ~/.scripts/gmail.py} email(s) home ${fs_used_perc /home}% ${fs_bar 3,75 /home} ${fs_used /home} / ${fs_size /home} root ${fs_used_perc /}% ${fs_bar 3,75 /} ${fs_used /} / ${fs_size /} swap $swapperc% $swap / $swapmax $mem / $memmax $memperc% | cpu0 ${cpu cpu0}% | cpu1 ${cpu cpu1}% $stippled_hr Highest MEM: ${color ff9000}${top_mem name 1} ${top_mem mem 1}% ${color ffffff}${top_mem name 2} ${top_mem mem 2}% ${top_mem name 3} ${top_mem mem 3}% $stippled_hr |
Копировать один к одному, с пробелами, отступами, абзацами.
Скрипт на bash’e для получения обложки альбома (album.sh, кладем его в директорию .scripts, в домашней директории, предварительно создав первую):
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash artist=`mocp -Q %artist` album=`mocp -Q %album` cover=`cat $HOME/.scripts/cover` if [ "$cover" != "$album" ]; then echo $album > ~/.scripts/cover str="`echo "$artist $album" | sed -e s/\\ /+/g`" wget `wget "http://www.albumart.org/index.php?srchkey=$str&itempage=1&newsearch=1&searchindex=Music" -q -O - | grep "http://www.albumart.org/images/zoom-icon.jpg" -m 1 | sed -e 's/" border="0" class="image_border.*//' | sed -e 's/.*img src="//'` -q -O ~/.scripts/.album fi |
Далее скрипт для получения количества сообщений на почте Gmail (gmail.py, кладем также в .scripts):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import os import string username="ваш логин" password="ваш пароль" com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate" temp=os.popen(com) msg=temp.read() index=string.find(msg,"") index2=string.find(msg,"") fc=int(msg[index+11:index2]) print str(fc)+" new" |
Скрипт songs.sh — для вывода названия группы и трека (все туда же в .scripts):
1 2 | #!/bin/bash echo $(mocp -Q %artist) - $(mocp -Q %song)" ("$(mocp -Q %album)")" | iconv -t "UTF-8" |
И последнее что осталось подправить — конфиг mocp, что при изменении трека запускался скрипт album.sh
открываем конфиг (~/.moc/config), найдем и раскомментируем строку с параметров OnSongChange, приведем ее к следующему виду:
1 | OnSongChange = "/home/YOUR_USERNAME/.scripts/album.sh" |
На этом все, основная часть сриптов была найдена на просторах и-нета.
В комментарии замечания и проблемы, если таковые будут.


Автор, поясните пожалуйста, что значит в album.sh строчка:
cover=`cat $HOME/.scripts/cover`
cover — это переменная? Куда я должен класть обложки от альбома, в какую директорию, как называть, чтобы работала предлагаемая вами схема?
И ещё не могли бы пояснить с gmail.py: как мне перезаписать данный файл для mail.ru?
спасибо.
Да, cover это переменная, в которую загоняется название альбома, для работы скрипта единственное нужно создать директория для скриптов mkdir ~/.scripts и все, больше ничего настраивать не нужно.
Насчет mail.ru там так не получиться сделать как на гугле, mail.ru насколько знаю не предоставляет xml-feed о состоянии почты, разве что через curl логиниться и потом парсить значение новых сообщений.
директорию ~/.scripts я создал как вы и описали в данной теме, и положил туда следующие скрипты:
album.sh
songs.sh
конфиг в .moc поправил, все работает кроме обложек. Существует ли правило по которому надо как-то называть картинки обложек альбомов? Обложки с альбомов я храню в одной директории с *.mp3 файлами.
такс, подправил скрипт album.sh там в 6 строке знак заменился на html код.
этот скрипт тянет обложку с и-нета при смене прослушиваемого альбома, так что картинки он не смотрит в локальных дирах, хотя такое и можно сделать при желании.
если реализуете чтоб был просмотр сразу локальных директорий и только потом в и-нете буду признателен, и допишу к статье, если поделитесь кодом.
Я поправил, спасибо. Поставил Nightwish — Stargazers (Oceanborn). На есть обложка к данному альбому Oceanborn и не одна. Картинки всё-же нет. Может не хватает какой-нибудь библиотеки?.. Идея брать обложки с локали мне сама душу греет. Если вдруг хватит моих усилий и нервов, и в результате получу положительный результат, то обязательно напишу.
Вот что выдаёт консоль:
Conky: desktop window (1600003) is subwindow of root window (153)
Conky: window type — normal
Conky: drawing to created window (0x3a00001)
Conky: drawing to double buffer
Conky: not implemented obj type 44
—2010-11-02 02:28:11—
Распознаётся k0derz.ru… xxx.xxx.xx.xx
Устанавливается соединение с k0derz.ru|xxx.xxx.xx.xx|:80… соединение установлено.
Запрос HTTP послан, ожидается ответ… 200 OK
Длина: 14 [text/html]
Сохраняется в каталог: `STDOUT’.
100%[======================================>] 14 —.-K/s в 0s
2010-11-02 02:28:12 (659 KB/s) — `-’ сохранён [14/14]
Conky: not implemented obj type 44
Conky: not implemented obj type 44
Conky: not implemented obj type 44
Conky: not implemented obj type 44
…
далее повторяется
попробуйте запустить этот скрипт в консоле (во время прослушивание трекка)
sh ~/.scripts/album.sh
Попробовал, то же самое, может у меня старая версия conky? У меня стоит Debian, там обновляются репы очень редко. В репозиториях версия 1.6.0-2. Её и ставил.
Если верить этому посту , то выхода у меня нет другого как компилить новую версию, при этом включить при компиляции imlib2…
conky -v
и посмотреть наличие Imlib2
потом нужно проверить качает ли скрипт обложку, после запуска скрипта (как показал выше) в директории ~/.scripts/
должен появиться файл с названием .album откройте его любым просмотрещиком изображений, если там есть обложка тогда проблема в либах.
Compiled in features:
System config file: /etc/conky/conky.conf
X11:
* Xdamage extension
* Xdbe extension (double buffer)
* xft
вот результат на conky -v:
Music detection:
* mpd
General features:
* math
* hddtemp
* portmon
* rss
* wireless
В ~/.scripts появился файл cover
Если его открыть через текстовый редактор, то можно увидеть название альбома проигрываемого файла.
да, в этой версии нет поддержки изображений.
файл .album он скрытый (ls -la ~/.scripts/)