Skip to content

Instantly share code, notes, and snippets.

@jhsu
Created November 22, 2009 16:56
Show Gist options
  • Select an option

  • Save jhsu/240635 to your computer and use it in GitHub Desktop.

Select an option

Save jhsu/240635 to your computer and use it in GitHub Desktop.
prowl notify x irssi
# todo: grap topic changes
use strict;
use vars qw($VERSION %IRSSI);
use Irssi;
$VERSION = '0.0.3';
%IRSSI = (
authors => 'Thorsten Leemhuis',
contact => 'fedora@leemhuis.info',
name => 'fnotify',
description => 'Write a notification to a file that shows who is talking to you in which channel.',
url => 'http://www.leemhuis.info/files/fnotify/',
license => 'GNU General Public License',
changed => '$Date: 2007-01-13 12:00:00 +0100 (Sat, 13 Jan 2007) $'
);
#--------------------------------------------------------------------
# In parts based on knotify.pl 0.1.1 by Hugo Haas
# http://larve.net/people/hugo/2005/01/knotify.pl
# which is based on osd.pl 0.3.3 by Jeroen Coekaerts, Koenraad Heijlen
# http://www.irssi.org/scripts/scripts/osd.pl
#
# Other parts based on notify.pl from Luke Macken
# http://fedora.feedjack.org/user/918/
#
#--------------------------------------------------------------------
#--------------------------------------------------------------------
# Private message parsing
#--------------------------------------------------------------------
sub priv_msg {
my ($server,$msg,$nick,$address,$target) = @_;
filewrite($nick." " .$msg );
}
#--------------------------------------------------------------------
# Printing hilight's
#--------------------------------------------------------------------
sub hilight {
my ($dest, $text, $stripped) = @_;
if ($dest->{level} & MSGLEVEL_HILIGHT) {
filewrite($dest->{target}. " " .$stripped );
}
}
#--------------------------------------------------------------------
# The actual printing
#--------------------------------------------------------------------
sub filewrite {
my ($text) = @_;
# FIXME: there is probably a better way to get the irssi-dir...
open(FILE,">>$ENV{HOME}/.irssi/fnotify");
print FILE $text . "\n";
close (FILE);
}
#--------------------------------------------------------------------
# Irssi::signal_add_last / Irssi::command_bind
#--------------------------------------------------------------------
Irssi::signal_add_last("message private", "priv_msg");
Irssi::signal_add_last("print text", "hilight");
#- end
# Inspired by: http://scie.nti.st/2007/7/13/irssi-notifications-using-ruby-and-jabber
#!/usr/bin/env ruby
require 'httparty'
class Prowl
include HTTParty
base_uri 'https://prowl.weks.net/publicapi'
attr_accessor :api_key
def initialize(api_key)
@api_key = api_key
end
def notify(message)
message = message.gsub(/^\S+\s/, '')
message = message.gsub(/jshsu:\s+/, '')
self.class.post('/add', :query => {:apikey => @api_key, :application => "irc", :event => "message", :description => message})
end
end
Signal.trap(:TERM) { exit; }
@prowl = Prowl.new("YOUR_API_KEY")
while true
if s = $stdin.gets
@prowl.notify(s)
end
sleep 0.2
end
#!/usr/bin/env ruby
tail -f ~/.irssi/fnotify | ruby ~/bin/prowl_notify.rb &
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment