249 lines
9.4 KiB
Python
249 lines
9.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Copyright(C) 2008-2010 Romain Bignon
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, version 3 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
"""
|
|
|
|
import time
|
|
from logging import warning
|
|
|
|
from weboob.tools.browser import Browser
|
|
from weboob.backends.aum.exceptions import AdopteWait
|
|
|
|
from weboob.backends.aum.pages.home import HomePage
|
|
from weboob.backends.aum.pages.contact_list import ContactListPage
|
|
from weboob.backends.aum.pages.contact_thread import ContactThreadPage
|
|
from weboob.backends.aum.pages.baskets import BasketsPage
|
|
from weboob.backends.aum.pages.profile import ProfilePage
|
|
from weboob.backends.aum.pages.search import SearchPage
|
|
from weboob.backends.aum.pages.login import LoginPage, RedirectPage, BanPage, ErrPage, RegisterPage, RegisterWaitPage, RegisterConfirmPage
|
|
from weboob.backends.aum.pages.edit import EditPhotoPage, EditPhotoCbPage, EditAnnouncePage, EditDescriptionPage, EditSexPage, EditPersonalityPage
|
|
from weboob.backends.aum.pages.wait import WaitPage
|
|
|
|
class AdopteUnMec(Browser):
|
|
DOMAIN = 'www.adopteunmec.com'
|
|
PROTOCOL = 'http'
|
|
PAGES = {'http://www.adopteunmec.com/': LoginPage,
|
|
'http://www.adopteunmec.com/index.html': LoginPage,
|
|
'http://www.adopteunmec.com/index.php': LoginPage,
|
|
'http://www.adopteunmec.com/loginErr.php.*': ErrPage,
|
|
'http://www.adopteunmec.com/bans.php\?who=auto': BanPage,
|
|
'http://www.adopteunmec.com/redirect.php\?action=login': RedirectPage,
|
|
'http://www.adopteunmec.com/wait.php': WaitPage,
|
|
'http://www.adopteunmec.com/register2.php': RegisterPage,
|
|
'http://www.adopteunmec.com/register3.php.*': RegisterWaitPage,
|
|
'http://www.adopteunmec.com/register4.php.*': RegisterConfirmPage,
|
|
'http://www.adopteunmec.com/home.php': HomePage,
|
|
'http://www.adopteunmec.com/mails.php': ContactListPage,
|
|
'http://www.adopteunmec.com/mails.php\?type=1': BasketsPage,
|
|
'http://www.adopteunmec.com/thread.php\?id=([0-9]+)': ContactThreadPage,
|
|
'http://www.adopteunmec.com/edit.php\?type=1': EditPhotoPage,
|
|
'http://s\d+.adopteunmec.com/upload\d.php\?.*': EditPhotoCbPage,
|
|
'http://www.adopteunmec.com/edit.php\?type=2': EditAnnouncePage,
|
|
'http://www.adopteunmec.com/edit.php\?type=3': EditDescriptionPage,
|
|
'http://www.adopteunmec.com/edit.php\?type=4': EditSexPage,
|
|
'http://www.adopteunmec.com/edit.php\?type=5': EditPersonalityPage,
|
|
'http://www.adopteunmec.com/search.php.*': SearchPage,
|
|
'http://www.adopteunmec.com/searchRes.php.*': SearchPage,
|
|
'http://www.adopteunmec.com/rencontres-femmes/(.*)/([0-9]+)': ProfilePage,
|
|
'http://www.adopteunmec.com/catalogue-hommes/(.*)/([0-9]+)': ProfilePage,
|
|
'http://www.adopteunmec.com/view2.php': ProfilePage, # my own profile
|
|
'http://www.adopteunmec.com/(\w+)': ProfilePage, # a custom profile url
|
|
}
|
|
|
|
def login(self):
|
|
if not self.isOnPage(LoginPage):
|
|
self.home()
|
|
self.page.login(self.username, self.password)
|
|
|
|
def isLogged(self):
|
|
return not self.isOnPage(LoginPage)
|
|
|
|
def home(self):
|
|
return self.location('http://www.adopteunmec.com/home.php')
|
|
|
|
def pageaccess(func):
|
|
def inner(self, *args, **kwargs):
|
|
if self.isOnPage(WaitPage):
|
|
if not self.page.check():
|
|
raise AdopteWait()
|
|
self.home()
|
|
if not self.page or self.isOnPage(LoginPage) and self.password:
|
|
self.home()
|
|
|
|
return func(self, *args, **kwargs)
|
|
return inner
|
|
|
|
def register(self, nickname, password, sex, birthday_d, birthday_m, birthday_y, zipcode, country, godfather=''):
|
|
if not self.isOnPage(RegisterPage):
|
|
self.location('http://www.adopteunmec.com/register2.php')
|
|
|
|
return self.page.register(nickname, password, sex, birthday_d, birthday_m, birthday_y, zipcode, country, godfather)
|
|
|
|
@pageaccess
|
|
def addPhoto(self, name, f):
|
|
if not self.isOnPage(EditPhotoPage):
|
|
self.location('/edit.php?type=1')
|
|
return self.page.addPhoto(name, f)
|
|
|
|
@pageaccess
|
|
def setNickname(self, nickname):
|
|
if not self.isOnPage(EditAnnouncePage):
|
|
self.location('/edit.php?type=2')
|
|
return self.page.setNickname(nickname)
|
|
|
|
@pageaccess
|
|
def setAnnounce(self, title=None, description=None, lookingfor=None):
|
|
if not self.isOnPage(EditAnnouncePage):
|
|
self.location('/edit.php?type=2')
|
|
return self.page.setAnnounce(title, description, lookingfor)
|
|
|
|
@pageaccess
|
|
def setDescription(self, **args):
|
|
if not self.isOnPage(EditDescriptionPage):
|
|
self.location('/edit.php?type=3')
|
|
return self.page.setDescription(**args)
|
|
|
|
@pageaccess
|
|
def score(self):
|
|
if time.time() - self.__last_update > 60:
|
|
self.home()
|
|
return self.page.score()
|
|
|
|
@pageaccess
|
|
def getMyName(self):
|
|
if time.time() - self.__last_update > 60:
|
|
self.home()
|
|
return self.page.getMyName()
|
|
|
|
@pageaccess
|
|
def getMyID(self):
|
|
if not self.isOnPage(HomePage):
|
|
self.home()
|
|
return self.page.getMyID()
|
|
|
|
@pageaccess
|
|
def nbNewMails(self):
|
|
if time.time() - self.__last_update > 60:
|
|
self.home()
|
|
return self.page.nbNewMails()
|
|
|
|
@pageaccess
|
|
def nbNewBaskets(self):
|
|
if time.time() - self.__last_update > 60:
|
|
self.home()
|
|
return self.page.nbNewBaskets()
|
|
|
|
@pageaccess
|
|
def nbNewVisites(self):
|
|
if time.time() - self.__last_update > 60:
|
|
self.home()
|
|
return self.page.nbNewVisites()
|
|
|
|
@pageaccess
|
|
def nbAvailableCharms(self):
|
|
self.home()
|
|
return self.page.nbAvailableCharms()
|
|
|
|
@pageaccess
|
|
def getBaskets(self):
|
|
self.location('/mails.php?type=1')
|
|
return self.page.getProfilesIDsList()
|
|
|
|
@pageaccess
|
|
def flushVisits(self):
|
|
""" Does nothing, only flush new visits to increase my score """
|
|
self.openurl('/mails.php?type=3')
|
|
|
|
@pageaccess
|
|
def getContactList(self):
|
|
if not self.isOnPage(ContactListPage):
|
|
self.location('/mails.php')
|
|
|
|
return self.page.getContactList()
|
|
|
|
@pageaccess
|
|
def getThreadMails(self, id):
|
|
self.page.openThreadPage(id)
|
|
return self.page.getMails()
|
|
|
|
@pageaccess
|
|
def postMail(self, id, content):
|
|
self.page.openThreadPage(id)
|
|
self.page.post(content)
|
|
|
|
@pageaccess
|
|
def sendCharm(self, id):
|
|
result = self.openurl('http://www.adopteunmec.com/fajax_addBasket.php?id=%s' % id).read()
|
|
warning('Charm: %s' % result)
|
|
return result.find('noMoreFlashes') < 0
|
|
|
|
@pageaccess
|
|
def addBasket(self, id):
|
|
result = self.openurl('http://www.adopteunmec.com/fajax_addBasket.php?id=%s' % id).read()
|
|
warning('Basket: %s' % result)
|
|
# TODO check if it works (but it should)
|
|
return True
|
|
|
|
def deblock(self, id):
|
|
result = self.openurl('http://www.adopteunmec.com/fajax_postMessage.php?action=deblock&to=%s' % id).read()
|
|
warning('Deblock: %s' % result)
|
|
return True
|
|
|
|
@pageaccess
|
|
def rate(self, id, what, rating):
|
|
print 'rate "%s"' % id, what, rating
|
|
result = self.openurl('http://www.adopteunmec.com/fajax_vote.php', 'member=%s&what=%s&rating=%s' % (id, what, rating)).read()
|
|
print result
|
|
return float(result)
|
|
|
|
@pageaccess
|
|
def searchProfiles(self, **kwargs):
|
|
self.location('/search.php?display=1')
|
|
self.page.search(**kwargs)
|
|
return self.page.getProfilesIDs()
|
|
|
|
@pageaccess
|
|
def getProfile(self, link):
|
|
if isinstance(link, (str,unicode)) and link.startswith('/'):
|
|
link = link[1:]
|
|
self.location('/%s' % link)
|
|
return self.page
|
|
|
|
@pageaccess
|
|
def getSlutState(self, id):
|
|
result = self.openurl('http://www.adopteunmec.com/%s' % id).read()
|
|
if result.find('<td align="right" style="font-size:12px;font-weight:bold">en ligne</td>') >= 0:
|
|
r = 'online'
|
|
elif result.find('Cet utilisateur a quitt\xe9 le site<br />') >= 0:
|
|
r = 'removed'
|
|
elif result.find('ce profil a \xe9t\xe9 bloqu\xe9 par l\'\xe9quipe de mod\xe9ration<br />') >= 0:
|
|
r = 'removed'
|
|
elif result.find('<div align=center style="color:#ff0000;font-size:16px"><br /><br />Cette personne<br>vous a bloqu\xe9</div>') >= 0:
|
|
r = 'blocked'
|
|
else:
|
|
r = 'offline'
|
|
|
|
print 'getSlutState(%s) = %s' % (id, r)
|
|
return r
|
|
|
|
@pageaccess
|
|
def isSlutOnline(self, id):
|
|
result = self.openurl('http://www.adopteunmec.com/%s' % id).read()
|
|
r = result.find('<td align="right" style="font-size:12px;font-weight:bold">en ligne</td>') >= 0
|
|
print 'isSlutOnline(%s) = %s' % (id, r)
|
|
return r
|