Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import mechanize
- import cookielib
- from bs4 import BeautifulSoup as BS
- import datetime
- import sys
- from operator import itemgetter
- br = mechanize.Browser()
- cj = cookielib.LWPCookieJar()
- br.set_cookiejar(cj)
- br.set_handle_robots(False)
- br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:24.0) Gecko/20140610 Firefox/24.0 PaleMoon/24.6.2')]
- def techlevels(alliance):
- advanced = persian = almost = vietnam = korean = second = first = finest = stone = 0
- for i in alliance:
- if i['equipment'].rstrip() == 'Advanced':
- advanced += 1
- elif i['equipment'].rstrip() == 'Persian Gulf War surplus':
- persian += 1
- elif i['equipment'].rstrip() == 'Almost Modern':
- almost += 1
- elif i['equipment'].rstrip() == 'Vietnam War surplus':
- vietnam += 1
- elif i['equipment'].rstrip() == 'Korean War surplus':
- korean += 1
- elif i['equipment'].rstrip() == 'Second World War surplus':
- second += 1
- elif i['equipment'].rstrip() == 'First World War surplus':
- first += 1
- elif i['equipment'].rstrip() == 'Finest of the 19th century':
- finest += 1
- else:
- stone += 1
- return advanced, persian, almost, vietnam, korean, second, first, finest, stone
- def airforcelevels(alliance):
- vpowerful = powerful = large = somelarge = mediocre = meagre = small = none = 0
- for i in alliance:
- if i['airforce'].rstrip() == 'Very Powerful':
- vpowerful += 1
- elif i['airforce'].rstrip() == 'Powerful':
- powerful += 1
- elif i['airforce'].rstrip() == 'Large':
- large += 1
- elif i['airforce'].rstrip() == 'Somewhat Large':
- somelarge += 1
- elif i['airforce'].rstrip() == 'Mediocre':
- mediocre += 1
- elif i['airforce'].rstrip() == 'Meagre':
- meagre += 1
- elif i['airforce'].rstrip() == 'Small':
- small += 1
- else:
- none += 1
- return vpowerful, powerful, large, somelarge, mediocre, meagre, small, none
- def traininglevels(alliance):
- elite = good = standard = poor = rabble = 0
- for i in alliance:
- if i['training'].rstrip() == 'Elite':
- elite += 1
- elif i['training'].rstrip() == 'Good':
- good += 1
- elif i['training'].rstrip() == 'Standard':
- standard += 1
- elif i['training'].rstrip() == 'Poor':
- poor += 1
- else:
- rabble += 1
- return elite, good, standard, poor, rabble
- def regionlevels(alliance):
- mam = car = gra = ama = sco = saf = con = eaf = gui = waf = atl = egy = ara = mpo = per = sub = chi = ind = ein = pac = 0
- for i in alliance:
- if i['region'].rstrip() == 'Mesoamerica':
- mam += 1
- elif i['region'].rstrip() == 'Caribbean':
- car += 1
- elif i['region'].rstrip() == 'Gran Colombia':
- gra += 1
- elif i['region'].rstrip() == 'Amazonia':
- ama += 1
- elif i['region'].rstrip() == 'Southern Cone':
- sco += 1
- elif i['region'].rstrip() == 'Southern Africa':
- saf += 1
- elif i['region'].rstrip() == 'Congo':
- con += 1
- elif i['region'].rstrip() == 'East Africa':
- eaf += 1
- elif i['region'].rstrip() == 'Guinea':
- gui += 1
- elif i['region'].rstrip() == 'West Africa':
- waf += 1
- elif i['region'].rstrip() == 'Atlas':
- atl += 1
- elif i['region'].rstrip() == 'Egypt':
- egy += 1
- elif i['region'].rstrip() == 'Arabia':
- ara += 1
- elif i['region'].rstrip() == 'Mesopotamia':
- mpo += 1
- elif i['region'].rstrip() == 'Persia':
- per += 1
- elif i['region'].rstrip() == 'The Subcontinent':
- sub += 1
- elif i['region'].rstrip() == 'China':
- chi += 1
- elif i['region'].rstrip() == 'Indochina':
- ind += 1
- elif i['region'].rstrip() == 'East Indies':
- ein += 1
- elif i['region'].rstrip() == 'Pacific Rim':
- pac += 1
- return mam, car, gra, ama, sco, saf, con, eaf, gui, waf, atl, egy, ara, mpo, per, sub, chi, ind, ein, pac
- def manpowerlevels(alliance):
- untapped = plentiful = halved = low = neardep = depleted = 0
- for i in alliance:
- if i['manpower'].rstrip() == 'Untapped':
- untapped += 1
- elif i['manpower'].rstrip() == 'Plentiful':
- plentiful += 1
- elif i['manpower'].rstrip() == 'Halved':
- halved += 1
- elif i['manpower'].rstrip() == 'Low':
- low += 1
- elif i['manpower'].rstrip() == 'Near Depletion':
- neardep += 1
- elif i['manpower'].rstrip() == 'Depleted':
- depleted += 1
- return untapped, plentiful, halved, low, neardep, depleted
- def approvallevels(alliance):
- waag = adored = loved = liked = decent = middling = disliked = hated = despised = eop = 0
- for i in alliance:
- if i['approval'].rstrip() == 'Worshiped as a God':
- waag += 1
- elif i['approval'].rstrip() == 'Adored':
- adored += 1
- elif i['approval'].rstrip() == 'Loved':
- loved += 1
- elif i['approval'].rstrip() == 'Liked':
- liked += 1
- elif i['approval'].rstrip() == 'Decent':
- decent += 1
- elif i['approval'].rstrip() == 'Middling':
- middling += 1
- elif i['approval'].rstrip() == 'Disliked':
- disliked += 1
- elif i['approval'].rstrip() == 'Hated':
- hated += 1
- elif i['approval'].rstrip() == 'Utterly Despised':
- despised += 1
- elif i['approval'].rstrip() == 'Enemy of the People':
- eop += 1
- return waag, adored, loved, liked, decent, middling, disliked, hated, despised, eop
- def polsystemlevels(alliance):
- libdem = authdem = opr = junta = dictat = 0
- for i in alliance:
- if i['polsystem'].rstrip() == 'Liberal Democracy':
- libdem += 1
- elif i['polsystem'].rstrip() == 'Authoritarian Democracy':
- authdem += 1
- elif i['polsystem'].rstrip() == 'One Party Rule':
- opr += 1
- elif i['polsystem'].rstrip() == 'Military Junta':
- junta += 1
- elif i['polsystem'].rstrip() == 'Dictatorship':
- dictat += 1
- return libdem, authdem, opr, junta, dictat
- def stabilitylevels(alliance):
- unsink = entrenched = vstable = quiet = calm = tensions = chaotic = rioting = protests = collapse = 0
- for i in alliance:
- if i['stability'].rstrip() == 'Unsinkable':
- unsink += 1
- elif i['stability'].rstrip() == 'Entrenched':
- entrenched += 1
- elif i['stability'].rstrip() == 'Very Stable':
- vstable += 1
- elif i['stability'].rstrip() == 'Quiet':
- quiet += 1
- elif i['stability'].rstrip() == 'Seemingly Calm':
- calm += 1
- elif i['stability'].rstrip() == 'Growing Tensions':
- tensions += 1
- elif i['stability'].rstrip() == 'Chaotic':
- chaotic += 1
- elif i['stability'].rstrip() == 'Rioting':
- rioting += 1
- elif i['stability'].rstrip() == 'Mass Protests':
- protests += 1
- elif i['stability'].rstrip() == 'Brink of Collapse':
- collapse += 1
- return unsink, entrenched, vstable, quiet, calm, tensions, chaotic, rioting, protests, collapse
- def rebelslevels(alliance):
- norebels = terror = guerrilla = rebellion = civil = 0
- for i in alliance:
- if i['rebels'].rstrip() == 'None':
- norebels += 1
- elif i['rebels'].rstrip() == 'Scattered terrorists':
- terror += 1
- elif i['rebels'].rstrip() == 'Guerrillas':
- guerrilla += 1
- elif i['rebels'].rstrip() == 'Open Rebellion':
- rebellion += 1
- elif i['rebels'].rstrip() == 'Civil War':
- civil += 1
- return norebels, terror, guerrilla, rebellion, civil
- def econsystemlevels(alliance):
- free = mixed = command = 0
- for i in alliance:
- if i['econsystem'].rstrip() == 'Free Market':
- free += 1
- elif i['econsystem'].rstrip() == 'Mixed Economy':
- mixed += 1
- elif i['econsystem'].rstrip() == 'Central Planning':
- command += 1
- return free, mixed, command
- def qollevels(alliance):
- developed = good = decent = above = average = poor = impov = desp = disast = crisis = 0
- for i in alliance:
- if i['qol'].rstrip() == 'Developed':
- developed += 1
- elif i['qol'].rstrip() == 'Good':
- good += 1
- elif i['qol'].rstrip() == 'Decent':
- decent += 1
- elif i['qol'].rstrip() == 'Above Average':
- above += 1
- elif i['qol'].rstrip() == 'Average':
- average += 1
- elif i['qol'].rstrip() == 'Poor':
- poor += 1
- elif i['qol'].rstrip() == 'Impoverished':
- impov += 1
- elif i['qol'].rstrip() == 'Desperate':
- desp += 1
- elif i['qol'].rstrip() == 'Disastrous':
- disast += 1
- else:
- crisis += 1
- return developed, good, decent, above, average, poor, impov, desp, disast, crisis
- def alignlevels(alliance):
- west = non = east = 0
- for i in alliance:
- if i['alignment'].rstrip() == 'United States':
- west += 1
- elif i['alignment'].rstrip() == 'Neutral':
- non += 1
- elif i['alignment'].rstrip() == 'Soviet Union':
- east += 1
- return west, non, east
- def replevels(alliance):
- gandhi = angelic = nice = good = normal = quest = isolated = pariah = maddog = aoe = 0
- for i in alliance:
- if i['reputation'].rstrip() == 'Gandhi-like':
- gandhi += 1
- elif i['reputation'].rstrip() == 'Angelic':
- angelic += 1
- elif i['reputation'].rstrip() == 'Nice':
- nice += 1
- elif i['reputation'].rstrip() == 'Good':
- good += 1
- elif i['reputation'].rstrip() == 'Normal':
- normal += 1
- elif i['reputation'].rstrip() == 'Questionable':
- quest += 1
- elif i['reputation'].rstrip() == 'Isolated':
- isolated += 1
- elif i['reputation'].rstrip() == 'Pariah':
- pariah += 1
- elif i['reputation'].rstrip() == 'Mad Dog':
- maddog += 1
- elif i['reputation'].rstrip() == 'Axis of Evil':
- aoe += 1
- return gandhi, angelic, nice, good, normal, quest, isolated, pariah, maddog, aoe
- def regiontroops(alliance):
- mam = car = gra = ama = sco = saf = con = eaf = gui = waf = atl = egy = ara = mpo = per = sub = chi = ind = ein = pac = 0
- for i in alliance:
- if i['region'].rstrip() == 'Mesoamerica':
- mam += i['troops']
- elif i['region'].rstrip() == 'Caribbean':
- car += i['troops']
- elif i['region'].rstrip() == 'Gran Colombia':
- gra += i['troops']
- elif i['region'].rstrip() == 'Amazonia':
- ama += i['troops']
- elif i['region'].rstrip() == 'Southern Cone':
- sco += i['troops']
- elif i['region'].rstrip() == 'Southern Africa':
- saf += i['troops']
- elif i['region'].rstrip() == 'Congo':
- con += i['troops']
- elif i['region'].rstrip() == 'East Africa':
- eaf += i['troops']
- elif i['region'].rstrip() == 'Guinea':
- gui += i['troops']
- elif i['region'].rstrip() == 'West Africa':
- waf += i['troops']
- elif i['region'].rstrip() == 'Atlas':
- atl += i['troops']
- elif i['region'].rstrip() == 'Egypt':
- egy += i['troops']
- elif i['region'].rstrip() == 'Arabia':
- ara += i['troops']
- elif i['region'].rstrip() == 'Mesopotamia':
- mpo += i['troops']
- elif i['region'].rstrip() == 'Persia':
- per += i['troops']
- elif i['region'].rstrip() == 'The Subcontinent':
- sub += i['troops']
- elif i['region'].rstrip() == 'China':
- chi += i['troops']
- elif i['region'].rstrip() == 'Indochina':
- ind += i['troops']
- elif i['region'].rstrip() == 'East Indies':
- ein += i['troops']
- elif i['region'].rstrip() == 'Pacific Rim':
- pac += i['troops']
- return mam, car, gra, ama, sco, saf, con, eaf, gui, waf, atl, egy, ara, mpo, per, sub, chi, ind, ein, pac
- def getsoup(url):
- while True:
- try:
- temp = br.open(url)
- except:
- print "Timeout, requesting again."
- else:
- break
- html = temp.read()
- soup = BS(html)
- # print soup.prettify()
- return soup
- def getdata(soup):
- data = {}
- if soup.find(size="2").string == 'online now':
- data['online'] = 0
- else:
- data['online'] = int(soup.find(size="2").string[12:-10])
- data['name'] = soup.find(id="nationtitle").string
- data['approval'] = soup.find(text='Approval:').parent.next_sibling.next_sibling.contents[0].string
- data['polsystem'] = soup.find(text='Political System:').parent.next_sibling.next_sibling.contents[0].string
- data['stability'] = soup.find(text='Stability:').parent.next_sibling.next_sibling.contents[0].string
- data['qol'] = soup.find(text='Quality of Life:').parent.next_sibling.next_sibling.contents[0].string
- data['territory'] = int(str(soup.find(text='Territory:').parent.next_sibling.next_sibling.contents)[4:-20])
- data['rebels'] = soup.find(text='Rebel Threat:').parent.next_sibling.next_sibling.contents[0].string
- data['econsystem'] = soup.find(text='Economic System:').parent.next_sibling.next_sibling.contents[0].string
- if soup.find(text='Industry:').parent.next_sibling.next_sibling.contents[0].string == 'None':
- data['factories'] = 0
- elif soup.find(text='Industry:').parent.next_sibling.next_sibling.contents[0].string == '1 factory':
- data['factories'] = 1
- else:
- data['factories'] = int(soup.find(text='Industry:').parent.next_sibling.next_sibling.contents[0].string[:-10])
- data['gdp'] = int(soup.find(text='Gross Domestic Product:').parent.next_sibling.next_sibling.contents[0].string[1:-8])
- data['growth'] = int(soup.find(text='Growth:').parent.next_sibling.next_sibling.contents[0].string[1:-18])
- if soup.find(text='Discovered Oil Reserves:').parent.next_sibling.next_sibling.contents[0].string == 'None':
- data['oilres'] = 0
- else:
- data['oilres'] = int(soup.find(text='Discovered Oil Reserves:').parent.next_sibling.next_sibling.contents[0].string[:-5])
- if soup.find(text='Oil Production:').parent.next_sibling.next_sibling.contents[0].string == 'None':
- data['oilprod'] = 0
- else:
- data['oilprod'] = int(soup.find(text='Oil Production:').parent.next_sibling.next_sibling.contents[0].string[:-15])
- try:
- data['rmprod'] = int(soup.find(text='Raw Material Production:').parent.next_sibling.next_sibling.contents[0].string[:-23])
- except:
- print "rm" + soup.find(text='Raw Material Production:').parent.next_sibling.next_sibling.contents[0].string
- data['alignment'] = soup.find(text='Official Alignment:').parent.next_sibling.next_sibling.contents[0].string
- data['region'] = soup.find(text='Region:').parent.next_sibling.next_sibling.contents[0].string
- data['reputation'] = soup.find(text='Reputation:').parent.next_sibling.next_sibling.contents[0].string
- try:
- data['troops'] = int(soup.find(text='Army Size:').parent.next_sibling.next_sibling.contents[0].string[:-18])
- except:
- print 'tr' + soup.find(text='Army Size:').parent.next_sibling.next_sibling.contents[0].string
- data['manpower'] = soup.find(text='Manpower:').parent.next_sibling.next_sibling.contents[0].string
- data['equipment'] = soup.find(text='Equipment:').parent.next_sibling.next_sibling.contents[0].string
- data['training'] = soup.find(text='Training:').parent.next_sibling.next_sibling.contents[0].string
- data['airforce'] = soup.find(text='Airforce:').parent.next_sibling.next_sibling.contents[0].string
- if soup.find(text='Wars:').parent.next_sibling.next_sibling.contents[0].string == 'At peace.':
- data['wars'] = 'peace'
- else:
- data['wars'] = 'war'
- if soup.find(text='Uranium:') == None:
- data['uranium'] = 0
- else:
- data['uranium'] = int(soup.find(text='Uranium:').parent.next_sibling.next_sibling.contents[0].string[:-5])
- return data
- def process(data):
- generaldata = []
- troopdata = []
- for alliance in data:
- datad = {}
- troopd = {}
- gdp = growth = troops = factories = territory = rmprod = oilprod = oilres = uranium = inactive = 0
- for nation in alliance:
- gdp += nation['gdp']
- growth += nation['growth']
- troops += nation['troops']
- factories += nation['factories']
- territory += nation['territory']
- rmprod += nation['rmprod']
- oilprod += nation['oilprod']
- oilres += nation['oilres']
- uranium += nation['uranium']
- inactive += nation['online']
- datad['size'] = len(alliance)
- datad['gdp'] = gdp
- datad['avggdp'] = round(gdp/float(len(alliance)), 1)
- datad['growth'] = growth
- datad['avggrowth'] = round(growth/float(len(alliance)), 1)
- datad['factories'] = factories
- datad['avgfactories'] = round(factories/float(len(alliance)), 1)
- datad['territory'] = territory
- datad['avgterritory'] = round(territory/float(len(alliance)), 1)
- datad['rmprod'] = rmprod
- datad['avgrmprod'] = round(rmprod/float(len(alliance)), 1)
- datad['oilprod'] = oilprod
- datad['avgoilprod'] = round(oilprod/float(len(alliance)), 1)
- datad['oilres'] = oilres
- datad['avgoilres'] = round(oilres/float(len(alliance)), 1)
- datad['inactive'] = inactive
- datad['avginactive'] = round(inactive/float(len(alliance)), 1)
- datad['uranium'] = uranium
- datad['advanced'], datad['persian'], datad['almost'], datad['vietnam'], datad['korean'], datad['second'], \
- datad['first'], datad['finest'], datad['stone'] = techlevels(alliance)
- datad['vpowerful'], datad['powerful'], datad['large'], datad['somelarge'], datad['mediocre'], datad['meagre'], \
- datad['small'], datad['noair'] = airforcelevels(alliance)
- datad['elite'], datad['good'], datad['standard'], datad['poortr'], datad['rabble'] = traininglevels(alliance)
- datad['mam'], datad['car'], datad['gra'], datad['ama'], datad['sco'], datad['saf'], datad['con'], datad['eaf'], \
- datad['gui'], datad['waf'], datad['atl'], datad['egy'], datad['ara'], datad['mpo'], datad['per'], datad['sub'], \
- datad['chi'], datad['ind'], datad['ein'], datad['pac'] = regionlevels(alliance)
- datad['untapped'], datad['plentiful'], datad['halved'], datad['low'], datad['neardep'], datad['depleted'] = manpowerlevels(alliance)
- datad['waag'], datad['adored'], datad['loved'], datad['liked'], datad['decent'], datad['middling'], datad['disliked'], \
- datad['hated'], datad['despised'], datad['eop'] = approvallevels(alliance)
- datad['libdem'], datad['authdem'], datad['opr'], datad['junta'], datad['dictat'] = polsystemlevels(alliance)
- datad['unsink'], datad['entren'], datad['vstable'], datad['quiet'], datad['calm'], datad['tensions'], datad['chaotic'], \
- datad['rioting'], datad['protests'], datad['collapse'] = stabilitylevels(alliance)
- datad['norebels'], datad['terror'], datad['guerrilla'], datad['rebellion'], datad['civil'] = rebelslevels(alliance)
- datad['free'], datad['mixed'], datad['command'] = econsystemlevels(alliance)
- datad['developed'], datad['good'], datad['decent'], datad['above'], datad['average'], datad['poorqol'], datad['impov'], \
- datad['desp'], datad['disast'], datad['crisis'] = qollevels(alliance)
- datad['west'], datad['non'], datad['east'] = alignlevels(alliance)
- datad['gandhi'], datad['angelic'], datad['nice'], datad['good'], datad['normal'], datad['quest'], datad['isolated'], \
- datad['pariah'], datad['maddog'], datad['aoe'] = replevels(alliance)
- troopd['troops'] = troops
- troopd['avgtroops'] = round(troops/float(len(alliance)), 1)
- troopd['mam'], troopd['car'], troopd['gra'], troopd['ama'], troopd['sco'], troopd['saf'], troopd['con'], troopd['eaf'], \
- troopd['gui'], troopd['waf'], troopd['atl'], troopd['egy'], troopd['ara'], troopd['mpo'], troopd['per'], troopd['sub'], \
- troopd['chi'], troopd['ind'], troopd['ein'], troopd['pac'] = regiontroops(alliance)
- generaldata.append(datad)
- troopdata.append(troopd)
- return generaldata, troopdata, uraniumlist
- def difference(newdata, newtroopdata, prevdata, prevtroopdata):
- datad = {}
- troopd = {}
- datad['size'] = newdata['size'] - prevdata['size']
- datad['gdp'] = newdata['gdp'] - prevdata['gdp']
- datad['avggdp'] = newdata['avggdp'] - prevdata['avggdp']
- datad['growth'] = newdata['growth'] - prevdata['growth']
- datad['avggrowth'] = newdata['avggrowth'] - prevdata['avggrowth']
- datad['factories'] = newdata['factories'] - prevdata['factories']
- datad['avgfactories'] = newdata['avgfactories'] - prevdata['avgfactories']
- datad['territory'] = newdata['territory'] - prevdata['territory']
- datad['avgterritory'] = newdata['avgterritory'] - prevdata['avgterritory']
- datad['rmprod'] = newdata['rmprod'] - prevdata['rmprod']
- datad['avgrmprod'] = newdata['avgrmprod'] - prevdata['avgrmprod']
- datad['oilprod'] = newdata['oilprod'] - prevdata['oilprod']
- datad['avgoilprod'] = newdata['avgoilprod'] - prevdata['avgoilprod']
- datad['oilres'] = newdata['oilres'] - prevdata['oilres']
- datad['avgoilres'] = newdata['avgoilres'] - prevdata['avgoilres']
- datad['inactive'] = newdata['inactive'] - prevdata['inactive']
- datad['avginactive'] = newdata['avginactive'] - prevdata['avginactive']
- datad['uranium'] = newdata['uranium'] - prevdata['uranium']
- datad['advanced'] = newdata['advanced'] - prevdata['advanced']
- datad['persian'] = newdata['persian'] - prevdata['persian']
- datad['almost'] = newdata['almost'] - prevdata['almost']
- datad['vietnam'] = newdata['vietnam'] - prevdata['vietnam']
- datad['korean'] = newdata['korean'] - prevdata['korean']
- datad['second'] = newdata['second'] - prevdata['second']
- datad['first'] = newdata['first'] - prevdata['first']
- datad['finest'] = newdata['finest'] - prevdata['finest']
- datad['stone'] = newdata['stone'] - prevdata['stone']
- datad['vpowerful'] = newdata['vpowerful'] - prevdata['vpowerful']
- datad['powerful'] = newdata['powerful'] - prevdata['powerful']
- datad['large'] = newdata['large'] - prevdata['large']
- datad['somelarge'] = newdata['somelarge'] - prevdata['somelarge']
- datad['mediocre'] = newdata['mediocre'] - prevdata['mediocre']
- datad['meagre'] = newdata['meagre'] - prevdata['meagre']
- datad['small'] = newdata['small'] - prevdata['small']
- datad['noair'] = newdata['noair'] - prevdata['noair']
- datad['elite'] = newdata['elite'] - prevdata['elite']
- datad['good'] = newdata['good'] - prevdata['good']
- datad['standard'] = newdata['standard'] - prevdata['standard']
- datad['poortr'] = newdata['poortr'] - prevdata['poortr']
- datad['rabble'] = newdata['rabble'] - prevdata['rabble']
- datad['mam'] = newdata['mam'] - prevdata['mam']
- datad['car'] = newdata['car'] - prevdata['car']
- datad['gra'] = newdata['gra'] - prevdata['gra']
- datad['ama'] = newdata['ama'] - prevdata['ama']
- datad['sco'] = newdata['sco'] - prevdata['sco']
- datad['saf'] = newdata['saf'] - prevdata['saf']
- datad['con'] = newdata['con'] - prevdata['con']
- datad['eaf'] = newdata['eaf'] - prevdata['eaf']
- datad['gui'] = newdata['gui'] - prevdata['gui']
- datad['waf'] = newdata['waf'] - prevdata['waf']
- datad['atl'] = newdata['atl'] - prevdata['atl']
- datad['egy'] = newdata['egy'] - prevdata['egy']
- datad['ara'] = newdata['ara'] - prevdata['ara']
- datad['mpo'] = newdata['mpo'] - prevdata['mpo']
- datad['per'] = newdata['per'] - prevdata['per']
- datad['sub'] = newdata['sub'] - prevdata['sub']
- datad['chi'] = newdata['chi'] - prevdata['chi']
- datad['ind'] = newdata['ind'] - prevdata['ind']
- datad['ein'] = newdata['ein'] - prevdata['ein']
- datad['pac'] = newdata['pac'] - prevdata['pac']
- datad['untapped'] = newdata['untapped'] - prevdata['untapped']
- datad['plentiful'] = newdata['plentiful'] - prevdata['plentiful']
- datad['halved'] = newdata['halved'] - prevdata['halved']
- datad['low'] = newdata['low'] - prevdata['low']
- datad['neardep'] = newdata['neardep'] - prevdata['neardep']
- datad['depleted'] = newdata['depleted'] - prevdata['depleted']
- datad['waag'] = newdata['waag'] - prevdata['waag']
- datad['adored'] = newdata['adored'] - prevdata['adored']
- datad['loved'] = newdata['loved'] - prevdata['loved']
- datad['liked'] = newdata['liked'] - prevdata['liked']
- datad['decent'] = newdata['decent'] - prevdata['decent']
- datad['middling'] = newdata['middling'] - prevdata['middling']
- datad['disliked'] = newdata['disliked'] - prevdata['disliked']
- datad['hated'] = newdata['hated'] - prevdata['hated']
- datad['despised'] = newdata['despised'] - prevdata['despised']
- datad['eop'] = newdata['eop'] - prevdata['eop']
- datad['libdem'] = newdata['libdem'] - prevdata['libdem']
- datad['authdem'] = newdata['authdem'] - prevdata['authdem']
- datad['opr'] = newdata['opr'] - prevdata['opr']
- datad['junta'] = newdata['junta'] - prevdata['junta']
- datad['dictat'] = newdata['dictat'] - prevdata['dictat']
- datad['unsink'] = newdata['unsink'] - prevdata['unsink']
- datad['entren'] = newdata['entren'] - prevdata['entren']
- datad['vstable'] = newdata['vstable'] - prevdata['vstable']
- datad['quiet'] = newdata['quiet'] - prevdata['quiet']
- datad['calm'] = newdata['calm'] - prevdata['calm']
- datad['tensions'] = newdata['tensions'] - prevdata['tensions']
- datad['chaotic'] = newdata['chaotic'] - prevdata['chaotic']
- datad['rioting'] = newdata['rioting'] - prevdata['rioting']
- datad['protests'] = newdata['protests'] - prevdata['protests']
- datad['collapse'] = newdata['collapse'] - prevdata['collapse']
- datad['norebels'] = newdata['norebels'] - prevdata['norebels']
- datad['terror'] = newdata['terror'] - prevdata['terror']
- datad['guerrilla'] = newdata['guerrilla'] - prevdata['guerrilla']
- datad['rebellion'] = newdata['rebellion'] - prevdata['rebellion']
- datad['civil'] = newdata['civil'] - prevdata['civil']
- datad['free'] = newdata['free'] - prevdata['free']
- datad['mixed'] = newdata['mixed'] - prevdata['mixed']
- datad['command'] = newdata['command'] - prevdata['command']
- datad['developed'] = newdata['developed'] - prevdata['developed']
- datad['good'] = newdata['good'] - prevdata['good']
- datad['decent'] = newdata['decent'] - prevdata['decent']
- datad['above'] = newdata['above'] - prevdata['above']
- datad['average'] = newdata['average'] - prevdata['average']
- datad['poorqol'] = newdata['poorqol'] - prevdata['poorqol']
- datad['impov'] = newdata['impov'] - prevdata['impov']
- datad['desp'] = newdata['desp'] - prevdata['desp']
- datad['disast'] = newdata['disast'] - prevdata['disast']
- datad['crisis'] = newdata['crisis'] - prevdata['crisis']
- datad['west'] = newdata['west'] - prevdata['west']
- datad['non'] = newdata['non'] - prevdata['non']
- datad['east'] = newdata['east'] - prevdata['east']
- datad['gandhi'] = newdata['gandhi'] - prevdata['gandhi']
- datad['angelic'] = newdata['angelic'] - prevdata['angelic']
- datad['nice'] = newdata['nice'] - prevdata['nice']
- datad['good'] = newdata['good'] - prevdata['good']
- datad['normal'] = newdata['normal'] - prevdata['normal']
- datad['quest'] = newdata['quest'] - prevdata['quest']
- datad['isolated'] = newdata['isolated'] - prevdata['isolated']
- datad['pariah'] = newdata['pariah'] - prevdata['pariah']
- datad['maddog'] = newdata['maddog'] - prevdata['maddog']
- datad['aoe'] = newdata['aoe'] - prevdata['aoe']
- troopd['troops'] = newtroopdata['troops'] - prevtroopdata['troops']
- troopd['avgtroops'] = newtroopdata['avgtroops'] - prevtroopdata['avgtroops']
- troopd['mam'] = newtroopdata['mam'] - prevtroopdata['mam']
- troopd['car'] = newtroopdata['car'] - prevtroopdata['car']
- troopd['gra'] = newtroopdata['gra'] - prevtroopdata['gra']
- troopd['ama'] = newtroopdata['ama'] - prevtroopdata['ama']
- troopd['sco'] = newtroopdata['sco'] - prevtroopdata['sco']
- troopd['saf'] = newtroopdata['saf'] - prevtroopdata['saf']
- troopd['con'] = newtroopdata['con'] - prevtroopdata['con']
- troopd['eaf'] = newtroopdata['eaf'] - prevtroopdata['eaf']
- troopd['gui'] = newtroopdata['gui'] - prevtroopdata['gui']
- troopd['waf'] = newtroopdata['waf'] - prevtroopdata['waf']
- troopd['atl'] = newtroopdata['atl'] - prevtroopdata['atl']
- troopd['egy'] = newtroopdata['egy'] - prevtroopdata['egy']
- troopd['ara'] = newtroopdata['ara'] - prevtroopdata['ara']
- troopd['mpo'] = newtroopdata['mpo'] - prevtroopdata['mpo']
- troopd['per'] = newtroopdata['per'] - prevtroopdata['per']
- troopd['sub'] = newtroopdata['sub'] - prevtroopdata['sub']
- troopd['chi'] = newtroopdata['chi'] - prevtroopdata['chi']
- troopd['ind'] = newtroopdata['ind'] - prevtroopdata['ind']
- troopd['ein'] = newtroopdata['ein'] - prevtroopdata['ein']
- troopd['pac'] = newtroopdata['pac'] - prevtroopdata['pac']
- return datad, troopd
- print "\nLogging in..."
- while True:
- try:
- loginresponse = br.open('http://blocgame.com')
- except:
- print "Timeout, requesting again."
- else:
- break
- br.form = list(br.forms())[0]
- br["username"] = 'username'
- br["password"] = 'password'
- response = br.submit()
- # print BS(response.read())
- print "Done."
- alliancelinks = []
- print "\nGetting alliance urls..."
- for i in range(1,3):
- soup = getsoup('http://blocgame.com/alliancerankings.php?page=%s' % i)
- # print soup.prettify()
- for link in soup.find_all('a'):
- text = str(link.get('href'))
- if 'alliancestats.php?allianceid=' in text and '=0' not in text:
- alliancelinks.append(link.get('href'))
- print "Done."
- j = 1
- names = []
- data = []
- uraniumlist = []
- for i in alliancelinks:
- print "\nGathering data on alliance %s of %s..." % (j, len(alliancelinks))
- alliance = []
- nations = []
- soup = getsoup('http://blocgame.com/%s' % i)
- names.append(soup.find('h1').string)
- print ' Gathering nation links...'
- for link in soup.find_all('a'):
- if 'stats.php?id=' in str(link.get('href')):
- nations.append(link.get('href'))
- print ' %s nations found.' % str(len(nations))
- k = 1
- for i in nations:
- soup = getsoup('http://blocgame.com/%s' % i)
- nationdata = getdata(soup)
- nationdata['id'] = i[13:]
- if nationdata['uranium'] > 0:
- uraniumlist.append({'name':nationdata['name'], 'id':nationdata['id'], 'uranium':nationdata['uranium']})
- alliance.append(nationdata)
- print ' %s of %s' % (str(k), str(len(nations)))
- k += 1
- data.append(alliance)
- j += 1
- print "Done."
- uraniumlist.sort(key=itemgetter('uranium'), reverse=True)
- from info import prevnow, prevdata, prevnames
- now = datetime.datetime.utcnow()
- with open('info.py', 'w') as f:
- f.write("import datetime\n")
- f.write("prevnow = %s\n" % repr(now))
- f.write("prevnames = %s\n" % repr(names))
- f.write("prevdata = %s" % repr(data))
- generaldata, troopdata = process(data)
- prevgeneraldata, prevtroopdata, prevuraniumlist = process(prevdata)
- diffnames = []
- diffgeneraldata = []
- difftroopdata = []
- for alliance in names:
- if alliance in prevnames:
- diffnames.append(alliance)
- newindex = names.index(alliance)
- oldindex = prevnames.index(alliance)
- diffgend, difftroopd = difference(generaldata[newindex], troopdata[newindex], prevgeneraldata[oldindex], prevtroopdata[oldindex])
- diffgeneraldata.append(diffgend)
- difftroopdata.append(difftroopd)
- ########################################################
- print "\nOutputting PDF..."
- from reportlab.lib.styles import ParagraphStyle as PS
- from reportlab.platypus import PageBreak, Image, Table, TableStyle, Spacer
- from reportlab.platypus.paragraph import Paragraph
- from reportlab.platypus.doctemplate import PageTemplate, BaseDocTemplate
- from reportlab.platypus.tableofcontents import TableOfContents
- from reportlab.platypus.frames import Frame
- from reportlab.lib.units import cm
- from reportlab.lib.pagesizes import A4
- from reportlab.lib import colors
- import numpy as np
- import matplotlib
- matplotlib.use("Agg")
- import matplotlib.pyplot as plt
- regions = ['Mesoamerica','Caribbean','Gran Colombia','Amazonia','Southern Cone','Southern Africa','Congo','East Africa','Guinea',
- 'West Africa','Atlas','Egypt','Arabia','Mesopotamia','Persia','The Subcontinent','China','Indochina','East Indies','Pacific Rim']
- alignments = ['West', 'Neutral', 'East']
- polsystems = ['Liberal Democracy','Authoritarian Democracy','One Party Rule','Military Junta','Dictatorship']
- econsystems = ['Free Market','Mixed Economy','Central Planning']
- approvallevels = ['Worshiped as a God','Adored','Loved','Liked','Decent','Middling','Disliked','Hated','Despised','Enemy of the People']
- stabilitylevels = ['Unsinkable','Entrenched','Very Stable','Quiet','Calm','Growing Tensions','Chaotic','Rioting','Mass Protests','Brink of Collapse']
- rebellevels = ['None','Scattered Terrorists','Guerrillas','Open Rebellion','Civil War']
- qollevels = ['Developed','Good','Decent','Above Average','Average','Poor','Impoverished','Desperate','Disastrous','Humanitarian Crisis']
- reputationlevels = ['Gandhi-Like','Angelic','Nice','Good','Normal','Questionable','Isolated','Pariah','Mad Dog','Axis of Evil']
- techlevels = ['Advanced','Persian','Almost Modern','Vietnam','Korean','World War II','World War I','19th Century','Stone Age']
- airforcelevels = ['Very Powerful','Powerful','Large','Somewhat Large','Mediocre','Meagre','Small','None']
- traininglevels = ['Elite','Good','Standard','Poor','Rabble']
- manpowerlevels = ['Untapped','Plentiful','Halved','Low','Near Depletion','Depleted']
- class MyDocTemplate(BaseDocTemplate):
- def __init__(self, filename, **kw):
- self.allowSplitting = 0
- apply(BaseDocTemplate.__init__, (self, filename), kw)
- template = PageTemplate('normal', [Frame(1.5*cm, 1.5*cm, 18*cm, 26.7*cm, id='F1')])
- self.addPageTemplates(template)
- def afterFlowable(self, flowable):
- "Registers TOC entries."
- if flowable.__class__.__name__ == 'Paragraph':
- text = flowable.getPlainText()
- style = flowable.style.name
- if style == 'Heading1':
- level = 0
- elif style == 'Heading2':
- level = 1
- else:
- return
- E = [level, text, self.page]
- #if we have a bookmark name append that to our notify data
- bn = getattr(flowable,'_bookmarkName',None)
- if bn is not None: E.append(bn)
- self.notify('TOCEntry', tuple(E))
- def doHeading(text,sty):
- from hashlib import sha1
- bn=sha1(text+sty.name).hexdigest()
- h=Paragraph(text+'<a name="%s"/>' % bn,sty)
- h._bookmarkName=bn
- story.append(h)
- def maketable(tdata):
- t = Table(tdata)
- t.setStyle(TableStyle([('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE'),
- ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),('BOX', (0,0), (-1,-1), 0.25, colors.black)]))
- story.append(t)
- story.append(Spacer(cm, 1*cm))
- def tableonly(name, categories, data):
- for index, value in enumerate(data):
- if value > 0:
- data[index] = Paragraph('<font color="green">+%s</font>' % value, PS('body'))
- elif value < 0:
- data[index] = Paragraph('<font color="red">%s</font>' % value, PS('body'))
- tdata = [(name, 'Difference')] + [(categories[i], data[i]) for i in range(len(categories))]
- maketable(tdata)
- def graphanddata(xdata, ydata, ylabel, no):
- N = len(xdata)
- means = ydata
- ind = np.arange(N) # the x locations for the groups
- width = 0.75 # the width of the bars
- fig = plt.figure(figsize=(5,4))
- plt.subplots_adjust(bottom=0.25)
- ax = fig.add_subplot(111)
- rects = ax.bar(ind, means, width, color='r')
- ax.set_ylabel(ylabel)
- ax.grid(b=True, which='major', axis='y', zorder=3)
- ax.set_xticks(ind+0.40)
- ax.set_axisbelow(True)
- ax.set_xlim(left=-0.25)
- ax.set_xticklabels(xdata, fontsize=8, rotation='vertical')
- ax.tick_params(direction='out', top=False, bottom=False, right=False)
- plt.savefig('foo%s.png' % no, bbox_inches='tight')
- plt.close()
- f = open('foo%s.png' % no, 'rb')
- story.append(Image(f))
- if len(xdata) <= 10:
- tdata = [(xdata[i], ydata[i]) for i in range(len(xdata))]
- else:
- tdata = [(xdata[i], ydata[i], xdata[i+10], ydata[i+10]) for i in range(10)]
- maketable(tdata)
- story.append(PageBreak())
- title = PS(name='title', fontSize=50, leading=16, alignment=1, spaceAfter=20)
- smallertitle = PS(name='smallertitle', fontSize=30, leading=16, alignment=1, spaceAfter=20)
- h1 = PS(name='Heading1', fontSize=25, leading=15, spaceAfter=30)
- h2 = PS(name='Heading2', fontSize=16, leading=8, spaceAfter=20)
- h3 = PS(name='Heading3', fontSize=14, leading=8, spaceAfter=20)
- tagline = PS(name='tagline', fontSize=20, leading=14, alignment=1)
- story = []
- toc = TableOfContents()
- toc.levelStyles = [
- PS(fontName='Times-Bold', fontSize=15, name='TOCHeading1', leftIndent=20, firstLineIndent=-20, spaceBefore=5, leading=5),
- PS(fontSize=12, name='TOCHeading2', leftIndent=40, firstLineIndent=-20, spaceBefore=3, leading=3),
- PS(fontSize=12, name='TOCHeading3', leftIndent=60, firstLineIndent=-20, spaceBefore=3, leading=3),
- ]
- story.append(Paragraph('<b>>BLOC Dossier</b>', title))
- story.append(Spacer(cm, 1*cm))
- story.append(Paragraph('Generated on %s' % now.strftime('%d %B, %H:%M:%S'), tagline))
- story.append(Spacer(cm, 1.5*cm))
- story.append(Image('insert.png', 15*cm, 21*cm))
- story.append(PageBreak())
- story.append(Paragraph('Table of Contents', smallertitle))
- story.append(toc)
- story.append(PageBreak())
- print ' Initial done.'
- doHeading('General Comparisons', h1)
- doHeading('Alliance Size', h2)
- data = [alliance['size'] for alliance in generaldata]
- graphanddata(names, data, 'Alliance Size', 1)
- doHeading('Total GDP', h2)
- data = [alliance['gdp'] for alliance in generaldata]
- graphanddata(names, data, 'Total GDP ($million)', 2)
- doHeading('Average GDP', h2)
- data = [alliance['avggdp'] for alliance in generaldata]
- graphanddata(names, data, 'Average GDP ($million)', 3)
- doHeading('Total growth', h2)
- data = [alliance['growth'] for alliance in generaldata]
- graphanddata(names, data, 'Total growth ($million / month)', 4)
- doHeading('Average growth', h2)
- data = [alliance['avggrowth'] for alliance in generaldata]
- graphanddata(names, data, 'Average growth ($million / month)', 5)
- doHeading('Total troops', h2)
- data = [alliance['troops'] for alliance in troopdata]
- graphanddata(names, data, 'Total troops (k)', 19)
- doHeading('Average troops', h2)
- data = [alliance['avgtroops'] for alliance in troopdata]
- graphanddata(names, data, 'Average troops (k)', 20)
- doHeading('Total Factories', h2)
- data = [alliance['factories'] for alliance in generaldata]
- graphanddata(names, data, 'Total Factories', 6)
- doHeading('Average Factories', h2)
- data = [alliance['avgfactories'] for alliance in generaldata]
- graphanddata(names, data, 'Average Factories', 7)
- doHeading('Total RM production', h2)
- data = [alliance['rmprod'] for alliance in generaldata]
- graphanddata(names, data, 'Total RM production (100 Tons / month)', 8)
- doHeading('Average RM production', h2)
- data = [alliance['avgrmprod'] for alliance in generaldata]
- graphanddata(names, data, 'Average RM production (100 Tons / month)', 9)
- doHeading('Total oil production', h2)
- data = [alliance['oilprod'] for alliance in generaldata]
- graphanddata(names, data, 'Total oil production (Mbbl / month)', 10)
- doHeading('Average oil production', h2)
- data = [alliance['avgoilprod'] for alliance in generaldata]
- graphanddata(names, data, 'Average oil production (Mbbl / month)', 11)
- doHeading('Total oil reserves', h2)
- data = [alliance['oilres'] for alliance in generaldata]
- graphanddata(names, data, 'Total oil reserves (Mbbl)', 12)
- doHeading('Average oil reserves', h2)
- data = [alliance['avgoilres'] for alliance in generaldata]
- graphanddata(names, data, 'Average oil reserves (Mbbl)', 13)
- doHeading('Total territory', h2)
- data = [alliance['territory'] for alliance in generaldata]
- graphanddata(names, data, 'Total territory (km^2)', 14)
- doHeading('Average territory', h2)
- data = [alliance['avgterritory'] for alliance in generaldata]
- graphanddata(names, data, 'Average territory (km^2)', 15)
- doHeading('Total time inactive', h2)
- data = [alliance['inactive'] for alliance in generaldata]
- graphanddata(names, data, 'Total time inactive (hours)', 16)
- doHeading('Average time inactive', h2)
- data = [alliance['avginactive'] for alliance in generaldata]
- graphanddata(names, data, 'Average time inactive (hours)', 17)
- doHeading('Total uranium', h2)
- data = [alliance['uranium'] for alliance in generaldata]
- graphanddata(names, data, 'Total uranium (Tons)', 18)
- print ' General comparisons done.'
- doHeading('Alliance Panels', h1)
- for i in range(len(names)):
- doHeading('%s' % names[i], h2)
- story.append(Paragraph('Tech Level counts', h3))
- data = [generaldata[i]['advanced'], generaldata[i]['persian'], generaldata[i]['almost'], generaldata[i]['vietnam'], generaldata[i]['korean'],
- generaldata[i]['second'], generaldata[i]['first'], generaldata[i]['finest'], generaldata[i]['stone']]
- graphanddata(techlevels, data, 'No. of nations', 30+14*i)
- story.append(Paragraph('Training Level counts', h3))
- data = [generaldata[i]['elite'], generaldata[i]['good'], generaldata[i]['standard'], generaldata[i]['poortr'], generaldata[i]['rabble']]
- graphanddata(traininglevels, data, 'No. of nations', 32+14*i)
- story.append(Paragraph('Airforce Level counts', h3))
- data = [generaldata[i]['vpowerful'], generaldata[i]['powerful'], generaldata[i]['large'], generaldata[i]['somelarge'],
- generaldata[i]['mediocre'], generaldata[i]['meagre'], generaldata[i]['small'], generaldata[i]['noair']]
- graphanddata(airforcelevels, data, 'No. of nations', 31+14*i)
- story.append(Paragraph('Manpower Level counts', h3))
- data = [generaldata[i]['untapped'], generaldata[i]['plentiful'], generaldata[i]['halved'], generaldata[i]['low'],
- generaldata[i]['neardep'], generaldata[i]['depleted']]
- graphanddata(manpowerlevels, data, 'No. of nations', 33+14*i)
- story.append(Paragraph('Region counts', h3))
- data = [generaldata[i]['mam'], generaldata[i]['car'], generaldata[i]['gra'], generaldata[i]['ama'], generaldata[i]['sco'],
- generaldata[i]['saf'], generaldata[i]['con'], generaldata[i]['eaf'], generaldata[i]['gui'], generaldata[i]['waf'],
- generaldata[i]['atl'], generaldata[i]['egy'], generaldata[i]['ara'], generaldata[i]['mpo'], generaldata[i]['per'],
- generaldata[i]['sub'], generaldata[i]['chi'], generaldata[i]['ind'], generaldata[i]['ein'], generaldata[i]['pac']]
- graphanddata(regions, data, 'No. of nations', 21+14*i)
- story.append(Paragraph('Region troop counts', h3))
- data = [troopdata[i]['mam'], troopdata[i]['car'], troopdata[i]['gra'], troopdata[i]['ama'], troopdata[i]['sco'],
- troopdata[i]['saf'], troopdata[i]['con'], troopdata[i]['eaf'], troopdata[i]['gui'], troopdata[i]['waf'],
- troopdata[i]['atl'], troopdata[i]['egy'], troopdata[i]['ara'], troopdata[i]['mpo'], troopdata[i]['per'],
- troopdata[i]['sub'], troopdata[i]['chi'], troopdata[i]['ind'], troopdata[i]['ein'], troopdata[i]['pac']]
- graphanddata(regions, data, 'Troops (k)', 34+14*i)
- story.append(Paragraph('Alignment counts', h3))
- data = [generaldata[i]['west'], generaldata[i]['non'], generaldata[i]['east']]
- graphanddata(alignments, data, 'No. of nations', 22+14*i)
- story.append(Paragraph('Political System counts', h3))
- data = [generaldata[i]['libdem'], generaldata[i]['authdem'], generaldata[i]['opr'], generaldata[i]['junta'], generaldata[i]['dictat']]
- graphanddata(polsystems, data, 'No. of nations', 23+14*i)
- story.append(Paragraph('Economic System counts', h3))
- data = [generaldata[i]['free'], generaldata[i]['mixed'], generaldata[i]['command']]
- graphanddata(econsystems, data, 'No. of nations', 24+14*i)
- story.append(Paragraph('Approval counts', h3))
- data = [generaldata[i]['waag'], generaldata[i]['adored'], generaldata[i]['loved'], generaldata[i]['liked'], generaldata[i]['decent'],
- generaldata[i]['middling'], generaldata[i]['disliked'], generaldata[i]['hated'], generaldata[i]['despised'], generaldata[i]['eop']]
- graphanddata(approvallevels, data, 'No. of nations', 25+14*i)
- story.append(Paragraph('Stability counts', h3))
- data = [generaldata[i]['unsink'], generaldata[i]['entren'], generaldata[i]['vstable'], generaldata[i]['quiet'], generaldata[i]['calm'],
- generaldata[i]['tensions'], generaldata[i]['chaotic'], generaldata[i]['rioting'], generaldata[i]['protests'], generaldata[i]['collapse']]
- graphanddata(stabilitylevels, data, 'No. of nations', 26+14*i)
- story.append(Paragraph('Rebel counts', h3))
- data = [generaldata[i]['norebels'], generaldata[i]['terror'], generaldata[i]['guerrilla'], generaldata[i]['rebellion'], generaldata[i]['civil']]
- graphanddata(rebellevels, data, 'No. of nations', 27+14*i)
- story.append(Paragraph('QoL counts', h3))
- data = [generaldata[i]['developed'], generaldata[i]['good'], generaldata[i]['decent'], generaldata[i]['above'], generaldata[i]['average'],
- generaldata[i]['poorqol'], generaldata[i]['impov'], generaldata[i]['desp'], generaldata[i]['disast'], generaldata[i]['crisis']]
- graphanddata(qollevels, data, 'No. of nations', 28+14*i)
- story.append(Paragraph('Reputation counts', h3))
- data = [generaldata[i]['gandhi'], generaldata[i]['angelic'], generaldata[i]['nice'], generaldata[i]['good'], generaldata[i]['normal'],
- generaldata[i]['quest'], generaldata[i]['isolated'], generaldata[i]['pariah'], generaldata[i]['maddog'], generaldata[i]['aoe']]
- graphanddata(reputationlevels, data, 'No. of nations', 29+14*i)
- print ' %s of %s panels done' % (str(i+1), str(len(names)))
- doHeading('Differences (from %s)' % prevnow.strftime('%d %B, %H:%M:%S'), h1)
- doHeading('General Comparisons diff', h1)
- doHeading('Alliance Size diff', h2)
- data = [alliance['size'] for alliance in diffgeneraldata]
- tableonly('Alliance Size', diffnames, data)
- story.append(PageBreak())
- doHeading('Total GDP diff', h2)
- data = [alliance['gdp'] for alliance in diffgeneraldata]
- tableonly('GDP', diffnames, data)
- story.append(PageBreak())
- doHeading('Total growth diff', h2)
- data = [alliance['growth'] for alliance in diffgeneraldata]
- tableonly('Growth', diffnames, data)
- story.append(PageBreak())
- doHeading('Total troops diff', h2)
- data = [alliance['troops'] for alliance in difftroopdata]
- tableonly('Troops', diffnames, data)
- story.append(PageBreak())
- doHeading('Total Factories diff', h2)
- data = [alliance['factories'] for alliance in diffgeneraldata]
- tableonly('Factories', diffnames, data)
- story.append(PageBreak())
- doHeading('Total RM production diff', h2)
- data = [alliance['rmprod'] for alliance in diffgeneraldata]
- tableonly('RM Production', diffnames, data)
- story.append(PageBreak())
- doHeading('Total oil production diff', h2)
- data = [alliance['oilprod'] for alliance in diffgeneraldata]
- tableonly('Oil Production', diffnames, data)
- story.append(PageBreak())
- doHeading('Total oil reserves diff', h2)
- data = [alliance['oilres'] for alliance in diffgeneraldata]
- tableonly('Oil Reserves', diffnames, data)
- story.append(PageBreak())
- doHeading('Total territory diff', h2)
- data = [alliance['territory'] for alliance in diffgeneraldata]
- tableonly('Territory', diffnames, data)
- story.append(PageBreak())
- doHeading('Total time inactive diff', h2)
- data = [alliance['inactive'] for alliance in diffgeneraldata]
- tableonly('Time inactive', diffnames, data)
- story.append(PageBreak())
- print ' General differences done'
- doHeading('Alliance Panels diff', h1)
- for i in range(len(diffnames)):
- doHeading('%s' % names[i], h2)
- story.append(Paragraph('Tech Level counts diff', h3))
- data = [diffgeneraldata[i]['advanced'], diffgeneraldata[i]['persian'], diffgeneraldata[i]['almost'],
- diffgeneraldata[i]['vietnam'], diffgeneraldata[i]['korean'], diffgeneraldata[i]['second'],
- diffgeneraldata[i]['first'], diffgeneraldata[i]['finest'], diffgeneraldata[i]['stone']]
- tableonly('Tech levels', techlevels, data)
- story.append(Paragraph('Training Level counts diff', h3))
- data = [diffgeneraldata[i]['elite'], diffgeneraldata[i]['good'], diffgeneraldata[i]['standard'],
- diffgeneraldata[i]['poortr'], diffgeneraldata[i]['rabble']]
- tableonly('Training levels', traininglevels, data)
- story.append(Paragraph('Airforce Level counts diff', h3))
- data = [diffgeneraldata[i]['vpowerful'], diffgeneraldata[i]['powerful'], diffgeneraldata[i]['large'],
- diffgeneraldata[i]['somelarge'], diffgeneraldata[i]['mediocre'], diffgeneraldata[i]['meagre'],
- diffgeneraldata[i]['small'], diffgeneraldata[i]['noair']]
- tableonly('Airforce levels', airforcelevels, data)
- story.append(PageBreak())
- story.append(Paragraph('Manpower Level counts diff', h3))
- data = [diffgeneraldata[i]['untapped'], diffgeneraldata[i]['plentiful'], diffgeneraldata[i]['halved'],
- diffgeneraldata[i]['low'], diffgeneraldata[i]['neardep'], diffgeneraldata[i]['depleted']]
- tableonly('Manpower levels', manpowerlevels, data)
- story.append(Paragraph('Region counts diff', h3))
- data = [diffgeneraldata[i]['mam'], diffgeneraldata[i]['car'], diffgeneraldata[i]['gra'], diffgeneraldata[i]['ama'],
- diffgeneraldata[i]['sco'], diffgeneraldata[i]['saf'], diffgeneraldata[i]['con'], diffgeneraldata[i]['eaf'],
- diffgeneraldata[i]['gui'], diffgeneraldata[i]['waf'], diffgeneraldata[i]['atl'], diffgeneraldata[i]['egy'],
- diffgeneraldata[i]['ara'], diffgeneraldata[i]['mpo'], diffgeneraldata[i]['per'], diffgeneraldata[i]['sub'],
- diffgeneraldata[i]['chi'], diffgeneraldata[i]['ind'], diffgeneraldata[i]['ein'], diffgeneraldata[i]['pac']]
- tableonly('Region counts', regions, data)
- story.append(PageBreak())
- story.append(Paragraph('Region troop counts diff', h3))
- data = [difftroopdata[i]['mam'], difftroopdata[i]['car'], difftroopdata[i]['gra'], difftroopdata[i]['ama'], difftroopdata[i]['sco'],
- difftroopdata[i]['saf'], difftroopdata[i]['con'], difftroopdata[i]['eaf'], difftroopdata[i]['gui'], difftroopdata[i]['waf'],
- difftroopdata[i]['atl'], difftroopdata[i]['egy'], difftroopdata[i]['ara'], difftroopdata[i]['mpo'], difftroopdata[i]['per'],
- difftroopdata[i]['sub'], difftroopdata[i]['chi'], difftroopdata[i]['ind'], difftroopdata[i]['ein'], difftroopdata[i]['pac']]
- tableonly('Region troop counts', regions, data)
- story.append(Paragraph('Alignment counts diff', h3))
- data = [diffgeneraldata[i]['west'], diffgeneraldata[i]['non'], diffgeneraldata[i]['east']]
- tableonly('Alignments', alignments, data)
- story.append(Paragraph('Political System counts diff', h3))
- data = [diffgeneraldata[i]['libdem'], diffgeneraldata[i]['authdem'], diffgeneraldata[i]['opr'], diffgeneraldata[i]['junta'],
- diffgeneraldata[i]['dictat']]
- tableonly('Political systems', polsystems, data)
- story.append(PageBreak())
- story.append(Paragraph('Economic System counts diff', h3))
- data = [diffgeneraldata[i]['free'], diffgeneraldata[i]['mixed'], diffgeneraldata[i]['command']]
- tableonly('Economic systems', econsystems, data)
- story.append(Paragraph('Approval counts diff', h3))
- data = [diffgeneraldata[i]['waag'], diffgeneraldata[i]['adored'], diffgeneraldata[i]['loved'], diffgeneraldata[i]['liked'],
- diffgeneraldata[i]['decent'], diffgeneraldata[i]['middling'], diffgeneraldata[i]['disliked'], diffgeneraldata[i]['hated'],
- diffgeneraldata[i]['despised'], diffgeneraldata[i]['eop']]
- tableonly('Approval levels', approvallevels, data)
- story.append(Paragraph('Stability counts diff', h3))
- data = [diffgeneraldata[i]['unsink'], diffgeneraldata[i]['entren'], diffgeneraldata[i]['vstable'], diffgeneraldata[i]['quiet'],
- diffgeneraldata[i]['calm'], diffgeneraldata[i]['tensions'], diffgeneraldata[i]['chaotic'], diffgeneraldata[i]['rioting'],
- diffgeneraldata[i]['protests'], diffgeneraldata[i]['collapse']]
- tableonly('Stability levels', stabilitylevels, data)
- story.append(PageBreak())
- story.append(Paragraph('Rebel counts diff', h3))
- data = [diffgeneraldata[i]['norebels'], diffgeneraldata[i]['terror'], diffgeneraldata[i]['guerrilla'],
- diffgeneraldata[i]['rebellion'], diffgeneraldata[i]['civil']]
- tableonly('Rebel levels', rebellevels, data)
- story.append(Paragraph('QoL counts diff', h3))
- data = [diffgeneraldata[i]['developed'], diffgeneraldata[i]['good'], diffgeneraldata[i]['decent'], diffgeneraldata[i]['above'],
- diffgeneraldata[i]['average'], diffgeneraldata[i]['poorqol'], diffgeneraldata[i]['impov'], diffgeneraldata[i]['desp'],
- diffgeneraldata[i]['disast'], diffgeneraldata[i]['crisis']]
- tableonly('QoL levels', qollevels, data)
- story.append(Paragraph('Reputation counts diff', h3))
- data = [diffgeneraldata[i]['gandhi'], diffgeneraldata[i]['angelic'], diffgeneraldata[i]['nice'], diffgeneraldata[i]['good'],
- diffgeneraldata[i]['normal'], diffgeneraldata[i]['quest'], diffgeneraldata[i]['isolated'], diffgeneraldata[i]['pariah'],
- diffgeneraldata[i]['maddog'], diffgeneraldata[i]['aoe']]
- tableonly('Reputation levels', reputationlevels, data)
- story.append(PageBreak())
- print ' %s of %s panel diffs done' % (str(i+1), str(len(names)))
- tdata = [('Nation Name', 'Nation ID', 'Uranium Quantity')] + [(nation['name'], nation['id'], nation['uranium']) for nation in uraniumlist]
- t = Table(tdata)
- t.setStyle(TableStyle([('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE'),
- ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),('BOX', (0,0), (-1,-1), 0.25, colors.black)]))
- story.append(t)
- story.append(PageBreak())
- doc = MyDocTemplate('bloc.pdf', pagesize=A4, title='BLOC Dossier', author='heidi')
- doc.multiBuild(story)
- print "Done."
- print "\nCopying to ftp..."
- import shutil
- shutil.move('bloc.pdf', '/home/heidi/ftp/bloc.pdf')
- print "Done."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement