Видео смотреть бесплатно

Смотреть узбекский видео

Официальный сайт goldsoftware 24/7/365

Смотреть видео бесплатно

31.01.2010 02:57

booleyСмена песни в mpd

Давным-давно на WeLinux уже был пост про OSD в MPD за авторством muhas. И хотя OSD для MPD мне не нужен, очень понравилась первая часть скрипта.

Она понадобилась для music_logger, дабы оповещать сервер о смене песни. Скрипт был всем хорош, но срабатывал также в таких случаях, когда я останавливал воспроизведение (mpc stop), что давало, ввиду специфики music_logger (сохранение проигранных названий композиции), неудобоваримый результат (запись в логе, вместо %artist% - %track%: -

Не обрадовавшись этим фактом, я решил погуглить другие решения.
Если кратко, был нужен %script%, запускающий %my_script%, когда начинала играть новая песня в mpd. mpd.wikia.com предложила скрипт для уведомлений Growl. Я поначалу обрадовался, но выяснилось, что скрипт написан косячно и не удовлетворяет текущую версию Audio::MPD.
Поэтому я его доработал, получился скрипт на Perl, который делает то, что нужно :)

Вариант для music_logger'a (то, что мне нужно, собственно). Процедура song_change осталась от первоначального скрипта для Growl.
 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
#!/usr/bin/perl
use Audio::MPD;

# Configure mpd location here
my $host = "localhost";
my $port = 6600;
my $server = "http://farrias.tomsk.ru/ml";
my $verifycode = "ftr";

# Initialize an MPD connection:
my $mpd = new Audio::MPD($host, $port, "", $REUSE);

sub song_change
{
my ($artist, $title, $time) = @_;
# Post a test notification
# print("Scrobbling: $title\n");
`wget "$server/log.php?$verifycode&$artist&$title&$time" -O /dev/null 2>> /dev/null`
}

# Get the current song
my $current_song = $mpd->current->title;

while(1)
{
if($current_song ne $mpd->current->title) {
# Set it to the current title
$current_song = $mpd->current->title;

# Display current song
# print "Song change: ".$current_song."\n";
song_change(my @arr=($mpd->current->artist,$mpd->current->title,$mpd->current->time));
}

# Sleep for 2 seconds. This puts us a maximum of 2 seconds
# behind the times, but eats less cpu than a shorter sleep.
sleep 2;
}



"Ванильный вариант". Сюда можно подставить и notify, и вывод в файл (можно XMMP Tune реализовать)
 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
#!/usr/bin/perl
use Audio::MPD;

# Configure mpd location here
my $host = "localhost";
my $port = 6600;

# Initialize an MPD connection:
my $mpd = new Audio::MPD($host, $port, "", $REUSE);

# Get the current song
my $current_song = $mpd->current->title;

while(1)
{
if($current_song ne $mpd->current->title) {
# Set it to the current title
$current_song = $mpd->current->title;

# Display current song

print $current_song; #Replace for actual command
}

# Sleep for 2 seconds. This puts us a maximum of 2 seconds
# behind the times, but eats less cpu than a shorter sleep.
sleep 2;
}



Изначальный скрипт на mpd.wikia.com.


Тэги: mpd perl скрипт
+ 3 -
Похожие Поделиться

burgua 31.01.2010 11:21 #
+ 0 -
Навеяло.

Когда-то написал такой виджет

http://picasaweb.google.com/aleksey.lashin/Burgua#5387303658834678482
muhas 31.01.2010 12:08 #
+ 0 -
Во велосипед мог бы в моем скрипе поменять в функции пишущей в файл mpc |head -1 чтобы он только песня выдирал (вроде хватит добавить|grep -volume) и запускал бы любую функцию при смене трека если файл не пустой :)
Но перл тоже ничего ибо не требует mpc ( хотя требует перловый модуль, а чего уж по требует я не знаю)
booley 31.01.2010 13:48 #
+ 0 -
Muhas, во-первых, да, скрипт не требует mpc. Во-вторых, Audio::MPD предоставляет удобный объектно-ориентированный интерфейс, можно выдирать не только %artist% - %track%. Про mpc --format знаю.
В-третих, я не отрицаю того, что это велосипед :)
Как и весь music_logger, скрипт является "практикой" решения мною поставленной задачи опять же мною, в целях набраться опыта. Считаю, что для таких целей полезно построить пару-другую велосипедов.
muhas 31.01.2010 14:32 #
+ 0 -
Ну если опыта, то велосипеды оправданы
Почему многие мой ник пишут с заглавной буквы? Это же ник а не имя, а в нике строчная :)
booley 01.02.2010 01:46 #
+ 0 -
Первое слово в предложении пишется с заглавной буквы. Как и имена собственные (имя не в смысле Вася Пупкин, Москва - тоже имя собственное).
Но если предпочитаешь, чтобы писал с маленькой, буду писать с маленькой :)
muhas 01.02.2010 11:04 #
+ 0 -
скорее предпочитаю чем нет. такой у мну таракан =)
booley 01.02.2010 12:07 #
+ 0 -
В псто исправил, в камментах - ну извиняй :) теперь знать буду.

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн