User:SportsStatsBot/footycode
Appearance
(Redirected from User:DatBot/footycode)
import urllib2, urllib
from wikitools import *
import sportsbot
import re
import os
import json
import time
site = wiki.Wiki()
site.login(sportsbot.username, sportsbot.password)
configpage = page.Page(site, "User:SportsStatsBot/footyconfig")
configorig = configpage.getWikiText()
config = json.loads(configorig)
def main():
for league in config['run']:
if league == "dryrun":
continue
if (config['run'][league]) or (config['run']['dryrun'][league]):
try:
leagueregex = config['leagues'][league]['regex']
except:
continue
else:
continue
shortteams = config['leagues'][league]['short']
urlopen = urllib2.urlopen(config['leagues'][league]['url'])
new_length = str(len(urlopen.read()))
txtfiledir = os.path.dirname(os.path.abspath(__file__))+"\\"+league+".txt"
if not os.path.isfile(txtfiledir):
f = open(txtfiledir, "w")
f.write(new_length)
f.close()
old_length = 0
else:
f = open(txtfiledir, "r")
old_length = f.read()
f.close()
if old_length != new_length:
f = open(txtfiledir, "w")
f.write(new_length)
f.close()
else:
continue
openurl = urllib.urlopen(config['leagues'][league]['url']).read()
tasks = ['name', 'played', 'won', 'drawn', 'lost', 'for', 'against', 'gd', 'pts']
num2 = 0
num = 1
num3 = 0
for team in config['leagues'][league]['short']:
num3 += 1
for team in config['leagues'][league]['short']:
while num != 10:
everything = re.findall(leagueregex[tasks[num2]], openurl)[:num3]
everything = [x for x in everything if x != '']
if num == 1:
name = everything
elif num == 2:
played = everything
elif num == 3:
won = everything
elif num == 4:
drawn = everything
elif num == 5:
lost = everything
elif num == 6:
forg = everything
elif num == 7:
against = everything
elif num == 8:
gd = everything
elif num == 9:
pts = everything
num += 1
num2 += 1
num = 0
if config['run']['dryrun'][league]:
drypage = page.Page(site, "User:SportsStatsBot/dryrun/"+league)
newtext = drypage.getWikiText()
else:
template = page.Page(site, config['leagues'][league]['template'])
newtext = template.getWikiText()
newtext = newtext.decode('utf8')
oldtext = newtext
for team, short in shortteams.iteritems():
shortname = shortteams[name[num].decode('utf8')]
newtext = re.sub("team"+str(num+1)+"=\w{3}", "team"+str(num+1)+"="+shortname, newtext, 1)
newtext = re.sub("win_"+shortname+"=\d*", "win_"+shortname+"="+won[num], newtext, 1)
newtext = re.sub("draw_"+shortname+"=\d*", "draw_"+shortname+"="+drawn[num], newtext, 1)
newtext = re.sub("loss_"+shortname+"=\d*", "loss_"+shortname+"="+lost[num], newtext, 1)
newtext = re.sub("gf_"+shortname+"=\d*", "gf_"+shortname+"="+forg[num], newtext, 1)
newtext = re.sub("ga_"+shortname+"=\d*", "ga_"+shortname+"="+against[num], newtext, 1)
num += 1
if newtext == oldtext:
continue
newtext = re.sub("update=.*$", "update={{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}", newtext, flags=re.MULTILINE)
if config['run']['dryrun'][league]:
newtext = re.sub("\[\[Category:[^\]]*]]", "", newtext)
drypage = page.Page(site, "User:SportsStatsBot/dryrun/"+league)
drypage.edit(text=newtext.encode('utf8'), summary="Bot dry run: Updating football league template ([[User:SportsStatsBot/footyconfig|disable]])")
continue
template.edit(text=newtext.encode('utf8'), summary="Bot: Updating football league template ([[User:SportsStatsBot/footyconfig|disable]])")
if __name__ == "__main__":
main()
# Run speed debugging
#start_time = time.time()
#main()
#print("--- %s seconds ---" % (time.time() - start_time))