1# Display current ogg123 track to channel
2# you should run ogg123 as,
3# ogg123 --verbose file1 file2 2> ~/.irssi/scripts/ogg123.log
4# or just put this on a file
5
6#   #--- ogg123a file ---#
7#   #!/bin/sh
8#   ogg123 --verbose * 2> ~/.irssi/scripts/ogg123.log
9
10# save it as ogg123a and make it executable
11# chmod a+x ogg123a
12#
13# execute it on the directory you have your .ogg files
14# ./ogg123a
15
16
17#
18# HOWTO use "ogg123 script" from Irssi:
19# /ogg123 [#channel] [-h|--help]
20#
21# bugs: if u call it from the "status" window, it ill crash the script, since you arent currently on a channel.
22# It ill crash the script not the Irssi program, so u shall re-run it.
23#
24# **** note ****
25# Yeah i now that this is a copy of mpg123.pl script ;D
26# to be true it was just a question of doing %s/mpg/ogg/gi and small changes on the regexp,
27# but its workable, the mpg123 author doenst complain, so who really cares?!  =:)
28# isnt what all ppl is doing since recent events moving all... mv *.mp3 *.ogg
29
30use Irssi;
31use Irssi::Irc;
32use strict;
33use vars qw($VERSION %IRSSI);
34
35$VERSION = "0.01+1";
36%IRSSI = (
37    authors     => 'Ricardo Mesquita',
38    contact	=> 'ricardomesquita@netcabo.pt',
39    name        => 'ogg123',
40    description => 'Display current ogg123 track',
41    url		=> 'http://pwp.netcabo.pt/ricardomesquita/irssi',
42    license     => 'GPLv2',
43    changed	=> 'Mon Nov 27 18:00:00 CET 2006'
44);
45
46my $ogg123file = glob "~/.irssi/scripts/ogg123.log";
47
48
49sub cmd_ogg123 {
50	my ($data, $server, $witem) = @_;
51	my ($ogg123msg, $ogg123linha, $channel);
52
53	my $showhelp="ogg123 irssi script version $VERSION\n/ogg123 [#channel] [-h|--help]";
54
55	if ($data=~/-h|--help/) {
56		Irssi::print($showhelp);
57		return
58	} else {
59		if ($data=~ /#./) {
60			$channel = $data;
61		} else {
62			if ($witem->{name} ne "") {
63				$channel = $witem->{name};
64			}
65		}
66
67		open (f,'<', $ogg123file) || return;
68
69		while ($ogg123linha=<f>) {
70
71			chomp($ogg123linha);
72			if ($ogg123linha=~/Playing:/i) {
73				$ogg123linha =~s/(.*)Playing:\s(.*)/\2/;
74				$ogg123msg="on ogg123 playing $ogg123linha";
75			}
76
77			chomp($ogg123linha);
78			if ($ogg123linha =~/Title:/i) {
79				$ogg123linha =~s/(.*)Title:\s(.*)/\2/;
80				$ogg123msg="on ogg123 playing $ogg123linha";
81			}
82
83			chomp($ogg123linha);
84			if ($ogg123linha =~/Artist:/i) {
85				$ogg123linha =~s/(.*)Artist:\s(.*)/\2/;
86				$ogg123msg.=" - $ogg123linha";
87			}
88		}
89		close(f);
90		$ogg123msg =~ s/[\r\n]/ /g;
91		$server->command("action ".  $channel . " $ogg123msg");
92	}
93}
94
95Irssi::command_bind('ogg123', 'cmd_ogg123');
96