calculate distance (in km) between slut and you

This commit is contained in:
Romain Bignon 2011-09-27 11:32:24 +02:00
commit cd8e232da8
2 changed files with 29 additions and 2 deletions

View file

@ -18,6 +18,7 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>. # along with weboob. If not, see <http://www.gnu.org/licenses/>.
import math
import re import re
import datetime import datetime
import random import random
@ -44,6 +45,7 @@ class AuMBrowser(BaseBrowser):
my_sex = 0 my_sex = 0
my_id = 0 my_id = 0
my_name = u'' my_name = u''
my_coords = (0,0)
def id2url(self, id): def id2url(self, id):
return 'http://www.adopteunmec.com/%s' % id return 'http://www.adopteunmec.com/%s' % id
@ -85,6 +87,7 @@ class AuMBrowser(BaseBrowser):
self.my_sex = r['result']['me']['sex'] self.my_sex = r['result']['me']['sex']
self.my_id = int(r['result']['me']['id']) self.my_id = int(r['result']['me']['id'])
self.my_name = r['result']['me']['pseudo'] self.my_name = r['result']['me']['pseudo']
self.my_coords = (float(r['result']['me']['lat']), float(r['result']['me']['lng']))
return r return r
#def register(self, password, sex, birthday_d, birthday_m, birthday_y, zipcode, country, godfather=None): #def register(self, password, sex, birthday_d, birthday_m, birthday_y, zipcode, country, godfather=None):
@ -236,6 +239,23 @@ class AuMBrowser(BaseBrowser):
def get_profile(self, id, with_pics=True): def get_profile(self, id, with_pics=True):
r = self.api_request('member', 'view', data={'id': id}) r = self.api_request('member', 'view', data={'id': id})
profile = r['result']['member'] profile = r['result']['member']
coords = (float(profile['lat']), float(profile['lng']))
R = 6371
lat1 = math.radians(self.my_coords[0])
lat2 = math.radians(coords[0])
lon1 = math.radians(self.my_coords[1])
lon2 = math.radians(coords[1])
dLat = lat2 - lat1
dLong = lon2 - lon1
var1= dLong/2
var2= dLat/2
a= pow(math.sin(dLat/2), 2) + math.cos(lat1) * math.cos(lat2) * pow(math.sin(dLong/2), 2)
c= 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
profile['dist'] = R * c
if with_pics: if with_pics:
r = self.api_request('member', 'pictures', data={'id': id}) r = self.api_request('member', 'pictures', data={'id': id})
profile['pictures'] = [] profile['pictures'] = []

View file

@ -42,6 +42,10 @@ class FieldBool(FieldBase):
def get_value(self, profile, consts): def get_value(self, profile, consts):
return bool(int(profile[self.key])) return bool(int(profile[self.key]))
class FieldDist(FieldBase):
def get_value(self, profile, consts):
return '%.2f km' % float(profile[self.key])
class FieldIP(FieldBase): class FieldIP(FieldBase):
def get_hostname(self, s): def get_hostname(self, s):
try: try:
@ -141,6 +145,7 @@ class Contact(_Contact):
('birthday', FieldStr('birthday')), ('birthday', FieldStr('birthday')),
('zipcode', FieldStr('zip')), ('zipcode', FieldStr('zip')),
('location', FieldStr('city')), ('location', FieldStr('city')),
('distance', FieldDist('dist')),
('country', FieldStr('country')), ('country', FieldStr('country')),
('eyes', FieldList('eyes')), ('eyes', FieldList('eyes')),
('hair_color', FieldList('hair_color')), ('hair_color', FieldList('hair_color')),
@ -185,12 +190,14 @@ class Contact(_Contact):
if int(profile['cat']) == 1: if int(profile['cat']) == 1:
self.status = Contact.STATUS_ONLINE self.status = Contact.STATUS_ONLINE
self.status_msg = u'online' self.status_msg = u'online'
self.status_msg = u'since %s' % profile['last_cnx']
elif int(profile['cat']) == 2: elif int(profile['cat']) == 2:
self.status = Contact.STATUS_AWAY self.status = Contact.STATUS_AWAY
self.status_msg = u'away' self.status_msg = u'away'
self.status_msg = u'connection at %s' % profile['last_cnx']
elif int(profile['cat']) == 3: elif int(profile['cat']) == 3:
self.status = Contact.STATUS_OFFLINE self.status = Contact.STATUS_OFFLINE
self.status_msg = u'last connexion %s' % profile['last_cnx'] self.status_msg = u'last connection %s' % profile['last_cnx']
self.summary = html2text(profile['about1']).strip().replace('\n\n', '\n') self.summary = html2text(profile['about1']).strip().replace('\n\n', '\n')
if len(profile['about2']) > 0: if len(profile['about2']) > 0:
@ -248,7 +255,7 @@ class Contact(_Contact):
result += u'URL: %s\n' % self.url result += u'URL: %s\n' % self.url
result += u'Photos:\n' result += u'Photos:\n'
for name, photo in self.photos.iteritems(): for name, photo in self.photos.iteritems():
result += u'\t%s\n' % photo result += u'\t%s%s\n' % (photo, ' (hidden)' if photo.hidden else '')
result += u'\nProfile:\n' result += u'\nProfile:\n'
for head in self.profile: for head in self.profile:
result += print_node(head) result += print_node(head)