annotate V4/runme.py @ 15:50a95089414d

updating to allow for all aspects to be calculated, and remove default value passing for people.
author DaveM
date Sun, 04 Mar 2018 17:09:50 +0000
parents a0c217ee4168
children b11cff4b7f83
rev   line source
DaveM@13 1 #!/usr/bin/env python
DaveM@15 2
DaveM@15 3
DaveM@13 4 import dParse as dp
DaveM@13 5 import synastry as syn
DaveM@13 6 import requests
DaveM@13 7 import time
DaveM@13 8 import csv
DaveM@13 9 import pdb
DaveM@13 10 import os
DaveM@13 11 import pickle
DaveM@15 12 import sys
DaveM@13 13 from bs4 import BeautifulSoup
DaveM@13 14
DaveM@14 15 def parsePage(resp):
DaveM@15 16 gotLocation = 0
DaveM@13 17 horiscope = syn.planetPositions()
DaveM@13 18 soup = BeautifulSoup(resp.content, 'lxml')
DaveM@13 19 tcCell = soup.find_all('div', attrs={'class':'right-sedy-banner-svetlejsi'})
DaveM@13 20 for cell in tcCell:
DaveM@15 21 if "Planets in partner's house" in cell.get_text():
DaveM@15 22 gotLocation = 1
DaveM@13 23 divList = cell.find_all('div')
DaveM@13 24 for i in range(len(divList)):
DaveM@15 25 planetName = divList[i].getText().lower().strip().replace(':','').split(' ')[0]
DaveM@15 26 if planetName in syn.planetPositions.planetNames:
DaveM@15 27 if gotLocation and not '/' in planetName:
DaveM@15 28 horiscope.planets[planetName].setHouse(divList[i+2].getText(),divList[i+4].getText())
DaveM@15 29 else:
DaveM@15 30 horiscope.planets[planetName].setLocation(divList[i+2].getText(),divList[i+4].getText())
DaveM@14 31 return horiscope
DaveM@13 32
DaveM@13 33 def makePeople(filename):
DaveM@13 34 stream = csv.DictReader(open(filename,'rb'))
DaveM@13 35 dictList = []
DaveM@13 36 people = []
DaveM@13 37 for line in stream:
DaveM@13 38 thisPerson = syn.Person(dp.regulateData(line))
DaveM@13 39 people.append(thisPerson)
DaveM@13 40 # pdb.set_trace()
DaveM@13 41 return people
DaveM@13 42
DaveM@13 43 def requestURL(url,payload):
DaveM@13 44 r = requests.get(url, params=payload)
DaveM@13 45 time.sleep(5)
DaveM@13 46 return r
DaveM@13 47
DaveM@13 48 def loadPick(filename):
DaveM@13 49 with open(filename, 'rb') as handle:
DaveM@13 50 b = pickle.load(handle)
DaveM@13 51 return b
DaveM@13 52
DaveM@13 53 def savePick(filename,data):
DaveM@13 54 with open(filename, 'wb') as handle:
DaveM@13 55 pickle.dump(data,handle)
DaveM@13 56
DaveM@13 57 def parseHoriscope(people,saveFile):
DaveM@13 58 horiscopeList = []
DaveM@13 59 for person in people:
DaveM@15 60 issue = person.identifyIssues()
DaveM@15 61 if issue is not None:
DaveM@15 62 print 'SKIPPING person '+ person.id + ' error with ' + issue
DaveM@13 63 else:
DaveM@13 64 print 'parsing person '+ person.id
DaveM@15 65 person.makePayload()
DaveM@15 66 person.resp = requestURL(person.url,person.payload)
DaveM@15 67 person.horiscope = parsePage(person.resp)
DaveM@15 68 # person.horiscope.printPositions()
DaveM@15 69 if saveFile is not None:
DaveM@15 70 savePick(saveFile,people)
DaveM@13 71
DaveM@13 72 def testMain():
DaveM@15 73 restartDataFile = 1
DaveM@15 74 if(restartDataFile):
DaveM@15 75 pickFile = 'outData.pick'
DaveM@15 76 # people = makePeople('individuals.csv')
DaveM@15 77 # savePick(pickFile,people)
DaveM@15 78 people = loadPick(pickFile)
DaveM@15 79 parseSaveFile = pickFile.split('.')[0]+'_collect.pick'
DaveM@15 80 parseHoriscope(people,parseSaveFile)
DaveM@15 81 else:
DaveM@15 82 people = loadPick('onlineDatacollect.pick')
DaveM@15 83 for p in people:
DaveM@15 84 if p.horiscope is None:
DaveM@15 85 print p.id
DaveM@15 86 else:
DaveM@15 87 p.horiscope.calcAllAspects()
DaveM@15 88
DaveM@13 89 # horiscopeData = presentResults(parseSaveFile)
DaveM@13 90 # comRules = comp.parseCompatDef('compatibilityRules.csv')
DaveM@13 91 # applyCompatScore(horiscopeData,rules)
DaveM@13 92
DaveM@13 93 def _main():
DaveM@13 94 pickFile = 'outData.pick'
DaveM@13 95 # people = dict()
DaveM@13 96 if not os.path.exists(pickFile):
DaveM@13 97 print 'reParse file'
DaveM@13 98 people = makePeople('individuals.csv')
DaveM@13 99 savePick(pickFile,people)
DaveM@13 100 else:
DaveM@13 101 print 'read in ' + pickFile
DaveM@13 102 people = loadPick(pickFile)
DaveM@13 103 parseSaveFile = pickFile.split('.')[0]+'_collect.pick'
DaveM@13 104 parseHoriscope(people,parseSaveFile)
DaveM@13 105 horiscopeData = presentResults(parseSaveFile)
DaveM@13 106 comRules = comp.parseCompatDef('compatibilityRules.csv')
DaveM@13 107 applyCompatScore(horiscopeData,rules)
DaveM@13 108
DaveM@13 109 if __name__ == "__main__":
DaveM@13 110 testMain()