Esempio n. 1
0
    def __init__(self, debug=False):
        self.debug = debug
        self.lasts = {}
        self.create_settings()
        self.load_settings()
        self.create_socket()

        if self.debug:
            irssi.prnt("RStatus loaded. Windows:")
            irssi.prnt(pprint.pformat(self.window_all()))

        irssi.signal_add("setup changed", self.load_settings)
        irssi.signal_add("setup reread", self.load_settings)

        irssi.signal_add("window hilight", self.windowhilight)
        irssi.signal_add("message private", self.privmsg)
        irssi.signal_add("message public", self.pubmsg)

        irssi.signal_add("channel destroyed", self.channeldestroyed)
        irssi.signal_add("query destroyed", self.querydestroyed)

        irssi.command_bind("rstatus", self.status)
Esempio n. 2
0
    for i in s:
        if i in fro:
            ret.append(to[fro.index(i)])
        else:
            ret.append(i)
    return "".join(ret)


def send(msg, server, witem):
    global stripped_out

    if stripped_out:
        return
    signal = irssi.signal_get_emitted()
    if msg.startswith("/nounaccent"):
        msg = msg[len("/nounaccent") + 1 :]
    elif not msg.startswith("/dict") and not msg.startswith("/spell"):
        msg = unaccent(msg)
    stripped_out = True
    irssi.signal_stop()
    irssi.signal_emit(signal, msg, server, witem)
    stripped_out = False


def nounaccent(msg, server, witem):
    irssi.signal_emit("send command", "/ /nounaccent" + msg, server, witem)


irssi.signal_add("send command", send)
irssi.command_bind("nounaccent", nounaccent)
Esempio n. 3
0
		if len(i):
			tmp.append(i)
	argv = tmp
	del tmp

	if len(argv) > 1:
		lang = argv[0]
		word = argv[1]
	else:
		lang = "en"
		if server.tag in server_langs.keys():
			lang = server_langs[server.tag]
		if witem:
			if witem.name in channel_langs.keys():
				lang = channel_langs[witem.name]
		word = argv[0]
	if lang in aliases.keys():
		lang = aliases[lang]
	
	pout, pin = popen2.popen2('hunspell -a -d %s' % lang)
	pin.write("%s\n" % word)
	pin.close()
	ret = pout.readlines()
	pout.close()
	if ret[1].startswith("&"):
		print ret[1].split(":")[1].strip()
	else:
		print "OK"

irssi.command_bind('spell', cmd_spell)
Esempio n. 4
0
    for i in irssi.windows():
        print 'window refnum', i.refnum, 'window name', i.name
    print

    f0 = irssi.window_find_name('melbo')
    f1 = irssi.window_find_name('(status)') 
    print 'irssi.window_find_name(melbo)', f0
    print 'irssi.window_find_name(status)', f1 

def cmd_opentest(data, server, witem):
    global win0, win1
    win0 = irssi.window_create(automatic=True)
    print 'window_create(automatic=True) ->', win0
    win1 = irssi.window_create(automatic=False)
    print 'window_create(automatic=False) ->', win1

def cmd_closetest(data, server, witem):
    print 'destroy win0 && win1'
    win0.destroy()
    win1.destroy() 

def cmd_postclose(*args):
    print 'post-close access'
    print win0.items()
    print win1.items()
    
irssi.command_bind('wintest', cmd_wintest)
irssi.command_bind('closetest', cmd_closetest)
irssi.command_bind('postclose', cmd_postclose)
irssi.command_bind('opentest', cmd_opentest)
Esempio n. 5
0
def cmd_iinfo(data, server, witem):
	global idles
	labels = ('Server', 'Channel', 'Idle')
	servers = []
	for i in irssi.servers():
		for j in i.channels():
			if i.tag not in idles.keys() or j.name not in idles[i.tag].keys():
				init_idles()
			idle = how_old(idles[i.tag][j.name])
			servers.append([i.tag, j.name, idle, str(idles[i.tag][j.name])])
	servers.sort(lambda x, y: int(float(x[3])-float(y[3])))
	servers = map(lambda x: x[:-1], servers)
	print
	print indent([labels]+servers).strip()
	print

def send(server, msg, witem):
	global idles
	if not server or not witem:
		return
	if server.tag not in idles.keys():
		idles[server.tag] = {witem: time.time()}
	else:
		idles[server.tag][witem] = time.time()

init_idles()

irssi.command_bind('iinfo', cmd_iinfo)
irssi.signal_add("message own_public", send)
Esempio n. 6
0
# -*- coding: utf-8 -*-
import random

NOTES = u'♩♪♫♬'
MODIFIERS = u'♭♮♯'

def picknote():
    ret = random.choice(NOTES)
    if not random.randrange(4):
        ret = random.choice(MODIFIERS) + ret
    return ret

def notesay(s):
    return u'%s %s %s' % (picknote(), s, picknote())

def irssi_notesay(data, server, witem):
    data = data.decode('utf-8')
    witem.command('say %s' % (notesay(data).encode('utf-8'),))

if __name__ == '__main__':
    import sys
    print notesay(' '.join(sys.argv[1:]).decode('utf-8')).encode('utf-8')
else:
    import irssi
    irssi.command_bind('notesay', irssi_notesay)
Esempio n. 7
0
    print 'printing to channel'
    server.send_message('#booh', 'test msg chan', 0)
    server.send_message('#booh', 'test msg chan ER', 1)

    print 'printing to nick'
    server.send_message('melbo', 'test msg nick', 1)
    server.send_message('melbo', 'test msg nick ER', 0)
    """

    witem.prnt("hello there")
    global __last_witem
    __last_witem = witem
    global __last_server
    __last_server = server

    # new = irssi.IrssiChatBase()
    # print 'New', new.type_id


def cmd_crashme(data, server, witem):
    __last_server.prnt("#booh", "what up??")
    __last_witem.prnt("imma crash mebbe?")


print dir(_script)
print _script.module
print _script.argv

irssi.command_bind("pydumper", cmd_pydumper)
irssi.command_bind("crashme", cmd_crashme)
Esempio n. 8
0
	return(chr(string.atoi(match.group()[2:-1])))

def cmd_dict(data, server, witem):
	"""data - contains the parameters for /dict
server - the active server in window
witem - the active window item (eg. channel, query)
        or None if the window is empty"""
	argv = data.split(' ')
	tmp = []
	for i in argv:
		if len(i):
			tmp.append(i)
	argv = tmp
	del tmp

	if len(argv) > 1:
		lang = argv[0]
		word = " ".join(argv[1:])
	else:
		lang = "en"
		word = " ".join(argv)

	try:
		ret = sztakidict.helper(lang, word)
	except IOError, str:
		print "problem: %s" % str
		return
	print unicode(ret, "utf8").encode("latin2")

irssi.command_bind('dict', cmd_dict)
Esempio n. 9
0
# -*- coding: utf-8 -*-
import random

NOTES = u'♩♪♫♬'
MODIFIERS = u'♭♮♯'


def picknote():
    ret = random.choice(NOTES)
    if not random.randrange(4):
        ret = random.choice(MODIFIERS) + ret
    return ret


def notesay(s):
    return u'%s %s %s' % (picknote(), s, picknote())


def irssi_notesay(data, server, witem):
    data = data.decode('utf-8')
    witem.command('say %s' % (notesay(data).encode('utf-8'), ))


if __name__ == '__main__':
    import sys
    print notesay(' '.join(sys.argv[1:]).decode('utf-8')).encode('utf-8')
else:
    import irssi
    irssi.command_bind('notesay', irssi_notesay)
Esempio n. 10
0
    elif nick not in keys:
        return 0

    send_msg(server, nick, msg, command=command)
    irssi.signal_stop()
    return 1


def command_out(command, server, query):
    return privmsg_out(command, server, query, True)


load_keys()

irssi.get_script().theme_register([
    ('own_msg', irssi.current_theme().get_format('fe-common/core', 'own_msg')),
    ('own_action', irssi.current_theme().get_format('fe-common/irc',
                                                    'own_action')),
    ('pubmsg', irssi.current_theme().get_format('fe-common/core', 'pubmsg')),
    ('action_public', irssi.current_theme().get_format('fe-common/irc',
                                                       'action_public'))
])

irssi.command_bind('setkey', setkey)
irssi.command_bind('listkeys', listkeys)
irssi.command_bind('keyx', keyx)

irssi.signal_add('message private', privmsg_in)
irssi.signal_add('send text', privmsg_out)
irssi.signal_add('send command', command_out)
Esempio n. 11
0
import irssi
import re


def command_go(command, server, channel):

    if len ( command ) == 0:
        return

    for win in irssi.windows():
        if win.get_active_name():
            name = re.sub(r'[^a-zA-Z0-9]+', '', win.get_active_name())
            if len ( name ) > 0:
                if re.search(r'^%s' %(command), name, re.IGNORECASE ):
                    win.set_active()
                    return True

    return None

irssi.command_bind('g', command_go)

Esempio n. 12
0
	ret = []
	fro = "??????????????????"
	to = "AEIOOOUUUaeiooouuu"
	for i in s:
		if i in fro:
			ret.append(to[fro.index(i)])
		else:
			ret.append(i)
	return "".join(ret)

def send(msg, server, witem):
	global stripped_out

	if stripped_out:
		return
	signal = irssi.signal_get_emitted()
	if msg.startswith("/nounaccent"):
		msg = msg[len("/nounaccent")+1:]
	elif not msg.startswith("/dict") and not msg.startswith("/spell"):
		msg = unaccent(msg)
	stripped_out = True
	irssi.signal_stop()
	irssi.signal_emit(signal, msg, server, witem)
	stripped_out = False

def nounaccent(msg, server, witem):
	irssi.signal_emit("send command", "/ /nounaccent" + msg, server, witem)

irssi.signal_add("send command", send)
irssi.command_bind('nounaccent', nounaccent)
Esempio n. 13
0
def cmd_whois(data, server, witem):
	"""data - contains the parameters for /dict
server - the active server in window
witem - the active window item (eg. channel, query)
        or None if the window is empty"""

	argv = data.split(' ')

	# get the ip if this is a hostname
	ip = argv[0]

	try:
		socket.inet_aton(ip)
	except socket.error:
		ip = socket.gethostbyname(ip)

	sock = urllib.urlopen("http://www.completewhois.com/cgi2/whois.cgi?query=%s" % ip)
	descr = None
	country = None
	for i in sock.readlines():
		if i.startswith("descr: "):
			if not descr:
				descr = i.split(":")[1].strip()
		if i.startswith("country: "):
			if not country:
				country = i.split(":")[1].strip()
	sock.close()
	print "%s, %s" % (descr, country)

irssi.command_bind('pywhois', cmd_whois)
Esempio n. 14
0
    f0 = irssi.window_find_name("melbo")
    f1 = irssi.window_find_name("(status)")
    print "irssi.window_find_name(melbo)", f0
    print "irssi.window_find_name(status)", f1


def cmd_opentest(data, server, witem):
    global win0, win1
    win0 = irssi.window_create(automatic=True)
    print "window_create(automatic=True) ->", win0
    win1 = irssi.window_create(automatic=False)
    print "window_create(automatic=False) ->", win1


def cmd_closetest(data, server, witem):
    print "destroy win0 && win1"
    win0.destroy()
    win1.destroy()


def cmd_postclose(*args):
    print "post-close access"
    print win0.items()
    print win1.items()


irssi.command_bind("wintest", cmd_wintest)
irssi.command_bind("closetest", cmd_closetest)
irssi.command_bind("postclose", cmd_postclose)
irssi.command_bind("opentest", cmd_opentest)
Esempio n. 15
0
			chans[chan] += 1

	sorted = []
	for k, v in chans.items():
		sorted.append([k, v])

	sorted.sort(chancmp, reverse=True)

	if nick[-1] == 's':
		s = "'"
	else:
		s = "'s"

	dstr = "%s%s day: %s" % (s, datestr, " ".join(["%s [%sm]" % (i, j) for i, j in sorted]))
	if witem:
		witem.command("/me %s" % dstr)
	else:
		print "* %s %s" % (nick, dstr)

def timer():
	win = irssi.active_win()
	if win.active and win.active_server:
		sock = open(statfile, "a")
		sock.write("%s%s %s\n" % (int(time.time()), win.active_server.tag, win.active.name))
		sock.close()
	irssi.timeout_add(1000*60, timer)

timer()

irssi.command_bind('chanstat', cmd_chanstat)
Esempio n. 16
0
            add_mute_rule(commands[2])


def add_mute_rule(rule):
    with open(settings, 'a+') as f:
        f.write(rule + '\n')

    mutes = get_mute_rules()


def get_mute_rules():
    if os.path.exists(settings):
        with open(settings, 'r+') as f:
            return f.read().splitlines()

    return []


def is_valid_msg(msg):
    import re
    for mute in mutes:
        if re.search(r'%s' % (mute), msg, re.IGNORECASE):
            return False
    return True


mutes = get_mute_rules()

irssi.command_bind('aggregate', command_agregate)
irssi.signal_add('print text', print_to_aggregate)
Esempio n. 17
0
			self.row.append(text)


def cmd_cia(data, server, witem):
	"""data - contains the parameters for /dict
server - the active server in window
witem - the active window item (eg. channel, query)
        or None if the window is empty"""
	timeoutsocket.setDefaultSocketTimeout(20)
	try:
		sock = urllib.urlopen("http://cia.vc/stats/author/Miklos%20Vajna%20%3Cvmiklos%40frugalware.org%3E")
		data = sock.read()
		sock.close()
	except timeoutsocket.Timeout, s:
		print s
		return
	except IOError, s:
		print s
		return

	parser = HTMLParser()
	parser.reset()
	parser.feed(data)
	parser.close()

	for i in parser.rows:
		if "so far today" in i:
			print i

irssi.command_bind('cia', cmd_cia)
Esempio n. 18
0
# type /pyload hello

import irssi

# data - contains the parameters for /HELLO
# server - the active server in window
# witem - the active window item (eg. channel, query)
#         or None if the window is empty
def cmd_hello(data, server, witem):
    if not server or not server.connected:
        irssi.prnt("Not connected to server")

    if data:
        server.command("MSG %s Hello!" % data)
    elif isinstance(witem, irssi.Channel) or isinstance(witem, irssi.Query):
        witem.command("MSG %s Hello!" % witem.name)
    else:
        irssi.prnt("Nick not given, and no active channel/query in window")

irssi.command_bind('hello', cmd_hello)
Esempio n. 19
0
        print >> output, rowSeparator
    for physicalRows in logicalRows:
        for row in physicalRows:
            print >> output, prefix + delim.join(
                [justify(str(item), width) for (item, width) in zip(row, maxWidths)]
            ) + postfix
        if separateRows or hasHeader:
            print >> output, rowSeparator
            hasHeader = False
    return output.getvalue()


def cmd_sinfo(data, server, witem):
    labels = ("Server", "Port", "Network", "Settings", "Status", "Nick")
    online = []
    servers = []
    for i in irssi.servers():
        if i.connect.use_ssl:
            ssl = "ssl"
        else:
            ssl = ""
        servers.append([i.connect.address, str(i.connect.port), i.tag, ssl, "connected", i.nick])
        online.append(i.tag)
    for i in irssi.chatnets():
        if i.name not in online:
            servers.append(["", "", i.name, "", "disconnected", ""])
    print indent([labels] + servers).strip()


irssi.command_bind("sinfo", cmd_sinfo)
Esempio n. 20
0
import irssi, urllib
from xml.dom import minidom

"""interface to last.fm
type /py load lastfm to use it"""

__author__ = "Miklos Vajna <*****@*****.**>"
__version__ = "0.1"
__date__ = "Thu, 21 Jun 2007 04:42:58 +0200"
__copyright__ = "Copyright (c) 2007 Miklos Vajna"
__license__ = "GPL"

def rec(match):
	return(chr(string.atoi(match.group()[2:-1])))

def cmd_lastfm(data, server, witem):
	"""data - contains the parameters for /dict
server - the active server in window
witem - the active window item (eg. channel, query)
        or None if the window is empty"""
	sock = urllib.urlopen("http://ws.audioscrobbler.com/1.0/user/EDITME/recenttracks.xml")
	xmldoc = minidom.parseString(sock.read())
	artist = xmldoc.getElementsByTagName('artist')[0].firstChild.toxml().encode("latin2")
	name = xmldoc.getElementsByTagName('name')[0].firstChild.toxml().encode("latin2")
	witem.command("/action %s is now playing %s - %s" % (witem.name, artist, name))

irssi.command_bind('lastfm', cmd_lastfm)
Esempio n. 21
0
    print 'printing to channel'
    server.send_message('#booh', 'test msg chan', 0)
    server.send_message('#booh', 'test msg chan ER', 1)

    print 'printing to nick'
    server.send_message('melbo', 'test msg nick', 1)
    server.send_message('melbo', 'test msg nick ER', 0)
    """

    witem.prnt('hello there')
    global __last_witem
    __last_witem = witem
    global __last_server
    __last_server = server

    #new = irssi.IrssiChatBase()
    #print 'New', new.type_id


def cmd_crashme(data, server, witem):
    __last_server.prnt('#booh', 'what up??')
    __last_witem.prnt('imma crash mebbe?')


print dir(_script)
print _script.module
print _script.argv

irssi.command_bind('pydumper', cmd_pydumper)
irssi.command_bind('crashme', cmd_crashme)
Esempio n. 22
0
        stdout, stderr = proc.stdout.read(), proc.stderr.read()
        if os.WEXITSTATUS(status):
            irssi.prnt(stderr.rstrip())
        elif irssi.settings_get_bool('lastfm_use_action'):
            witem.command('me %s' % stdout.rstrip())
        else:
            witem.command('say %s' % stdout.rstrip())
    username = data or irssi.settings_get_str('lastfm_user')
    irssi_encoding = irssi.settings_get_str('term_charset')
    lastfm_strftime = irssi.settings_get_str('lastfm_strftime')
    lastfm_output = irssi.settings_get_str('lastfm_output')
    proc = subprocess.Popen([
            sys.executable, __file__, 
            username, irssi_encoding, lastfm_strftime, lastfm_output],
        stdin=open(os.devnull), stdout=subprocess.PIPE, stderr=subprocess.PIPE, 
        close_fds=True)
    glib.child_watch_add(proc.pid, on_result)

if __name__ == '__main__':
    lastfm_lookup()
else:
    import irssi
    irssi.settings_add_str('lastfm', 'lastfm_user', '')
    irssi.settings_add_str('lastfm', 'lastfm_output', 
        'np: %(artist)s-%(name)s')
    irssi.settings_add_str('lastfm', 'lastfm_output_tab_complete', '')
    irssi.settings_add_str('lastfm', 'lastfm_strftime', 'scrobbled at: %R %Z')
    irssi.settings_add_bool('lastfm', 'lastfm_use_action', 0)
    irssi.settings_add_bool('lastfm', 'lastfm_get_player', 0)
    irssi.command_bind('np', do_now_playing)
    'unchin-snouted', 'weather-bitten'
]  # second column...

c3 = [
    'apple-john', 'baggage', 'barnacle', 'bladder', 'boar-pig', 'bugbear',
    'bum-bailey', 'canker-blossom', 'clack-dish', 'clotpole', 'coxcomb',
    'codpiece', 'death-token', 'dewberry', 'flap-dragon', 'flax-wench',
    'flirt-gill', 'foot-licker', 'fustilarian', 'giglet', 'gudgeon', 'haggard',
    'harpy', 'hedge-pig', 'horn-beast', 'hugger-mugger', 'joithead',
    'lewdster', 'lout', 'maggot-pie', 'malt-worm', 'mammet', 'measle',
    'minnow', 'miscreant', 'moldwarp', 'mumble-news', 'nut-hook',
    'pidgeon-egg', 'pignut', 'puttock', 'pumpion', 'ratsbane', 'scut',
    'skainsmate', 'strumpet', 'varlot', 'vassal', 'whey-face', 'wagtail'
]  # third column


def cmd_insult(data, server, witem):
    if not server or not server.connected:
        irssi.prnt("Not connected to server")
    insult = "thou %s %s %s!" % (random.choice(c1), random.choice(c2),
                                 random.choice(c3))
    if data:
        server.command("MSG %s %s %s" % (witem.name, data, insult))
    elif isinstance(witem, irssi.Channel) or isinstance(witem, irssi.Query):
        witem.command("MSG %s %s" % (witem.name, insult))
    else:
        irssi.prnt("Nick not given, and no active channel/query in window")


irssi.command_bind('shakespeare', cmd_insult)
Esempio n. 24
0
    global child_pid

    rs, ws = os.pipe()
    re, we = os.pipe()

    pid = os.fork()
    if pid > 0:
        #parent
        child_pid = pid
        irssi.pidwait_add(pid)
        print 'forked off', pid
        irssi.signal_add('pidwait', sig_pidwait)

        #redirect child output
        irssi.io_add_watch(rs, read_child, sys.stdout)
        irssi.io_add_watch(re, read_child, sys.stderr)

    else:
        #child
        sys.stdout = os.fdopen(ws, 'w', 0)
        sys.stderr = os.fdopen(we, 'w', 0)

        childfunc()

        sys.stdout.close()
        sys.stderr.close()
        os._exit(5)


irssi.command_bind('forkoff', cmd_forkoff)
Esempio n. 25
0
import irssi, socket

"""hex2ip converter
type /py load hex2ip to load it
usage:
	/hex2ip aabbccdd"""

__author__ = "Miklos Vajna <*****@*****.**>"
__version__ = "0.1"
__date__ = "Thu, 21 Jun 2007 14:00:00 +0200"
__copyright__ = "Copyright (c) 2007 Miklos Vajna"
__license__ = "GPL"

def hex2ip(s):
	return ".".join(["%d"%int(n, 16) for n in (s[0:2],s[2:4],s[4:6],s[6:8])])

def cmd_hex2ip(data, server, witem):
	"""data - contains the parameters for /dict
server - the active server in window
witem - the active window item (eg. channel, query)
        or None if the window is empty"""
	argv = data.split(' ')
	try:
		host = socket.gethostbyaddr(hex2ip(argv[0]))
	except socket.error, str:
		print str[1]
		return
	print host[0]

irssi.command_bind('hex2ip', cmd_hex2ip)
Esempio n. 26
0
def cmd_forkoff(data, server, witem):
    global child_pid
   
    rs, ws = os.pipe()
    re, we = os.pipe()

    pid = os.fork()
    if pid > 0:
        #parent
        child_pid = pid
        irssi.pidwait_add(pid)
        print 'forked off',pid
        irssi.signal_add('pidwait', sig_pidwait)

        #redirect child output
        irssi.io_add_watch(rs, read_child, sys.stdout)
        irssi.io_add_watch(re, read_child, sys.stderr)

    else:
        #child
        sys.stdout = os.fdopen(ws, 'w', 0)
        sys.stderr = os.fdopen(we, 'w', 0)

        childfunc()

        sys.stdout.close()
        sys.stderr.close()
        os._exit(5)

irssi.command_bind('forkoff', cmd_forkoff)