Ludum Dare Parse XML
script to parse recent comments on ld.
Looks at most recent blog posts via rss feed. Creates blog post of authors games.
Gets score out of 5.
create graphs of scores.
In [199]:
import requests
import xmltodict
import json
import random
import pandas
import bs4
import statistics
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
In [ ]:
In [146]:
ldreq = requests.get('http://ludumdare.com/compo/feed/')
In [381]:
ldxmd = xmltodict.parse(ldreq.text)
In [382]:
ldlen = ldxmd['rss']['channel']['item']
In [383]:
len(ldlen)
Out[383]:
In [384]:
ranld = random.randint(0, len(ldlen))
In [385]:
ldtit = ldlen[ranld]['title']
In [386]:
ldow = ldtit.lower()
In [387]:
undscr = ldow.replace(' ', '-')
In [388]:
undscr
Out[388]:
In [389]:
lddes = ldlen[ranld]['description']
In [390]:
ldcret = ldlen[ranld]['dc:creator']
In [391]:
ldcate = ldlen[ranld]['category']
In [392]:
reqnot = requests.get('http://ldstats.info/api/authors/' + ldcret)
In [393]:
notxt = reqnot.text
In [394]:
nojsn = json.loads(notxt)
In [395]:
nument = len(nojsn['entries'])
In [396]:
pernoj = nojsn['entries'][0]['percents']
In [397]:
gnamaut = list()
In [398]:
if 'overall' in pernoj.keys():
print (pernoj.keys())
In [ ]:
In [399]:
pandati = pandas.to_datetime(ldlen[ranld]['pubDate'])
In [400]:
str(pandati.date())
Out[400]:
In [401]:
str(pandati.time())
Out[401]:
In [402]:
opemeta = open('/home/wcmckee/ldare/posts/' + undscr + '.meta', 'w')
In [403]:
opemeta.write(undscr + '\n' + ldtit + '\n' + str(pandati.date()) + ' ' + str(pandati.time()) + '\n')
Out[403]:
In [404]:
for cate in ldcate:
opemeta.write(cate + ', ')
In [405]:
opemeta.close()
In [406]:
oprst = open('/home/wcmckee/ldare/posts/' + undscr + '.rst', 'w')
In [407]:
undscr
Out[407]:
In [408]:
grfxp = list()
In [409]:
print (nojsn)
In [410]:
outafiv = list()
In [448]:
dictgiv = dict()
In [453]:
for ojs in range(nument):
gnamaut.append(nojsn['entries'][ojs]['title'] + '-' + ldcret)
#print(nojsn['entries'][ojs]['link'])
#print(nojsn['entries'][ojs]['percents'])
#print(nojsn['entries'][ojs]['ranking'])
#alpcnt = (nojsn['entries'][ojs]['percents'])
#print(alpcnt.values())
#alprm = alpcnt.items()
#print(alpcnt)
#print (lnoj)
#print(pandas.read_table(lnoj))
#lnoj = (nojsn['entries'][ojs]['scores'])
totscor = (lnoj['graphics'] + lnoj['audio'] + lnoj['innovation'] + lnoj['fun']+
lnoj['mood'] + lnoj['humor'] + lnoj['theme'])
outafiv.append(lnoj['graphics'])
outafiv.append(lnoj['audio'])
outafiv.append(lnoj['theme'])
outafiv.append(lnoj['fun'])
outafiv.append(lnoj['innovation'])
outafiv.append(lnoj['mood'])
dictgiv.update({'graphics' : lnoj['graphics'], 'audio' : lnoj['audio'], 'theme' : lnoj['theme'],
'mood' : lnoj['mood'], 'humor' : lnoj['humor'], 'theme' : lnoj['theme'],
'innovation' : lnoj['innovation']})
#oprsi = open('/home/wcmckee/ldare/posts/' + (nojsn['entries'][ojs]['title'] + '-' + ldcret, 'w'))
print(totscor)
#grfxp.append(nojsn['entries'][ojs]['rankings']['graphics'])
#grfxp.append(nojsn['entries'][ojs]['rankings']['audio'])
#reqldg = requests.get(nojsn['entries'][ojs]['link'])
#reqtx = bs4.BeautifulSoup(reqldg.text)
#bstx = (reqtx.text)
#print(reqtx.findAll('img'))
#for ret in (reqtx.findAll('img')):
# print(ret)
# for re in ret:
# print(re)
# oprst.write(re)
# oprst.close()
In [457]:
for dig in dictgiv.items:
print(dig)
In [470]:
patim = pandas.TimeSeries(dictgiv)
In [473]:
scordf = pandas.DataFrame(patim)
In [ ]:
In [462]:
dicitme = dictgiv.items()
In [465]:
dicitme
Out[465]:
In [455]:
outafiv
Out[455]:
In [ ]:
In [413]:
nodecl = list()
In [414]:
for outs in set(outafiv):
print (str(outs)[0])
nodecl.append((str(outs)[0]))
In [415]:
intlis = list()
In [416]:
for nod in nodecl:
print(nod)
intlis.append(int(nod))
In [ ]:
In [417]:
for intl in intlis:
#print(intl)
print(statistics.median_low(intlis))
In [418]:
intlis
Out[418]:
In [419]:
math.pow(statistics.math.pi, )
In [420]:
statistics.mean(intlis)
In [421]:
statistics.math.pi
Out[421]:
In [422]:
statistics.median(intlis)
In [423]:
import numpy
In [424]:
import math
In [425]:
math.cos(stsgr)
Out[425]:
In [426]:
math.degrees(stsgr)
Out[426]:
In [427]:
math.radians(stsgr)
Out[427]:
In [428]:
math.sin(stsgr)
Out[428]:
In [429]:
pandas.TimeSeries(outafiv)
Out[429]:
In [430]:
pandas.DataFrame(outafiv)
Out[430]:
In [ ]:
In [431]:
grfxp
Out[431]:
In [432]:
stsgr = statistics.mean(outafiv)
In [433]:
stsgr
Out[433]:
In [434]:
stqgr = statistics.median(outafiv)
In [435]:
statistics.variance(grfxp)
In [436]:
stqgr
Out[436]:
In [437]:
statistics.stdev(grfxp)
In [438]:
grfxp
Out[438]:
In [439]:
statistics.mode(grfxp)
In [440]:
stqgr
Out[440]:
In [476]:
scordf.to_html()
Out[476]:
In [477]:
oprst.write(lddes + '\n\n' + str(totscor) + '\n\n' + scordf.to_html())
In [444]:
oprst.close()
In [ ]:
In [175]:
for gna in gnamaut:
gnrep = gna.replace(' ', '-')
gnlow = gnrep.lower()
print(gnlow)
wrmeta = open('/home/wcmckee/ldare/posts/' + gnlow + '.meta', 'w')
wrmeta.write(gnlow + '\n' + gna + '\n' + str(pandati.date()) + ' ' + str(pandati.time()) + '\n')
wrmeta.close()
#wrst = open('/home/wcmckee/ldare/posts/' + gnlow + '.rst', 'w')
#wrst.write('test')
#wrst.close()
In [ ]: