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
|