#!/usr/bin/env python # Write data from stdin to an IRC channel. import irclib, os, sys, select, time, getopt def die(s): print s sys.exit(1) def usage(rc): print "Usage: ircsend [-h] [-p PORT] SERVER NICK CHANNEL" sys.exit(rc) def main(args): try: opts, args = getopt.getopt(args, "p:h") except getopt.GetoptError: usage() sys.exit(1) port = 6667 try: for (o, a) in opts: if o == "-h": usage(0) elif o == "-p": port = int(a) except ValueError: usage(1) if len(args) != 3: usage(1) read_fds = [sys.stdin] timeout = 0 def add_callback(fd): read_fds.append(fd) def remove_callback(fd): read_fds.remove(fd) def timeout_callback(t): timeout = time.time() + t irc = irclib.IRC(add_callback, remove_callback, timeout_callback) server = irc.server() server.connect(args[0], 6667, args[1]) server.join(args[2]) while True: if timeout == 0: t = None else: t = timeout - time.time() (rfds, wfds, efds) = select.select(read_fds, [], [], t) irc.process_data(rfds) if sys.stdin in rfds: l = sys.stdin.readline() if l == "": break server.privmsg(args[2], l.strip()) if rfds == []: irc.process_timeout() timeout = 0 server.quit() if __name__ == "__main__": main(sys.argv[1:])