The Perl Advent Calendar needs more articles for 2022. Submit your idea today!

NAME

Winamp::Control - control winamp (over the network)

SYNOPSIS

        use Winamp::Control;

        use IO::Extended qw(printfln);

                my $winamp = Winamp::Control->new( host => $opts{host}, port => $opts{port} );

                if( my $ver = $winamp->getversion )
                {
                        printfln 'Connected to Winamp (Ver: %s)', $ver;

                        printfln 'Currently playing: %s ', $winamp->getcurrenttitle() if $winamp->isplaying();

                        println "Current playlist:\n\t", join "\n\t", $winamp->getplaylisttitle();
                }

DESCRIPTION

Winamp::Control is a perl module for controlling Winamp (www.winamp.com) over a network or local. It requires the httpQ winamp-plugin written by Kosta Arvanitis (see prerequisites) installed on the computer playing the music (It is called "server" and will receive the commands). Perl clients doesn't need it, because the clients are communicating via http (and they are not restricted to any operating-system).

METHODS (modified after the httpQ documentation)

Constructor parameters (new)

host (default: 127.0.0.1)

The host address where the httpQ plugin and Winamp is running.

port (default: 4800)

The httpQ plugin port.

passwd (default: none)

A plain text password to httpQ (required if set via the httpQ preferences).

[Note] The parameters have also instance methods counterparts. So you may call them after construction like:

 $winamp->host( $host );
 $winamp->port( $port );
 $winamp->passwd( $passwd );

prev, play, pause, stop, next

  action: Like clicking on it.
  argument: none.
  return: 1 on success, 0 otherwise.

  example: $winamp-><command>

getversion

  action: Get the current version of your winamp player.
  argument: none.
  return: Version of winamp, or 0 on error.

  example: $winamp->getversion

delete

  action: Clears the contents of the play list.
  argument: none.
  return: 1 on success, 0 otherwise.

  example: $winamp->delete

isplaying

  action: Get the playing status of winamp player.
  argument: none.
  return: 1 = playing, 0 = not playing, 3 = paused

  example: $winamp->isplaying

getoutputtime

  action: Returns the position in milliseconds of the current song, or the song length, in seconds.
  argument: 0 Position (in ms) of current song, 1 Length (in sec) of current song
  return: -1 if not playing, 0 on error.

  example: $winamp->getoutputtime( a => 1 );

jumptotime (requires Winamp 1.60+)

  action: Sets the position in milliseconds of the current song (approximately) to 'argument'.
  argument: Position in milliseconds to jump to.
  return: 1 on success,0 otherwise

  example: $winamp->jumptotime( a => 1000 ); #jump to 1 second

setplaylistpos (requires Winamp 2.0+)

  action: Sets the playlsit position to 'argument'.
  argument: Position to set play list to.
  return: 1 on success,0 otherwise

  example: $winamp->setplaylistpos( a => 1 ); #set play list to position 1

getlistlength (requires Winamp 2.0+)

  action: get the length of the current playlist, in tracks.
  argument: none.
  return: The current track number or 0 on error.

  example: $winamp->getlistlength

getplaylisttitle (requires Winamp 2.04+)

  action: returns the title of the playlist entry at index 'argument'.
  note: if no argument is specified, returns a list of all the titles in the playlist seperated by '<br>'.
  argument: index in the list from which to retrieve title.
  note: the list is zero indexed so track 1 is 0.
  return: Title of track or 0 on error.

  example:

        $winamp->getplaylisttitle( a => 1 ); #get title at list index 1

        or

        $winamp->getplaylisttitle; #get a list of titles

getplaylistfile (requires Winamp 2.04+)

  action: Returns the file name of the playlist entry at index 'argument'.
  note: If no argument is specified, returns a list of all the file names in the playlist seperated by '<br>'.
  argument: Index in the list from which to retrieve title.
  note: The list is zero indexed so track 1 is 0.
  return: Filename of track or 0 on error.

  example:

        $winamp->getplaylistfile( a => 1 ); #get file name at list index 1

        or

        $winamp->getplaylistfile; #get a list of file names

getlistpos (requires Winamp 2.05+)

  action: Gets the current index of the play list.
  note: The list is zero indexed so track 1 is 0.
  argument: none.
  return: List position or 0 on error.

  example: $winamp->getlistpos;

chdir

  action: Change the working direcotry to argument.
  argument: The path to the new current working directory.
  return: 1 on success, 0 otherwise.

  example: $winamp->chdir( a => 'c:\mp3' );

playfile

  action: Appends a file to the playlist.The file must be in the current working directory or
          pass in the directory with the filename as the argument.
  argument: The file name to append to the playlist.
  return: 1 on success, 0 otherwise.

  example:

        $winamp->playfile( a => 'music.mp3' );

        $winamp->playfile( a => 'c:\mp3\music.mp3' );

getinfo (requires Winamp 2.05+)

  action: Gets info about the current playing song. The value it returns depends on the value of 'argument'.
  argument: 0 Samplerate (i.e. 44100), 1 Bitrate (i.e. 128), 2 Channels (i.e. 2)

  return: Info or 0 on error.

  example: $winamp->getinfo( a => 0 );

fadeoutandstop

  action: Fades out current song and stops playing.
  argument: none.
  return: 0 on error, 1 otherwise

  example: $winamp->fadeoutandstop;

shuffle

  action: Toggle shuffle on and off.
  argument: 0 Turn shuffle off, 1 Turn shuffle on
  return: 1 if shuffle is on, 0 otherwise

  example: $winamp->shuffle( a => 0 );

shuffle_status

  action: Gets the status of shuffle button.
  argument: none.
  return: 1 if shuffle is on, 0 otherwise.

  example: $winamp->shuffle_status;

repeat

  action: Toggle repeat on and off.
  argument: 0 Turn shuffle off, 1 Turn shuffle on
  return: 1 if repeat is on, 0 otherwise.

  example: $winamp->repeat( a => 0 );

repeat_status

  action: Gets the status of the repeat button.
  argument: none.
  return: 1 if repeat is on, 0 otherwise

  example: $winamp->repeat_status;

volumeup

  action: Turns up the volume.
  argument: none.
  return: 1 on success, 0 otherwise

  example: $winamp->volumeup;

volumedown

  action: Turns down the volume.
  argument: none.
  return: 1 on success, 0 otherwise

  example: $winamp->volumedown;

setvolume

  action: Set the volume level.
  argument: 0-255 The volume level.
  return: 1 on success, 0 otherwise

  example: $winamp->setvolume( a => 100 );

geteqdata

  action: Gets the eq data.
  argument:
                0-9 10 bands of EQ data
                10 Preamp value
                11 Equalizer enabled
                12 Equalizer autoload
  return:
                0-9 0-63 (+20db - -20db)
                10 0-63 (+20db - -20db)
                11 Zero if disabled, nonzero if enabled.
                12 Zero if disabled, nonzero if enabled.

  example: $winamp->geteqdata( a => 8 );

seteqdata

  action: Sets the eq data at 'x' to 'y'.
  note: the argument format is ( a => 'x,y' )
                x is the band.
                y is the value.

  argument: 0-9,0-63 10 bands of EQ data (0-63)
                10,0-63 Preamp value (0-63)
                11,0-1 Equalizer enabled (0-1)
                12,0-1 Equalizer autoload (0-1)

  return: 1 on success,0 otherwise

  example: $winamp->seteqdata( a => '8,10' );

getid3tag

  action: Gets the ID3 tag info of a file.
  argument: none Gets info for current playing file, or <n> gets the info for the file indexed at 'n'.
  return: 0 on error, otherwise returns contents of ID3 tag formated:

        SongName<br>Artist<br>Album<br>Year<br>Genre<br>Comment

  example: $winamp->getid3tag( a => 3 );

getid3tag_album, getid3tag_artist, getid3tag_comment, getid3tag_genre, getid3tag_songname, getid3tag_year

  action: Gets a specific portion of the ID3 tag info from a file.
  argument: none Gets info for current playing file or <n> gets the info for the file indexed at 'n'.
  return: 0 on error, otherwise returns contents of specific portion of ID3 tag.

  example: $winamp->getid3tag_year( a => 3 );

validate_password

  action: Check a given string against the real password.
  argument: a string representing the password.
  return: 0 if incorrect, 1 otherwise.

  example: $winamp->validate_password( a=> 'password' );

flushplaylist

  action: Flushes the playlist cache buffer.
  argument: none.
  return: 0 on error,1 otherwise.

  example: $winamp->flushplaylist;

getcurrenttitle

  action: Returns the title of the current song from the winamp window name. Used when the playlist title is not enough.
  argument: none.
  return: 0 on error, song title otherwise.

  example: $winamp->getcurrenttitle;

updatecurrenttitle

  action: Updates the information about the current title.
  argument: none.
  return: 0 on error, 1 otherwise

  example: $winamp->updatecurrenttitle;

internet

  action: Checks for an internet connection.
  argument: none.
  return: 1 if internect connection exists,     0 otherwise

  example: $winamp->internet;

restart

  action: Restarts winamp.
  note: If the httpQ service is not set to start automatically httpQ will be shut down.
  argument: none.
  return: 0 on error, 1 otherwise.

  example: $winamp->restart;

getautoservice

  action: Returns the status of how the httpQ service starts.
  argument: none.
  return: 1 if the service is set to start automatically, 0 otherwise.

  example: $winamp->getautoservice;

setautoservice

  action: Sets the flag which controls if the httpQ service will start automatically or not.
  argument: 1 Sets the service to start automatically, 0 Sets the service to not start automatically.
  return: 1 if the service is set to start automatically, 0 otherwise.

  example: $winamp->setautoservice( a => 1 );

shoutcast_connect

  action: Attempts to start the shoutcast server.
  argument: none.
  return: 1 if successful, 0 otherwise.

  example: $winamp->shoutcast_connect;

shoutcast_status

  action: Attempts to retrieve status from shoutcast server.
  argument: none.
  return: status of shoutcast server if successful,     0 otherwise.

  example: $winamp->shoutcast_status;

EXPORT

None by default.

PREREQUISITES

You will need the winamp-plugin "httpQ" (Written by Kosta Arvanitis) on the machine playing the music via winamp. You may find it via searching at the winamp headquarter:

        http://www.winamp.com

Or directly from the author:

        http://www.kostaa.com/winamp/

AUTHOR

Murat Ünalan, muenalan@cpan.org

COPYRIGHT

Copyright (c) 2002 Murat Uenalan. All rights reserved. Note: This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

perl(1).

1 POD Error

The following errors were encountered while parsing the POD:

Around line 497:

Non-ASCII character seen before =encoding in 'Ünalan,'. Assuming CP1252