#!/usr/bin/perl -w

use Socket;

$ENV{'PATH'} = "/usr/local/bin/:$ENV{'PATH'}";

($file, $channel, $username, $song_title, $timeout, $percent) = @ARGV;

$file =~ s{.*/}{};

$file = "/raid/mp3/$file";

$username =~ s/\@.*//g;

if ((length $song_title) > 200) {
    $song_title = substr $song_title, 0, 200;
    $song_title .= " ...";
}

open LOG, ">>/var/log/lamp-play.log";
print LOG (scalar localtime), " @ARGV\n";
close LOG;

socket( PLAY, PF_UNIX, SOCK_DGRAM, 0 ) or die;
connect( PLAY, sockaddr_un( "/tmp/lamp-play-socket" )) or die;
select PLAY; $| = 1;

socket( DISP, PF_UNIX, SOCK_DGRAM, 0 ) or die;
connect( DISP, sockaddr_un( "/tmp/lamp-display-socket" )) or die;
select DISP; $| = 1;

select STDOUT;

if ( $percent eq 'starting' ) {
    $message = pack "C", 4;
    $message .= "$username: channel $channel";
    print DISP $message;

    $percent = 0;

    open ZWRITE, "| /usr/local/bin/lampzwrite -s 'Library Access to Music Project' -d $username";
    print ZWRITE "You have checked out LAMP channel $channel.\n";
    close ZWRITE;

    open ZWRITE, "| /usr/local/bin/lampzwrite -s 'Library Access to Music Project' -d -i $channel -c lamp";
    print ZWRITE "User $username has checked out LAMP channel $channel.\n";
    close ZWRITE;

    $message = pack "CCxxVVa*Ca*Ca*", 0, $channel, $timeout, $percent,
    $file, 255, $username, 255, $song_title;
    print PLAY $message;

    sleep 8;

    $message = pack "CC", 3, $channel;
    print PLAY $message;
} else {
    if ( $percent eq 'resume' ) {
	$percent = 0;
    }

    $percent += 0;

    $message = pack "CCxxVVa*Ca*Ca*", 0, $channel, $timeout, $percent,
    $file, 255, $username, 255, $song_title;
    print PLAY $message;

    $message = pack "CC", 3, $channel;
    print PLAY $message;
}
