Advertisement
heidi666

Alliance Indexer

Aug 11th, 2014
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 36.18 KB | None | 0 0
  1. import mechanize
  2. import cookielib
  3. from bs4 import BeautifulSoup as BS
  4. import datetime
  5. import sys
  6. import csv
  7. import os
  8.  
  9. br = mechanize.Browser()
  10. cj = cookielib.LWPCookieJar()
  11. br.set_cookiejar(cj)
  12. br.set_handle_robots(False)
  13. 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')]
  14.        
  15. def techlevels(alliance):
  16.     advanced = persian = almost = vietnam = korean = second = first = finest = stone = 0
  17.     for i in alliance:
  18.         if i['equipment'].rstrip() == 'Advanced':
  19.             advanced += 1
  20.         elif i['equipment'].rstrip() == 'Persian Gulf War surplus':
  21.             persian += 1
  22.         elif i['equipment'].rstrip() == 'Almost Modern':
  23.             almost += 1
  24.         elif i['equipment'].rstrip() == 'Vietnam War surplus':
  25.             vietnam += 1
  26.         elif i['equipment'].rstrip() == 'Korean War surplus':
  27.             korean += 1
  28.         elif i['equipment'].rstrip() == 'Second World War surplus':
  29.             second += 1
  30.         elif i['equipment'].rstrip() == 'First World War surplus':
  31.             first += 1
  32.         elif i['equipment'].rstrip() == 'Finest of the 19th century':
  33.             finest += 1
  34.         else:
  35.             stone += 1
  36.     return advanced, persian, almost, vietnam, korean, second, first, finest, stone
  37.    
  38. def airforcelevels(alliance):
  39.     vpowerful = powerful = large = somelarge = mediocre = meagre = small = none = 0
  40.     for i in alliance:
  41.         if i['airforce'].rstrip() == 'Very Powerful':
  42.             vpowerful += 1
  43.         elif i['airforce'].rstrip() == 'Powerful':
  44.             powerful += 1
  45.         elif i['airforce'].rstrip() == 'Large':
  46.             large += 1
  47.         elif i['airforce'].rstrip() == 'Somewhat Large':
  48.             somelarge += 1
  49.         elif i['airforce'].rstrip() == 'Mediocre':
  50.             mediocre += 1
  51.         elif i['airforce'].rstrip() == 'Meagre':
  52.             meagre += 1
  53.         elif i['airforce'].rstrip() == 'Small':
  54.             small += 1
  55.         else:
  56.             none += 1
  57.     return vpowerful, powerful, large, somelarge, mediocre, meagre, small, none
  58.  
  59. def traininglevels(alliance):
  60.     elite = good = standard = poor = rabble = 0
  61.     for i in alliance:
  62.         if i['training'].rstrip() == 'Elite':
  63.             elite += 1
  64.         elif i['training'].rstrip() == 'Good':
  65.             good += 1
  66.         elif i['training'].rstrip() == 'Standard':
  67.             standard += 1
  68.         elif i['training'].rstrip() == 'Poor':
  69.             poor += 1
  70.         else:
  71.             rabble += 1
  72.     return elite, good, standard, poor, rabble
  73.    
  74. def regionlevels(alliance):
  75.     mam = car = gra = ama = sco = saf = con = eaf = gui = waf = atl = egy = ara = mpo = per = sub = chi = ind = ein = pac = 0
  76.     for i in alliance:
  77.         if i['region'].rstrip() == 'Mesoamerica':
  78.             mam += 1
  79.         elif i['region'].rstrip() == 'Caribbean':
  80.             car += 1
  81.         elif i['region'].rstrip() == 'Gran Colombia':
  82.             gra += 1
  83.         elif i['region'].rstrip() == 'Amazonia':
  84.             ama += 1
  85.         elif i['region'].rstrip() == 'Southern Cone':
  86.             sco += 1
  87.         elif i['region'].rstrip() == 'Southern Africa':
  88.             saf += 1
  89.         elif i['region'].rstrip() == 'Congo':
  90.             con += 1
  91.         elif i['region'].rstrip() == 'East Africa':
  92.             eaf += 1
  93.         elif i['region'].rstrip() == 'Guinea':
  94.             gui += 1
  95.         elif i['region'].rstrip() == 'West Africa':
  96.             waf += 1
  97.         elif i['region'].rstrip() == 'Atlas':
  98.             atl += 1
  99.         elif i['region'].rstrip() == 'Egypt':
  100.             egy += 1
  101.         elif i['region'].rstrip() == 'Arabia':
  102.             ara += 1
  103.         elif i['region'].rstrip() == 'Mesopotamia':
  104.             mpo += 1
  105.         elif i['region'].rstrip() == 'Persia':
  106.             per += 1
  107.         elif i['region'].rstrip() == 'The Subcontinent':
  108.             sub += 1
  109.         elif i['region'].rstrip() == 'China':
  110.             chi += 1
  111.         elif i['region'].rstrip() == 'Indochina':
  112.             ind += 1
  113.         elif i['region'].rstrip() == 'East Indies':
  114.             ein += 1
  115.         elif i['region'].rstrip() == 'Pacific Rim':
  116.             pac += 1
  117.     return mam, car, gra, ama, sco, saf, con, eaf, gui, waf, atl, egy, ara, mpo, per, sub, chi, ind, ein, pac
  118.  
  119. def manpowerlevels(alliance):
  120.     untapped = plentiful = halved = low = neardep = depleted = 0
  121.     for i in alliance:
  122.         if i['manpower'].rstrip() == 'Untapped':
  123.             untapped += 1
  124.         elif i['manpower'].rstrip() == 'Plentiful':
  125.             plentiful += 1
  126.         elif i['manpower'].rstrip() == 'Halved':
  127.             halved += 1
  128.         elif i['manpower'].rstrip() == 'Low':
  129.             low += 1
  130.         elif i['manpower'].rstrip() == 'Near Depletion':
  131.             neardep += 1
  132.         elif i['manpower'].rstrip() == 'Depleted':
  133.             depleted += 1
  134.     return untapped, plentiful, halved, low, neardep, depleted
  135.  
  136. def approvallevels(alliance):
  137.     waag = adored = loved = liked = decent = middling = disliked = hated = despised = eop = 0
  138.     for i in alliance:
  139.         if i['approval'].rstrip() == 'Worshiped as a God':
  140.             waag += 1
  141.         elif i['approval'].rstrip() == 'Adored':
  142.             adored += 1
  143.         elif i['approval'].rstrip() == 'Loved':
  144.             loved += 1
  145.         elif i['approval'].rstrip() == 'Liked':
  146.             liked += 1
  147.         elif i['approval'].rstrip() == 'Decent':
  148.             decent += 1
  149.         elif i['approval'].rstrip() == 'Middling':
  150.             middling += 1
  151.         elif i['approval'].rstrip() == 'Disliked':
  152.             disliked += 1
  153.         elif i['approval'].rstrip() == 'Hated':
  154.             hated += 1
  155.         elif i['approval'].rstrip() == 'Utterly Despised':
  156.             despised += 1
  157.         elif i['approval'].rstrip() == 'Enemy of the People':
  158.             eop += 1
  159.     return waag, adored, loved, liked, decent, middling, disliked, hated, despised, eop
  160.    
  161. def polsystemlevels(alliance):
  162.     libdem = authdem = opr = junta = dictat = 0
  163.     for i in alliance:
  164.         if i['polsystem'].rstrip() == 'Liberal Democracy':
  165.             libdem += 1
  166.         elif i['polsystem'].rstrip() == 'Authoritarian Democracy':
  167.             authdem += 1
  168.         elif i['polsystem'].rstrip() == 'One Party Rule':
  169.             opr += 1
  170.         elif i['polsystem'].rstrip() == 'Military Junta':
  171.             junta += 1
  172.         elif i['polsystem'].rstrip() == 'Dictatorship':
  173.             dictat += 1
  174.     return libdem, authdem, opr, junta, dictat
  175.    
  176. def stabilitylevels(alliance):
  177.     unsink = entrenched = vstable = quiet = calm = tensions = chaotic = rioting = protests = collapse = 0
  178.     for i in alliance:
  179.         if i['stability'].rstrip() == 'Unsinkable':
  180.             unsink += 1
  181.         elif i['stability'].rstrip() == 'Entrenched':
  182.             entrenched += 1
  183.         elif i['stability'].rstrip() == 'Very Stable':
  184.             vstable += 1
  185.         elif i['stability'].rstrip() == 'Quiet':
  186.             quiet += 1
  187.         elif i['stability'].rstrip() == 'Seemingly Calm':
  188.             calm += 1
  189.         elif i['stability'].rstrip() == 'Growing Tensions':
  190.             tensions += 1
  191.         elif i['stability'].rstrip() == 'Chaotic':
  192.             chaotic += 1
  193.         elif i['stability'].rstrip() == 'Rioting':
  194.             rioting += 1
  195.         elif i['stability'].rstrip() == 'Mass Protests':
  196.             protests += 1
  197.         elif i['stability'].rstrip() == 'Brink of Collapse':
  198.             collapse += 1
  199.     return unsink, entrenched, vstable, quiet, calm, tensions, chaotic, rioting, protests, collapse
  200.    
  201. def rebelslevels(alliance):
  202.     norebels = terror = guerrilla = rebellion = civil = 0
  203.     for i in alliance:
  204.         if i['rebels'].rstrip() == 'None':
  205.             norebels += 1
  206.         elif i['rebels'].rstrip() == 'Scattered terrorists':
  207.             terror += 1
  208.         elif i['rebels'].rstrip() == 'Guerrillas':
  209.             guerrilla += 1
  210.         elif i['rebels'].rstrip() == 'Open Rebellion':
  211.             rebellion += 1
  212.         elif i['rebels'].rstrip() == 'Civil War':
  213.             civil += 1
  214.     return norebels, terror, guerrilla, rebellion, civil
  215.    
  216. def econsystemlevels(alliance):
  217.     free = mixed = command = 0
  218.     for i in alliance:
  219.         if i['econsystem'].rstrip() == 'Free Market':
  220.             free += 1
  221.         elif i['econsystem'].rstrip() == 'Mixed Economy':
  222.             mixed += 1
  223.         elif i['econsystem'].rstrip() == 'Central Planning':
  224.             command += 1
  225.     return free, mixed, command
  226.    
  227. def qollevels(alliance):
  228.     developed = good = decent = above = average = poor = impov = desp = disast = crisis = 0
  229.     for i in alliance:
  230.         if i['qol'].rstrip() == 'Developed':
  231.             developed += 1
  232.         elif i['qol'].rstrip() == 'Good':
  233.             good += 1
  234.         elif i['qol'].rstrip() == 'Decent':
  235.             decent += 1
  236.         elif i['qol'].rstrip() == 'Above Average':
  237.             above += 1
  238.         elif i['qol'].rstrip() == 'Average':
  239.             average += 1
  240.         elif i['qol'].rstrip() == 'Poor':
  241.             poor += 1
  242.         elif i['qol'].rstrip() == 'Impoverished':
  243.             impov += 1
  244.         elif i['qol'].rstrip() == 'Desperate':
  245.             desp += 1
  246.         elif i['qol'].rstrip() == 'Disastrous':
  247.             disast += 1
  248.         else:
  249.             crisis += 1
  250.     return developed, good, decent, above, average, poor, impov, desp, disast, crisis
  251.    
  252. def alignlevels(alliance):
  253.     west = non = east = 0
  254.     for i in alliance:
  255.         if i['alignment'].rstrip() == 'United States':
  256.             west += 1
  257.         elif i['alignment'].rstrip() == 'Neutral':
  258.             non += 1
  259.         elif i['alignment'].rstrip() == 'Soviet Union':
  260.             east += 1
  261.     return west, non, east
  262.    
  263. def replevels(alliance):
  264.     gandhi = angelic = nice = good = normal = quest = isolated = pariah = maddog = aoe = 0
  265.     for i in alliance:
  266.         if i['reputation'].rstrip() == 'Gandhi-like':
  267.             gandhi += 1
  268.         elif i['reputation'].rstrip() == 'Angelic':
  269.             angelic += 1
  270.         elif i['reputation'].rstrip() == 'Nice':
  271.             nice += 1
  272.         elif i['reputation'].rstrip() == 'Good':
  273.             good += 1
  274.         elif i['reputation'].rstrip() == 'Normal':
  275.             normal += 1
  276.         elif i['reputation'].rstrip() == 'Questionable':
  277.             quest += 1
  278.         elif i['reputation'].rstrip() == 'Isolated':
  279.             isolated += 1
  280.         elif i['reputation'].rstrip() == 'Pariah':
  281.             pariah += 1
  282.         elif i['reputation'].rstrip() == 'Mad Dog':
  283.             maddog += 1
  284.         elif i['reputation'].rstrip() == 'Axis of Evil':
  285.             aoe += 1
  286.     return gandhi, angelic, nice, good, normal, quest, isolated, pariah, maddog, aoe
  287.  
  288. def regiontroops(alliance):
  289.     mam = car = gra = ama = sco = saf = con = eaf = gui = waf = atl = egy = ara = mpo = per = sub = chi = ind = ein = pac = 0
  290.     for i in alliance:
  291.         if i['region'].rstrip() == 'Mesoamerica':
  292.             mam += i['troops']
  293.         elif i['region'].rstrip() == 'Caribbean':
  294.             car += i['troops']
  295.         elif i['region'].rstrip() == 'Gran Colombia':
  296.             gra += i['troops']
  297.         elif i['region'].rstrip() == 'Amazonia':
  298.             ama += i['troops']
  299.         elif i['region'].rstrip() == 'Southern Cone':
  300.             sco += i['troops']
  301.         elif i['region'].rstrip() == 'Southern Africa':
  302.             saf += i['troops']
  303.         elif i['region'].rstrip() == 'Congo':
  304.             con += i['troops']
  305.         elif i['region'].rstrip() == 'East Africa':
  306.             eaf += i['troops']
  307.         elif i['region'].rstrip() == 'Guinea':
  308.             gui += i['troops']
  309.         elif i['region'].rstrip() == 'West Africa':
  310.             waf += i['troops']
  311.         elif i['region'].rstrip() == 'Atlas':
  312.             atl += i['troops']
  313.         elif i['region'].rstrip() == 'Egypt':
  314.             egy += i['troops']
  315.         elif i['region'].rstrip() == 'Arabia':
  316.             ara += i['troops']
  317.         elif i['region'].rstrip() == 'Mesopotamia':
  318.             mpo += i['troops']
  319.         elif i['region'].rstrip() == 'Persia':
  320.             per += i['troops']
  321.         elif i['region'].rstrip() == 'The Subcontinent':
  322.             sub += i['troops']
  323.         elif i['region'].rstrip() == 'China':
  324.             chi += i['troops']
  325.         elif i['region'].rstrip() == 'Indochina':
  326.             ind += i['troops']
  327.         elif i['region'].rstrip() == 'East Indies':
  328.             ein += i['troops']
  329.         elif i['region'].rstrip() == 'Pacific Rim':
  330.             pac += i['troops']
  331.     return mam, car, gra, ama, sco, saf, con, eaf, gui, waf, atl, egy, ara, mpo, per, sub, chi, ind, ein, pac
  332.  
  333. def getsoup(url):
  334.     while True:
  335.         try:
  336.             temp = br.open(url)
  337.         except:
  338.             print "Timeout, requesting again."
  339.         else:
  340.             break
  341.     html = temp.read()
  342.     soup = BS(html)
  343.     # print soup.prettify()
  344.     return soup
  345.  
  346. def getdata(soup):
  347.     data = {}
  348.     if soup.find(size="2").string == 'online now':
  349.         data['online'] = 0
  350.     else:
  351.         data['online'] = int(soup.find(size="2").string[12:-10])
  352.     data['name'] = soup.find(id="nationtitle").string
  353.     data['approval'] = soup.find(text='Approval:').parent.next_sibling.next_sibling.contents[0].string
  354.     data['polsystem'] = soup.find(text='Political System:').parent.next_sibling.next_sibling.contents[0].string
  355.     data['stability'] = soup.find(text='Stability:').parent.next_sibling.next_sibling.contents[0].string
  356.     data['qol'] = soup.find(text='Quality of Life:').parent.next_sibling.next_sibling.contents[0].string
  357.     data['territory'] = int(str(soup.find(text='Territory:').parent.next_sibling.next_sibling.contents)[4:-20])
  358.     data['rebels'] = soup.find(text='Rebel Threat:').parent.next_sibling.next_sibling.contents[0].string
  359.     data['econsystem'] = soup.find(text='Economic System:').parent.next_sibling.next_sibling.contents[0].string
  360.     if soup.find(text='Industry:').parent.next_sibling.next_sibling.contents[0].string == 'None':
  361.         data['factories'] = 0
  362.     elif soup.find(text='Industry:').parent.next_sibling.next_sibling.contents[0].string == '1 factory':
  363.         data['factories'] = 1
  364.     else:
  365.         data['factories'] = int(soup.find(text='Industry:').parent.next_sibling.next_sibling.contents[0].string[:-10])
  366.     data['gdp'] = int(soup.find(text='Gross Domestic Product:').parent.next_sibling.next_sibling.contents[0].string[1:-8])
  367.     data['growth'] = int(soup.find(text='Growth:').parent.next_sibling.next_sibling.contents[0].string[1:-18])
  368.     if soup.find(text='Discovered Oil Reserves:').parent.next_sibling.next_sibling.contents[0].string == 'None':
  369.         data['oilres'] = 0
  370.     else:
  371.         data['oilres'] = int(soup.find(text='Discovered Oil Reserves:').parent.next_sibling.next_sibling.contents[0].string[:-5])
  372.     if soup.find(text='Oil Production:').parent.next_sibling.next_sibling.contents[0].string == 'None':
  373.         data['oilprod'] = 0
  374.     else:
  375.         data['oilprod'] = int(soup.find(text='Oil Production:').parent.next_sibling.next_sibling.contents[0].string[:-15])
  376.     try:
  377.         data['rmprod'] = int(soup.find(text='Raw Material Production:').parent.next_sibling.next_sibling.contents[0].string[:-23])
  378.     except:
  379.         print "rm" + soup.find(text='Raw Material Production:').parent.next_sibling.next_sibling.contents[0].string
  380.     data['alignment'] = soup.find(text='Official Alignment:').parent.next_sibling.next_sibling.contents[0].string
  381.     data['region'] = soup.find(text='Region:').parent.next_sibling.next_sibling.contents[0].string
  382.     data['reputation'] = soup.find(text='Reputation:').parent.next_sibling.next_sibling.contents[0].string
  383.     try:
  384.         data['troops'] = int(soup.find(text='Army Size:').parent.next_sibling.next_sibling.contents[0].string[:-18])
  385.     except:
  386.         print 'tr' + soup.find(text='Army Size:').parent.next_sibling.next_sibling.contents[0].string
  387.     data['manpower'] = soup.find(text='Manpower:').parent.next_sibling.next_sibling.contents[0].string
  388.     data['equipment'] = soup.find(text='Equipment:').parent.next_sibling.next_sibling.contents[0].string
  389.     data['training'] = soup.find(text='Training:').parent.next_sibling.next_sibling.contents[0].string
  390.     data['airforce'] = soup.find(text='Airforce:').parent.next_sibling.next_sibling.contents[0].string
  391.     if soup.find(text='Wars:').parent.next_sibling.next_sibling.contents[0].string == 'At peace.':
  392.         data['wars'] = 'peace'
  393.     else:
  394.         data['wars'] = 'war'
  395.     if soup.find(text='Uranium:') == None:
  396.         data['uranium'] = 0
  397.     else:
  398.         data['uranium'] = int(soup.find(text='Uranium:').parent.next_sibling.next_sibling.contents[0].string[:-5])
  399.     return data
  400.  
  401.    
  402. # print "\nWhat is your username?"
  403. # username = str(raw_input("> "))
  404.  
  405. # print "\nWhat is your password?"
  406. # password = str(raw_input("> "))
  407.  
  408. # print "\nHow many pages of alliances do you want to capture? 10 per page. Suggested 2."
  409. # alliancepagesno = int(raw_input("> "))
  410. alliancepagesno = 2
  411.  
  412. print "\nLogging in..."
  413. while True:
  414.     try:
  415.         loginresponse = br.open('http://blocgame.com')
  416.     except:
  417.         print "Timeout, requesting again."
  418.     else:
  419.         break
  420. br.form = list(br.forms())[0]
  421. br["username"] = 'dashiell'
  422. br["password"] = '1db512a7'
  423. br.submit()
  424. print "Done."
  425.  
  426.  
  427. alliancelinks = []
  428. print "\nGetting alliance urls..."
  429. for i in range(1,1+alliancepagesno):
  430.     soup = getsoup('http://blocgame.com/alliancerankings.php?page=%s' % i)
  431.     for link in soup.find_all('a'):
  432.         if 'alliancestats.php?allianceid=' in str(link.get('href')):
  433.             alliancelinks.append(link.get('href'))
  434. print "Done."
  435.  
  436. j = 1
  437. names = []
  438. data = []
  439. for i in alliancelinks:
  440.     print "\nGathering data on alliance %s of %s..." % (j, len(alliancelinks))
  441.     alliance = []
  442.     nations = []
  443.  
  444.     soup = getsoup('http://blocgame.com/%s' % i)
  445.     names.append(soup.find('h1').string)
  446.  
  447.     for link in soup.find_all('a'):
  448.         if 'stats.php?id=' in str(link.get('href')):
  449.             nations.append(link.get('href'))
  450.  
  451.     for i in nations:
  452.         soup = getsoup('http://blocgame.com/%s' % i)
  453.         nationdata = getdata(soup)
  454.         nationdata['id'] = i[13:]
  455.         alliance.append(nationdata)
  456.  
  457.     data.append(alliance)
  458.     j += 1
  459.     print "Done."
  460.  
  461. print "\nOutputting to CSV... "
  462.  
  463. generaldata = []
  464. troopdata = []
  465. uraniumlist = []
  466. for alliance in data:
  467.     datad = {}
  468.     troopd = {}
  469.     gdp = growth = troops = factories = territory = rmprod = oilprod = oilres = uranium = inactive = 0
  470.     for nation in alliance:
  471.         gdp += nation['gdp']
  472.         growth += nation['growth']
  473.         troops += nation['troops']
  474.         factories += nation['factories']
  475.         rmprod += nation['rmprod']
  476.         oilprod += nation['oilprod']
  477.         oilres += nation['oilres']
  478.         uranium += nation['uranium']
  479.         inactive += nation['online']
  480.         if nation['uranium'] > 0:
  481.             uraniumlist.append({'name':nation['name'], 'id':nation['id'], 'uranium':uranium})
  482.  
  483.     datad['size'] = len(alliance)
  484.     datad['gdp'] = gdp
  485.     datad['avggdp'] = round(gdp/float(len(alliance)), 1)
  486.     datad['growth'] = growth
  487.     datad['avggrowth'] = round(growth/float(len(alliance)), 1)
  488.     datad['factories'] = factories
  489.     datad['avgfactories'] = round(factories/float(len(alliance)), 1)
  490.     datad['territory'] = territory
  491.     datad['avgterritory'] = round(territory/float(len(alliance)), 1)
  492.     datad['rmprod'] = rmprod
  493.     datad['avgrmprod'] = round(rmprod/float(len(alliance)), 1)
  494.     datad['oilprod'] = oilprod
  495.     datad['avgoilprod'] = round(oilprod/float(len(alliance)), 1)
  496.     datad['oilres'] = oilres
  497.     datad['avgoilres'] = round(oilres/float(len(alliance)), 1)
  498.     datad['inactive'] = inactive
  499.     datad['avginactive'] = round(inactive/float(len(alliance)), 1)
  500.     datad['uranium'] = uranium
  501.  
  502.     datad['advanced'], datad['persian'], datad['almost'], datad['vietnam'], datad['korean'], datad['second'], \
  503.         datad['first'], datad['finest'], datad['stone'] = techlevels(alliance)
  504.  
  505.     datad['vpowerful'], datad['powerful'], datad['large'], datad['somelarge'], datad['mediocre'], datad['meagre'], \
  506.         datad['small'], datad['noair'] = airforcelevels(alliance)
  507.  
  508.     datad['elite'], datad['good'], datad['standard'], datad['poortr'], datad['rabble'] = traininglevels(alliance)
  509.  
  510.     datad['mam'], datad['car'], datad['gra'], datad['ama'], datad['sco'], datad['saf'], datad['con'], datad['eaf'], \
  511.         datad['gui'], datad['waf'], datad['atl'], datad['egy'], datad['ara'], datad['mpo'], datad['per'], datad['sub'], \
  512.         datad['chi'], datad['ind'], datad['ein'], datad['pac'] = regionlevels(alliance)
  513.  
  514.     datad['untapped'], datad['plentiful'], datad['halved'], datad['low'], datad['neardep'], datad['depleted'] = manpowerlevels(alliance)
  515.  
  516.     datad['waag'], datad['adored'], datad['loved'], datad['liked'], datad['decent'], datad['middling'], datad['disliked'], \
  517.         datad['hated'], datad['despised'], datad['eop'] = approvallevels(alliance)
  518.  
  519.     datad['libdem'], datad['authdem'], datad['opr'], datad['junta'], datad['dictat'] = polsystemlevels(alliance)
  520.  
  521.     datad['unsink'], datad['entren'], datad['vstable'], datad['quiet'], datad['calm'], datad['tensions'], datad['chaotic'], \
  522.         datad['rioting'], datad['protests'], datad['collapse'] = stabilitylevels(alliance)
  523.  
  524.     datad['norebels'], datad['terror'], datad['guerrilla'], datad['rebellion'], datad['civil'] = rebelslevels(alliance)
  525.    
  526.     datad['free'], datad['mixed'], datad['command'] = econsystemlevels(alliance)
  527.  
  528.     datad['developed'], datad['good'], datad['decent'], datad['above'], datad['average'], datad['poorqol'], datad['impov'], \
  529.         datad['desp'], datad['disast'], datad['crisis'] = qollevels(alliance)
  530.  
  531.     datad['west'], datad['non'], datad['east'] = alignlevels(alliance)
  532.  
  533.     datad['gandhi'], datad['angelic'], datad['nice'], datad['good'], datad['normal'], datad['quest'], datad['isolated'], \
  534.         datad['pariah'], datad['maddog'], datad['aoe'] = replevels(alliance)
  535.  
  536.     troopd['troops'] = troops
  537.     troopd['avgtroops'] = round(troops/float(len(alliance)), 1)
  538.  
  539.     troopd['mam'], troopd['car'], troopd['gra'], troopd['ama'], troopd['sco'], troopd['saf'], troopd['con'], troopd['eaf'], \
  540.         troopd['gui'], troopd['waf'], troopd['atl'], troopd['egy'], troopd['ara'], troopd['mpo'], troopd['per'], troopd['sub'], \
  541.         troopd['chi'], troopd['ind'], troopd['ein'], troopd['pac'] = regiontroops(alliance)
  542.  
  543.     generaldata.append(datad)
  544.     troopdata.append(troopd)
  545.  
  546. with open('generaldata,%s.csv' % datetime.datetime.utcnow().strftime('%d-%m,%H-%M-%S'), 'w') as csvfile:
  547.     writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)
  548.     writer.writerow(['Name'] + [name for name in names])
  549.  
  550.     writer.writerow(['General'])
  551.     writer.writerow(['Size'] + [alliance['size'] for alliance in generaldata])
  552.     writer.writerow(['Total GDP'] + [alliance['gdp'] for alliance in generaldata])
  553.     writer.writerow(['Average GDP'] + [alliance['avggdp'] for alliance in generaldata])
  554.     writer.writerow(['Total growth'] + [alliance['growth'] for alliance in generaldata])
  555.     writer.writerow(['Average growth'] + [alliance['avggrowth'] for alliance in generaldata])
  556.     writer.writerow(['Total factories'] + [alliance['factories'] for alliance in generaldata])
  557.     writer.writerow(['Average factories'] + [alliance['avgfactories'] for alliance in generaldata])
  558.     writer.writerow(['Total RM production'] + [alliance['rmprod'] for alliance in generaldata])
  559.     writer.writerow(['Average RM production'] + [alliance['avgrmprod'] for alliance in generaldata])
  560.     writer.writerow(['Total oil production'] + [alliance['oilprod'] for alliance in generaldata])
  561.     writer.writerow(['Average oil production'] + [alliance['avgoilprod'] for alliance in generaldata])
  562.     writer.writerow(['Total oil reserves'] + [alliance['oilres'] for alliance in generaldata])
  563.     writer.writerow(['Average oil reserves'] + [alliance['avgoilres'] for alliance in generaldata])
  564.     writer.writerow(['Total territory'] + [alliance['territory'] for alliance in generaldata])
  565.     writer.writerow(['Average territory'] + [alliance['avgterritory'] for alliance in generaldata])
  566.     writer.writerow(['Total time inactive'] + [alliance['inactive'] for alliance in generaldata])
  567.     writer.writerow(['Average time inactive'] + [alliance['avginactive'] for alliance in generaldata])
  568.     writer.writerow(['Total uranium'] + [alliance['uranium'] for alliance in generaldata])
  569.  
  570.     writer.writerow(['Regions'])
  571.     writer.writerow(['Mesoamerica'] + [alliance['mam'] for alliance in generaldata])
  572.     writer.writerow(['Caribbean'] + [alliance['car'] for alliance in generaldata])
  573.     writer.writerow(['Gran Colombia'] + [alliance['gra'] for alliance in generaldata])
  574.     writer.writerow(['Amazonia'] + [alliance['ama'] for alliance in generaldata])
  575.     writer.writerow(['Southern Cone'] + [alliance['sco'] for alliance in generaldata])
  576.     writer.writerow(['Southern Africa'] + [alliance['saf'] for alliance in generaldata])
  577.     writer.writerow(['Congo'] + [alliance['con'] for alliance in generaldata])
  578.     writer.writerow(['East Africa'] + [alliance['eaf'] for alliance in generaldata])
  579.     writer.writerow(['Guinea'] + [alliance['gui'] for alliance in generaldata])
  580.     writer.writerow(['West Africa'] + [alliance['waf'] for alliance in generaldata])
  581.     writer.writerow(['Atlas'] + [alliance['atl'] for alliance in generaldata])
  582.     writer.writerow(['Egypt'] + [alliance['egy'] for alliance in generaldata])
  583.     writer.writerow(['Arabia'] + [alliance['ara'] for alliance in generaldata])
  584.     writer.writerow(['Mesopotamia'] + [alliance['mpo'] for alliance in generaldata])
  585.     writer.writerow(['Persia'] + [alliance['per'] for alliance in generaldata])
  586.     writer.writerow(['The Subcontinent'] + [alliance['sub'] for alliance in generaldata])
  587.     writer.writerow(['China'] + [alliance['chi'] for alliance in generaldata])
  588.     writer.writerow(['Indochina'] + [alliance['ind'] for alliance in generaldata])
  589.     writer.writerow(['East Indies'] + [alliance['ein'] for alliance in generaldata])
  590.     writer.writerow(['Pacific Rim'] + [alliance['pac'] for alliance in generaldata])
  591.  
  592.     writer.writerow(['Alignments'])
  593.     writer.writerow(['West'] + [alliance['west'] for alliance in generaldata])
  594.     writer.writerow(['Neutral'] + [alliance['non'] for alliance in generaldata])
  595.     writer.writerow(['East'] + [alliance['east'] for alliance in generaldata])
  596.  
  597.     writer.writerow(['Political Systems'])
  598.     writer.writerow(['Liberal Democracy'] + [alliance['libdem'] for alliance in generaldata])
  599.     writer.writerow(['Authoritarian Democracy'] + [alliance['authdem'] for alliance in generaldata])
  600.     writer.writerow(['One Party Rule'] + [alliance['opr'] for alliance in generaldata])
  601.     writer.writerow(['Military Junta'] + [alliance['junta'] for alliance in generaldata])
  602.     writer.writerow(['Dictatorship'] + [alliance['dictat'] for alliance in generaldata])
  603.  
  604.     writer.writerow(['Economics Systems'])
  605.     writer.writerow(['Free Market'] + [alliance['free'] for alliance in generaldata])
  606.     writer.writerow(['Mixed Economy'] + [alliance['mixed'] for alliance in generaldata])
  607.     writer.writerow(['Central Planning'] + [alliance['command'] for alliance in generaldata])
  608.  
  609.     writer.writerow(['Approvals'])
  610.     writer.writerow(['Worshiped as a God'] + [alliance['waag'] for alliance in generaldata])
  611.     writer.writerow(['Adored'] + [alliance['adored'] for alliance in generaldata])
  612.     writer.writerow(['Loved'] + [alliance['loved'] for alliance in generaldata])
  613.     writer.writerow(['Liked'] + [alliance['liked'] for alliance in generaldata])
  614.     writer.writerow(['Decent'] + [alliance['decent'] for alliance in generaldata])
  615.     writer.writerow(['Middling'] + [alliance['middling'] for alliance in generaldata])
  616.     writer.writerow(['Disliked'] + [alliance['disliked'] for alliance in generaldata])
  617.     writer.writerow(['Hated'] + [alliance['hated'] for alliance in generaldata])
  618.     writer.writerow(['Despised'] + [alliance['despised'] for alliance in generaldata])
  619.     writer.writerow(['Enemy of the People'] + [alliance['eop'] for alliance in generaldata])
  620.  
  621.     writer.writerow(['Stabilities'])
  622.     writer.writerow(['Unsinkable'] + [alliance['unsink'] for alliance in generaldata])
  623.     writer.writerow(['Entrenched'] + [alliance['entren'] for alliance in generaldata])
  624.     writer.writerow(['Very Stable'] + [alliance['vstable'] for alliance in generaldata])
  625.     writer.writerow(['Quiet'] + [alliance['quiet'] for alliance in generaldata])
  626.     writer.writerow(['Calm'] + [alliance['calm'] for alliance in generaldata])
  627.     writer.writerow(['Growing Tensions'] + [alliance['tensions'] for alliance in generaldata])
  628.     writer.writerow(['Chaotic'] + [alliance['chaotic'] for alliance in generaldata])
  629.     writer.writerow(['Rioting'] + [alliance['rioting'] for alliance in generaldata])
  630.     writer.writerow(['Mass Protests'] + [alliance['protests'] for alliance in generaldata])
  631.     writer.writerow(['Brink of Collapse'] + [alliance['collapse'] for alliance in generaldata])
  632.  
  633.     writer.writerow(['Rebels'])
  634.     writer.writerow(['None'] + [alliance['norebels'] for alliance in generaldata])
  635.     writer.writerow(['Scattered Terrorists'] + [alliance['terror'] for alliance in generaldata])
  636.     writer.writerow(['Guerrillas'] + [alliance['guerrilla'] for alliance in generaldata])
  637.     writer.writerow(['Open Rebellion'] + [alliance['rebellion'] for alliance in generaldata])
  638.     writer.writerow(['Civil War'] + [alliance['civil'] for alliance in generaldata])
  639.  
  640.     writer.writerow(['Qualities of Life'])
  641.     writer.writerow(['Developed'] + [alliance['developed'] for alliance in generaldata])
  642.     writer.writerow(['Good'] + [alliance['good'] for alliance in generaldata])
  643.     writer.writerow(['Decent'] + [alliance['decent'] for alliance in generaldata])
  644.     writer.writerow(['Above Average'] + [alliance['above'] for alliance in generaldata])
  645.     writer.writerow(['Average'] + [alliance['average'] for alliance in generaldata])
  646.     writer.writerow(['Poor'] + [alliance['poorqol'] for alliance in generaldata])
  647.     writer.writerow(['Impoverished'] + [alliance['impov'] for alliance in generaldata])
  648.     writer.writerow(['Desperate'] + [alliance['desp'] for alliance in generaldata])
  649.     writer.writerow(['Disastrous'] + [alliance['disast'] for alliance in generaldata])
  650.     writer.writerow(['Humanitarian Crisis'] + [alliance['crisis'] for alliance in generaldata])
  651.  
  652.     writer.writerow(['Reputations'])
  653.     writer.writerow(['Gandhi-Like'] + [alliance['gandhi'] for alliance in generaldata])
  654.     writer.writerow(['Angelic'] + [alliance['angelic'] for alliance in generaldata])
  655.     writer.writerow(['Nice'] + [alliance['nice'] for alliance in generaldata])
  656.     writer.writerow(['Good'] + [alliance['good'] for alliance in generaldata])
  657.     writer.writerow(['Normal'] + [alliance['normal'] for alliance in generaldata])
  658.     writer.writerow(['Questionable'] + [alliance['quest'] for alliance in generaldata])
  659.     writer.writerow(['Isolated'] + [alliance['isolated'] for alliance in generaldata])
  660.     writer.writerow(['Pariah'] + [alliance['pariah'] for alliance in generaldata])
  661.     writer.writerow(['Mad Dog'] + [alliance['maddog'] for alliance in generaldata])
  662.     writer.writerow(['Axis of Evil'] + [alliance['aoe'] for alliance in generaldata])
  663.  
  664.     writer.writerow(['Tech Levels'])
  665.     writer.writerow(['Advanced'] + [alliance['advanced'] for alliance in generaldata])
  666.     writer.writerow(['Persian'] + [alliance['persian'] for alliance in generaldata])
  667.     writer.writerow(['Almost Modern'] + [alliance['almost'] for alliance in generaldata])
  668.     writer.writerow(['Vietnam'] + [alliance['vietnam'] for alliance in generaldata])
  669.     writer.writerow(['Korean'] + [alliance['korean'] for alliance in generaldata])
  670.     writer.writerow(['World War II'] + [alliance['second'] for alliance in generaldata])
  671.     writer.writerow(['World War I'] + [alliance['first'] for alliance in generaldata])
  672.     writer.writerow(['19th Century'] + [alliance['finest'] for alliance in generaldata])
  673.     writer.writerow(['Stone Age'] + [alliance['stone'] for alliance in generaldata])
  674.  
  675.     writer.writerow(['Airforces'])
  676.     writer.writerow(['Very Powerful'] + [alliance['vpowerful'] for alliance in generaldata])
  677.     writer.writerow(['Powerful'] + [alliance['powerful'] for alliance in generaldata])
  678.     writer.writerow(['Large'] + [alliance['large'] for alliance in generaldata])
  679.     writer.writerow(['Somewhat Large'] + [alliance['somelarge'] for alliance in generaldata])
  680.     writer.writerow(['Mediocre'] + [alliance['mediocre'] for alliance in generaldata])
  681.     writer.writerow(['Meagre'] + [alliance['meagre'] for alliance in generaldata])
  682.     writer.writerow(['Small'] + [alliance['small'] for alliance in generaldata])
  683.     writer.writerow(['None'] + [alliance['noair'] for alliance in generaldata])
  684.  
  685.     writer.writerow(['Training Levels'])
  686.     writer.writerow(['Elite'] + [alliance['elite'] for alliance in generaldata])
  687.     writer.writerow(['Good'] + [alliance['good'] for alliance in generaldata])
  688.     writer.writerow(['Standard'] + [alliance['standard'] for alliance in generaldata])
  689.     writer.writerow(['Poor'] + [alliance['poortr'] for alliance in generaldata])
  690.     writer.writerow(['Rabble'] + [alliance['rabble'] for alliance in generaldata])
  691.  
  692.     writer.writerow(['Manpower Levels'])
  693.     writer.writerow(['Untapped'] + [alliance['untapped'] for alliance in generaldata])
  694.     writer.writerow(['Plentiful'] + [alliance['plentiful'] for alliance in generaldata])
  695.     writer.writerow(['Halved'] + [alliance['halved'] for alliance in generaldata])
  696.     writer.writerow(['Low'] + [alliance['low'] for alliance in generaldata])
  697.     writer.writerow(['Near Depletion'] + [alliance['neardep'] for alliance in generaldata])
  698.     writer.writerow(['Depleted'] + [alliance['depleted'] for alliance in generaldata])
  699.  
  700. with open('troopdata,%s.csv' % datetime.datetime.utcnow().strftime('%d-%m,%H-%M-%S'), 'w') as csvfile:
  701.     writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)
  702.     writer.writerow(['Name'] + [name for name in names])
  703.  
  704.     writer.writerow(['Total troops'] + [alliance['troops'] for alliance in troopdata])
  705.     writer.writerow(['Average troops'] + [alliance['avgtroops'] for alliance in troopdata])
  706.  
  707.     writer.writerow(['Regions'])
  708.     writer.writerow(['Mesoamerica'] + [alliance['mam'] for alliance in troopdata])
  709.     writer.writerow(['Caribbean'] + [alliance['car'] for alliance in troopdata])
  710.     writer.writerow(['Gran Colombia'] + [alliance['gra'] for alliance in troopdata])
  711.     writer.writerow(['Amazonia'] + [alliance['ama'] for alliance in troopdata])
  712.     writer.writerow(['Southern Cone'] + [alliance['sco'] for alliance in troopdata])
  713.     writer.writerow(['Southern Africa'] + [alliance['saf'] for alliance in troopdata])
  714.     writer.writerow(['Congo'] + [alliance['con'] for alliance in troopdata])
  715.     writer.writerow(['East Africa'] + [alliance['eaf'] for alliance in troopdata])
  716.     writer.writerow(['Guinea'] + [alliance['gui'] for alliance in troopdata])
  717.     writer.writerow(['West Africa'] + [alliance['waf'] for alliance in troopdata])
  718.     writer.writerow(['Atlas'] + [alliance['atl'] for alliance in troopdata])
  719.     writer.writerow(['Egypt'] + [alliance['egy'] for alliance in troopdata])
  720.     writer.writerow(['Arabia'] + [alliance['ara'] for alliance in troopdata])
  721.     writer.writerow(['Mesopotamia'] + [alliance['mpo'] for alliance in troopdata])
  722.     writer.writerow(['Persia'] + [alliance['per'] for alliance in troopdata])
  723.     writer.writerow(['The Subcontinent'] + [alliance['sub'] for alliance in troopdata])
  724.     writer.writerow(['China'] + [alliance['chi'] for alliance in troopdata])
  725.     writer.writerow(['Indochina'] + [alliance['ind'] for alliance in troopdata])
  726.     writer.writerow(['East Indies'] + [alliance['ein'] for alliance in troopdata])
  727.     writer.writerow(['Pacific Rim'] + [alliance['pac'] for alliance in troopdata])
  728.  
  729. with open('uraniumdata,%s.csv' % datetime.datetime.utcnow().strftime('%d-%m,%H-%M-%S'), 'w') as csvfile:
  730.     writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)
  731.  
  732.     writer.writerow(['Name'] + [nation['name'] for nation in uraniumlist])
  733.     writer.writerow(['ID'] + [nation['id'] for nation in uraniumlist])
  734.     writer.writerow(['Uranium'] + [nation['uranium'] for nation in uraniumlist])
  735.  
  736. print "Done."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement