summaryrefslogtreecommitdiffstats
path: root/scripts/cddb.pl
diff options
context:
space:
mode:
authorAlexander Færøy2014-05-31 13:10:46 +0200
committerAlexander Færøy2014-05-31 13:10:46 +0200
commit2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch)
tree1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/cddb.pl
parent2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff)
downloadscripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/cddb.pl')
-rw-r--r--scripts/cddb.pl122
1 files changed, 122 insertions, 0 deletions
diff --git a/scripts/cddb.pl b/scripts/cddb.pl
new file mode 100644
index 0000000..6322313
--- /dev/null
+++ b/scripts/cddb.pl
@@ -0,0 +1,122 @@
+
+#############
+# ZaMz0n 28-Oct-2003
+# ZaMz0n 10-Dec-2003
+#############
+
+use strict;
+use Irssi;
+use LWP::Simple;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = '1.21';
+%IRSSI = (
+ authors => 'ZaMz0n',
+ contact => 'zamzon@freakpower.com',
+ name => 'cddb',
+ description => 'Find CDs by Artist, Disc name or Track name in CDDB.',
+ license => 'Free',
+ url => 'http://www.gracenote.com/music/',
+ changed => 'Wed Oct 29 01:27:00 CET 2003',
+ commands => 'cddb'
+);
+
+# MAIN FUNCTION STARTS HERE
+sub cddb_query {
+
+# Set SEARCH variables
+ my $howto = "\cbUsage:\cb !cddb [<query>] [-d <disc title>] [-a <artist name>] [-t <track name>]";
+ my $searches = shift;
+ my ($search, $out, $line, $info, $htmlpage, @url, @content) = '';
+ my @output = ();
+
+# DISPLAY USAGE
+ $searches =~ s/^\s*$//;
+ $searches = $searches." ";
+ if ($searches eq " ") {
+ push (@output, $howto);
+ push (@output, "--");
+ return @output;
+ }
+
+# CONVERT PARAMETERS
+ $search = $searches;
+ $search =~ s/-d\ /&qdisc=/;
+ $search =~ s/-a\ /&qartist=/;
+ $search =~ s/-t\ /&qtrack=/;
+ $search =~ s/\ &/&/g;
+ $search =~ s/\ /+/g;
+
+# START SEARCHING
+ push (@output, "Searching CDDB with \cb$searches");
+ my $initial_url = "http://www.gracenote.com/music/search-adv.html?n=1&x=0&y=0&q=".$search;
+
+ @url = `curl -s "$initial_url" | grep -i xm | cut -f4 -d'"'| grep -i htm`;
+
+ if (!@url) {push(@output, "No match found.");}
+ else {
+ $url[0] =~ s/\/xm/http:\/\/www.gracenote.com\/xm/;
+ $url[0] =~ s/html/html\n/;
+ $url[0] =~ s/\x0a//g;
+ push (@output, "in CDDB: $url[0]");
+
+ $htmlpage = get $url[0];
+ @content = split /\x0d/, $htmlpage;
+
+ $out = 0;
+ foreach $line (@content) {
+ if ($line =~ s/Disc\ Info//) {$out = 1; $info='';}
+ if ($out) {
+ if ($line =~ s/Track\ Title//) {$out = 0; $line = '';}
+ if ($line ne '') {$info .= $line;}
+ }
+ }
+
+# FORMAT OUTPUT
+ $info =~ s/\x0a/\ /g;
+ $info =~ s/\.html/\.html/;
+ $info =~ s/<[^>]*>/\ /gs;
+ $info =~ s/\ \ \ \ //g;
+ $info = ": ".$info;
+ push (@output, $info);
+ }
+push (@output, "--");
+return @output;
+}
+
+sub results_write {
+ my ($server,$target,@lines) = @_;
+ my $i = 0;
+ for($i=0;$i<$#lines;$i++) {
+ $server->command("MSG $target $lines[$i]");
+ }
+}
+
+sub message_public {
+ my ($server,$msg,$nick,$address,$target) = @_;
+ if (($msg =~ /^\!cddb\s+(.+)$/) || ($msg =~ /^\!cddb/)) {
+ my @lines = cddb_query($1);
+ results_write($server,$target,@lines);
+ }
+}
+
+sub message_own_public {
+ my ($server,$msg,$target) = @_;
+ message_public($server,$msg,$server->{nick},0,$target);
+}
+
+sub message_private {
+ my ($server,$msg,$nick,$address) = @_;
+ message_public($server,$msg,$nick,$address,$nick);
+}
+
+sub message_own_private {
+ my ($server,$msg,$target,$otarget) = @_;
+ message_public($server,$msg,$server->{nick},0,$target);
+}
+
+
+Irssi::signal_add_first('message own_public','message_own_public');
+Irssi::signal_add_first('message private','message_private');
+Irssi::signal_add_first('message own_private','message_own_private');
+Irssi::signal_add_first('message public','message_public');