NAME
Mplayer::NowPlaying - query a running mplayer process for now playing
metadata
SYNOPSIS
use Mplayer::NowPlaying;
...
my $current = now_playing;
if(exists($current->{artist})) {
print "Current artist is $current->{artist}\n";
}
DESCRIPTION
Mplayer::NowPlaying was born because the author runs mplayer daemonized,
controlling it via named pipes. I wanted a simple way to retrieve
various 'now playing' metadata for the currently playing song.
Mplayer::NowPlaying supports two modes:
Normal
Start mplayer in normal mode and redirect STDOUT to a file:
mplayer *.mp3 > ./mplayer_log
Get the current song title:
# 'normal' argument optional; this is the default
my $now_playing = now_playing("$ENV{HOME}/mplayer.log", 'normal');
printf("Current song is %s\n", $now_playing->{title});
Mplayer produces a lot of output in normal mode, effectively making our
metadata retrieval slow very fast (10 songs played or so). Therefore
it's really recommended to use identify mode.
Identify
Start mplayer with the -identify switch:
mplayer -identify *.mp3 > mplayer_log
or the preferred
mplayer -quiet -msglevel all=0 -identify *.mp3 > mplayer_log
Get the current song title:
# note 'identify' argument
my $now_playing = now_playing("$ENV{HOME}/mplayer.log", 'identify');
printf("Current song is %s\n", $now_playing->{title});
By using -msglevel all=0 -identify the amount of output from mplayer is
reduced to a minimum, making the retrieval very fast. This is
recommended.
EXPORTS
now_playing()
Parameters: ($logfile | $filehandle), ($mode)
Returns: \%metadata
my %metadata = %{ now_playing($logfile, 'identify'); };
my $artist = $metadata{artist};
now_playing() takes two arguments (the last one optional):
* The logfile (or filehandle) output from mplayer is directed to
* 'normal' or 'identify' mode. Normal is the default.
The hash will be filled with the available metadata for the current
media. A typical result might look like:
album => "Me and Simon",
artist => "Laleh",
audio => 44100,
bitrate => 128000,
channels => 2,
chapters => 0,
codec => "mp3",
demuxer => "audio",
file => "~/Laleh-Me_and_Simon/01-big_city_love.mp3",
format => 85,
genre => 1,
id => 0,
length => "1288.00",
seekable => 1,
start => "0.00",
title => "Big city love",
year => 2009
Possible keys include:
title
artist
album
year
comment
genre
bitrate
codec
format
id
channels
chapters
audio
demuxer
length
seekable,
start
file
AUTHOR
Magnus Woldrich
CPAN ID: WOLDRICH
magnus@trapd00r.se
http://japh.se
COPYRIGHT
Copyright 2011 Magnus Woldrich <magnus@trapd00r.se>. This program is
free software; you may redistribute it and/or modify it under the same
terms as Perl itself.
SEE ALSO
mplayer(1)