annotate V4/synastry.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 b253748dbb11
children b11cff4b7f83
rev   line source
DaveM@13 1 import random
DaveM@13 2
DaveM@13 3 class Person:
DaveM@13 4 url = 'https://horoscopes.astro-seek.com/calculate-love-compatibility/'
DaveM@13 5 def __init__(self,personDict):
DaveM@13 6 # self. = planetPositions()
DaveM@13 7 self.id = personDict['ID']
DaveM@13 8 self.dob = personDict['DOB']
DaveM@13 9 self.tob = personDict['TOB']
DaveM@13 10 self.cob = personDict['COB']
DaveM@13 11 self.p_dob = personDict['pDOB']
DaveM@13 12 self.p_tob = personDict['pTOB']
DaveM@13 13 self.p_cob = personDict['pCOB']
DaveM@13 14 self.horiscope = None
DaveM@13 15
DaveM@15 16 def identifyIssues(self):
DaveM@15 17 if self.id is None:
DaveM@15 18 return 'id'
DaveM@15 19 elif self.dob is None:
DaveM@15 20 return 'dob'
DaveM@15 21 elif self.tob is None:
DaveM@15 22 return 'tob'
DaveM@15 23 elif self.cob is None:
DaveM@15 24 return 'cob'
DaveM@15 25 elif self.p_dob is None:
DaveM@15 26 return 'p_dob'
DaveM@15 27 elif self.p_tob is None:
DaveM@15 28 return 'p_tob'
DaveM@15 29 elif self.p_cob is None:
DaveM@15 30 return 'p_cob'
DaveM@15 31 else:
DaveM@15 32 return None
DaveM@15 33
DaveM@13 34 def makePayload(self):
DaveM@13 35 if type(self.cob) is str:
DaveM@13 36 cob_0 = float(self.cob.split(',')[0][1:])
DaveM@13 37 cob_1 = float(self.cob.split(',')[1])
DaveM@13 38 self.cob = (cob_0,cob_1)
DaveM@13 39 if type(self.p_cob) is str:
DaveM@13 40 pcob_0 = float(self.p_cob.split(',')[0][1:])
DaveM@13 41 pcob_1 = float(self.p_cob.split(',')[1])
DaveM@13 42 self.p_cob = (pcob_0,pcob_1)
DaveM@13 43 if type(self.dob) is str:
DaveM@13 44 self.dob = self.dob[1:-1].split(',')
DaveM@13 45 if type(self.p_dob) is str:
DaveM@13 46 self.p_dob = self.p_dob[1:-1].split(',')
DaveM@13 47 if type(self.tob) is str:
DaveM@13 48 self.tob = self.tob[1:-1].split(',')
DaveM@13 49 if type(self.p_tob) is str:
DaveM@13 50 self.p_tob = self.p_tob[1:-1].split(',')
DaveM@13 51 # pdb.set_trace()
DaveM@13 52
DaveM@13 53 # print dataDict['pDOB']
DaveM@13 54
DaveM@13 55 self.payload = {'send_calculation':'1', #Req
DaveM@13 56 'muz_narozeni_den':self.dob[0],
DaveM@13 57 'muz_narozeni_mesic':self.dob[1],
DaveM@13 58 'muz_narozeni_rok':self.dob[2],
DaveM@13 59 'muz_narozeni_hodina':self.tob[0],
DaveM@13 60 'muz_narozeni_minuta':self.tob[1],
DaveM@13 61 'muz_narozeni_city':'',
DaveM@13 62 'muz_narozeni_mesto_hidden':'Manually+place%3A+%C2%B0%27N%2C+%C2%B0%27E',#auto
DaveM@13 63 'muz_narozeni_stat_hidden':'XX',
DaveM@13 64 'muz_narozeni_podstat_kratky_hidden':'',
DaveM@13 65 'muz_narozeni_podstat_hidden':'',
DaveM@13 66 'muz_narozeni_podstat2_kratky_hidden':'',
DaveM@13 67 'muz_narozeni_podstat3_kratky_hidden':'',
DaveM@13 68 'muz_narozeni_input_hidden':'',
DaveM@13 69 'muz_narozeni_sirka_stupne':str(abs(self.cob[0])).split('.')[0],
DaveM@13 70 'muz_narozeni_sirka_minuty':str(float('0.'+str(self.cob[0]).split('.')[1])*60).split('.')[0],
DaveM@13 71 'muz_narozeni_sirka_smer': '1' if self.cob[0]<0 else '0', #address N Dir (0':'N',1':'S)
DaveM@13 72 'muz_narozeni_delka_stupne':str(abs(self.cob[1])).split('.')[0], #address E - Main
DaveM@13 73 'muz_narozeni_delka_minuty':str(float('0.'+str(self.cob[1]).split('.')[1])*60).split('.')[0],
DaveM@13 74 'muz_narozeni_delka_smer': '1' if self.cob[1]<0 else '0', #address E Dir (0':'E',1':'W)
DaveM@13 75 'muz_narozeni_timezone_form':'auto',
DaveM@13 76 'muz_narozeni_timezone_dst_form':'auto',
DaveM@13 77 'send_calculation':'1',
DaveM@13 78 'zena_narozeni_den':self.p_dob[0],
DaveM@13 79 'zena_narozeni_mesic':self.p_dob[1],
DaveM@13 80 'zena_narozeni_rok':self.p_dob[2],
DaveM@13 81 'zena_narozeni_hodina':self.p_tob[0],
DaveM@13 82 'zena_narozeni_minuta':self.p_tob[1],
DaveM@13 83 'zena_narozeni_city':'',
DaveM@13 84 'zena_narozeni_mesto_hidden':'Manually+place%3A+%C2%B0%27N%2C+%C2%B0%27E',
DaveM@13 85 'zena_narozeni_stat_hidden':'XX',
DaveM@13 86 'zena_narozeni_podstat_kratky_hidden':'',
DaveM@13 87 'zena_narozeni_podstat_hidden':'',
DaveM@13 88 'zena_narozeni_podstat2_kratky_hidden':'',
DaveM@13 89 'zena_narozeni_podstat3_kratky_hidden':'',
DaveM@13 90 'zena_narozeni_input_hidden':'',
DaveM@13 91 'zena_narozeni_sirka_stupne':str(abs(self.p_cob[0])).split('.')[0],
DaveM@13 92 'zena_narozeni_sirka_minuty':str(float('0.'+str(self.p_cob[0]).split('.')[1])*60).split('.')[0],
DaveM@13 93 'zena_narozeni_sirka_smer': '1' if self.p_cob[0]<0 else '0',
DaveM@13 94 'zena_narozeni_delka_stupne':str(abs(self.p_cob[1])).split('.')[0],
DaveM@13 95 'zena_narozeni_delka_minuty':str(float('0.'+str(self.p_cob[1]).split('.')[1])*60).split('.')[0],
DaveM@13 96 'zena_narozeni_delka_smer': '1' if self.p_cob[1]<0 else '0',
DaveM@13 97 'zena_narozeni_timezone_form':'auto',
DaveM@13 98 'zena_narozeni_timezone_dst_form':'auto',
DaveM@13 99 'switch_interpretations':'0',
DaveM@13 100 'house_system':'placidus',
DaveM@13 101 'uhel_orbis':'#tabs_redraw'}
DaveM@13 102
DaveM@13 103
DaveM@13 104 class planetRelation:
DaveM@15 105 noHouseList = ['asc','ic','dsc','mc','asc/mc','sun/moon']
DaveM@13 106 def __init__(self,planetName):
DaveM@13 107 self.name = planetName
DaveM@13 108 self.angleA = None
DaveM@13 109 self.angleB = None
DaveM@15 110 if planetName not in planetRelation.noHouseList:
DaveM@15 111 self.houseA = None
DaveM@15 112 self.houseB = None
DaveM@13 113
DaveM@13 114 def setLocation(self,A,B):
DaveM@15 115 self.angleA = float('.'.join(A.encode('ascii','replace').split('?'))[:-1])
DaveM@15 116 self.angleB = float('.'.join(B.encode('ascii','replace').split('?'))[:-1])
DaveM@15 117 # print self.angleA,self.angleB
DaveM@13 118
DaveM@15 119 def setHouse(self,A,B):
DaveM@15 120 self.houseA = int(A.encode('ascii','ignore'))
DaveM@15 121 self.houseB = int(B.encode('ascii','ignore'))
DaveM@15 122 # print self.houseA,self.houseB
DaveM@13 123
DaveM@13 124 def test_random(self):
DaveM@13 125 self.angleA = random.random()*360
DaveM@13 126 self.angleB = random.random()*360
DaveM@13 127
DaveM@13 128
DaveM@13 129 class planetPositions:
DaveM@15 130 aspectDict = {'conjunction':0,'semi-square':45,'sextile':60,'square':90,'trine':120,'opposite':180}
DaveM@15 131 planetNames = ['sun','moon','mercury','venus','mars','jupiter','saturn','uranus','neptune','pluto','node','lilith','chiron','asc','ic','dsc','mc','asc/mc','sun/moon']
DaveM@13 132 def __init__(self):
DaveM@13 133 self.planets = {}
DaveM@15 134 for p in planetPositions.planetNames:
DaveM@15 135 self.planets[p] = planetRelation(p)
DaveM@13 136 self.aspect = {}
DaveM@13 137
DaveM@13 138 def test_random(self):
DaveM@13 139 for planet in self.planets:
DaveM@13 140 self.planets[planet].test_random()
DaveM@13 141
DaveM@13 142 def calcAngle(self,componentA,componentB):
DaveM@13 143 self.angle = max(self.planets[componentA].angleA,self.planets[componentB].angleB) - min(self.planets[componentA].angleA,self.planets[componentB].angleB)
DaveM@13 144 self.angleRange = self.angle-10,self.angle+10
DaveM@13 145
DaveM@13 146 def calcAspect(self,componentA,componentB):
DaveM@13 147 self.calcAngle(componentA,componentB)
DaveM@13 148 for aspect in planetPositions.aspectDict:
DaveM@13 149 if self.angleRange[0] < planetPositions.aspectDict[aspect] and self.angleRange[1] > planetPositions.aspectDict[aspect]:
DaveM@13 150 self.aspect[componentA,componentB] = aspect
DaveM@15 151 self.aspectDiff = abs(self.angle - planetPositions.aspectDict[aspect])
DaveM@15 152 return self.aspect,self.aspectDiff
DaveM@13 153
DaveM@15 154 def calcAllAspects(self):
DaveM@15 155 for p1 in planetPositions.planetNames:
DaveM@15 156 for p2 in planetPositions.planetNames:
DaveM@15 157 self.calcAspect(p1,p2)
DaveM@13 158
DaveM@15 159 def printPositions(self):
DaveM@15 160 for p in planetPositions.planetNames:
DaveM@15 161 if p in planetRelation.noHouseList:
DaveM@15 162 print p,self.planets[p].angleA,self.planets[p].angleB
DaveM@15 163 else:
DaveM@15 164 print p,self.planets[p].angleA,self.planets[p].angleB,self.planets[p].houseA,self.planets[p].houseB
DaveM@13 165
DaveM@13 166
DaveM@13 167
DaveM@13 168
DaveM@13 169