#!/usr/bin/env python # # anrxc[at]hi.t-com.hr # # sinfo.py, System Information script for xchat (IRC client). # # More information about python plugin interface for xchat # can be found here . # sys to do: - DE/WM ... maybe mem and disk usage # media to do: - graphic card, resolution(+dpi?) # general to do: do we need some fancy colors? __module_name__ = "sinfo" __module_version__ = "0.1" __module_description__ = "System Information script for xchat, written by anrxc, lastfm by b4d." import xchat, commands, string, re from urllib import urlopen #Your last.fm username: user='b4d' # system info def sysinf(word, word_eol, userdata): # user@host u = commands.getoutput('whoami') h = commands.getoutput('hostname') uh = u+'@'+h # OS comm = 'uname -sr' uname = commands.getoutput(comm) # Distro try: catcomm = 'cat /etc/*sion' distro = commands.getoutput(catcomm) except: distro = 'Unknown' # Proc cpu = string.split(commands.getoutput('cat /proc/cpuinfo | grep "model name"'), ':') cpuinfo = cpu[1] # Proc speed mhz = string.split(commands.getoutput('cat /proc/cpuinfo | grep "cpu MHz"'), ':') speed = mhz[1].split('.') speed = speed[0] # uptime up = commands.getoutput("uptime") splitit = string.split(up) if splitit[3] == 'days,' or splitit[3] == 'day,': uptime = splitit[2]+' '+splitit[3]+' '+splitit[4][0:-1]+' hours' else: uptime = splitit[2][0:-1]+' hours' # DE / WM, stolen, or better to say retrived (i helped in the first place :P) # from myinfo.pl written by Zeljko Mitrovic #dewm = {'fvwm' : 'FVWM', # 'icewm': 'IceWM', # 'enlightenment' : 'Enlightenment', # 'startkde' : 'KDE', # 'wmaker' : 'WindowMaker', # 'blackbox' : 'Blackbox', # 'fluxbox' : 'Fluxbox', # 'gnome-panel' : 'GNOME', # 'xfce4-panel' : 'XFCE'} #for key, data in dewm.items(): # pgrep = commands.getoutput('pgrep %s | wc -l' % key) # client version version = xchat.get_info('version') # put it all together and send to the channel buildinfo = uh+' | OS: '+uname+', Distro: '+distro+' | CPU:'+cpuinfo+', MHz:'+speed+' | Uptime: '+uptime+' | Client: XChat-'+version # this is in no way needed, but let it be sysinfo = buildinfo xchat.command('say %s' % sysinfo) # show but don't send to the channel #xchat.prnt(sysinfo) return xchat.EAT_ALL # media info def mediainf(word, word_eol, userdata): xchat.command('say this doesnt do anything yet') #lastfm info by b4d, www.baccic.be def lastfm(word, word_eol, userdata): # open the site last = urlopen("http://ws.audioscrobbler.com/1.0/user/%s/recenttracks.rss" % user) # read and close readit = last.read() last.close() # what we are looking for played = re.compile('(.*?)', re.DOTALL) # store the data info = played.findall(readit)[:6] for song in info: try: xchat.command('say %s' % song) except UnboundLocalError: pass return xchat.EAT_ALL # amaroK now playing def amaroknp(word, word_eol, userdata): dcopreq = 'dcop amarok player' test = string.split(commands.getoutput(dcopreq)) if test[0] in ('ERROR:','call','object'): np = 'Is amaroK running?' else: track = commands.getoutput('%s nowPlaying' % dcopreq) album = commands.getoutput('%s album' % dcopreq) time = commands.getoutput('%s totalTime' % dcopreq) if track == '': np = 'Is amaroK running?' else: if album == '': np = 'aK: '+track+' - (N/A) - '+time else: np = 'aK: '+track+' - ('+album+') - '+time xchat.command('say %s' % np) return xchat.EAT_ALL # system info command xchat.hook_command("sinfo", sysinf) # media info command xchat.hook_command("smedia", mediainf) # lastfm tracks xchat.hook_command("lastfm", lastfm) # amarok info command xchat.hook_command("ak", amaroknp) print "sinfo.py loaded" # EOF