Just wanted to separate the below post a bit and I pulled this bot script out to do so. It simply grabs the RSS feed from the given list of URLs and posts any changes to a given channel.
rbot.py
import os
import re
import select
import urllib
import sys
import time
import lbot
def fechwebs():
readdata = ""
urlnlist = ["www.reddit.com/.rss", "rss.slashdot.org/Slashdot/slashdot"]
resllist = []
xmlshead = ""
xmlslink = ""
for urlnitem in urlnlist:
uobjdata = urllib.urlopen("http://" + urlnitem)
readdata += uobjdata.read()
readdata = readdata.replace("\r", "")
readdata = readdata.replace("\n", "")
readdata = readdata.replace("<", "\n<")
datalist = readdata.split("\n")
for dataitem in datalist:
regxobjc = re.match("<title>(.*)", dataitem)
if (regxobjc):
xmlshead = ("[" + regxobjc.group(1) + "]")
regxobjc = re.match("<link>(.*)", dataitem)
if (regxobjc):
xmlslink = regxobjc.group(1)
if ((xmlshead != "") and (xmlslink != "")):
resllist.append(xmlshead + " " + xmlslink)
xmlshead = ""
xmlslink = ""
if (len(resllist) == 0):
return -1
return resllist
def ircbmain():
if (len(sys.argv) < 4):
print("Usage: %s <nick> - <chan 0> ... <chan n>" % (sys.argv[0]))
sys.exit(0)
nickname = ""
chanlist = []
x = 1
l = len(sys.argv)
f = 0
while (x < l):
if (sys.argv[x] == "-"):
f += 1
elif (f == 0):
nickname = sys.argv[x]
elif (f == 1):
chanlist.append(sys.argv[x])
x += 1
webstime = 0
webswait = (5 * 60)
pastdata = -1
presdata = -1
lbot.ircbinit(nickname, chanlist)
while (1):
prestime = time.time()
difftime = (prestime - webstime)
if (difftime > webswait):
print(lbot.formtime() + " WEB [INFO] Checking site(s)...")
presdata = fechwebs()
if (type(pastdata) == type(-1)):
pastdata = presdata
webstime = prestime
ircdstri = lbot.ircbmain(pastdata, presdata)
if (type(ircdstri) == type(-1)):
break
if (type(presdata) != type(-1)):
pastdata = presdata
ircbmain()
derp. where do u specify the irc server?
“import lbot” – so the bot script isn’t actually here? It’s just an extension?