Rename BasePage to Page
This commit is contained in:
parent
44dffce7b2
commit
444d36eee8
146 changed files with 525 additions and 525 deletions
|
|
@ -330,7 +330,7 @@ Then, each method on your browser which need your user to be authenticated may b
|
|||
return self.page.get_accounts()
|
||||
|
||||
The last thing to know is that :func:`need_login <weboob.tools.browser2.page.need_login>` checks if the current page is a logged one by
|
||||
reading the attribute :func:`logged <weboob.tools.browser2.page.BasePage.logged>` of the instance. You can either define it yourself, as a
|
||||
reading the attribute :func:`logged <weboob.tools.browser2.page.Page.logged>` of the instance. You can either define it yourself, as a
|
||||
class boolean attribute or as a property, or to inherit your class from :class:`LoggedPage <weboob.tools.browser2.page.LoggedPage>`.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
|
||||
from weboob.capabilities.recipe import Recipe, Comment
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class ResultsPage(BasePage):
|
||||
class ResultsPage(Page):
|
||||
""" Page which contains results as a list of recipies
|
||||
"""
|
||||
def iter_recipes(self):
|
||||
|
|
@ -62,7 +62,7 @@ class ResultsPage(BasePage):
|
|||
yield recipe
|
||||
|
||||
|
||||
class RecipePage(BasePage):
|
||||
class RecipePage(Page):
|
||||
""" Page which contains a recipe
|
||||
"""
|
||||
def get_recipe(self, id):
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.html import html2text
|
||||
from .job import AdeccoJobAdvert
|
||||
import datetime
|
||||
|
|
@ -27,7 +27,7 @@ import re
|
|||
MONTHS = [u'janvier', u'février', u'mars', u'avril', u'mai', u'juin', u'juillet', u'août', u'septembre', u'octobre', u'novembre', u'décembre']
|
||||
|
||||
|
||||
class SearchPage(BasePage):
|
||||
class SearchPage(Page):
|
||||
def iter_job_adverts(self):
|
||||
re_id = re.compile('http://www.adecco.fr/trouver-un-emploi/Pages/Details-de-l-Offre/(.*?)/(.*?).aspx\?IOF=(.*?)$', re.DOTALL)
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ class SearchPage(BasePage):
|
|||
yield advert
|
||||
|
||||
|
||||
class AdvertPage(BasePage):
|
||||
class AdvertPage(Page):
|
||||
def get_job_advert(self, url, advert):
|
||||
re_id = re.compile('http://www.adecco.fr/trouver-un-emploi/Pages/Details-de-l-Offre/(.*?)/(.*?).aspx\?IOF=(.*?)$', re.DOTALL)
|
||||
if advert is None:
|
||||
|
|
|
|||
|
|
@ -20,14 +20,14 @@
|
|||
|
||||
from weboob.capabilities.recipe import Recipe
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class FourOFourPage(BasePage):
|
||||
class FourOFourPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class ResultsPage(BasePage):
|
||||
class ResultsPage(Page):
|
||||
""" Page which contains results as a list of recipies
|
||||
"""
|
||||
def iter_recipes(self):
|
||||
|
|
@ -56,7 +56,7 @@ class ResultsPage(BasePage):
|
|||
yield recipe
|
||||
|
||||
|
||||
class RecipePage(BasePage):
|
||||
class RecipePage(Page):
|
||||
""" Page which contains a recipe
|
||||
"""
|
||||
def get_recipe(self, id):
|
||||
|
|
|
|||
|
|
@ -22,14 +22,14 @@ from datetime import datetime
|
|||
import re
|
||||
import urllib
|
||||
from decimal import Decimal
|
||||
from weboob.tools.browser import BasePage,BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.capabilities.bill import Subscription, Detail, Bill
|
||||
|
||||
|
||||
# Ugly array to avoid the use of french locale
|
||||
FRENCH_MONTHS = [u'janvier', u'février', u'mars', u'avril', u'mai', u'juin', u'juillet', u'août', u'septembre', u'octobre', u'novembre', u'décembre']
|
||||
|
||||
class AmeliBasePage(BasePage):
|
||||
class AmeliBasePage(Page):
|
||||
def is_logged(self):
|
||||
try:
|
||||
self.parser.select(self.document.getroot(), 'a.logout', 1)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ from datetime import datetime
|
|||
from decimal import Decimal
|
||||
import re
|
||||
import urllib
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bill import Subscription, Detail, Bill
|
||||
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ from weboob.capabilities.bill import Subscription, Detail, Bill
|
|||
FRENCH_MONTHS = [u'janvier', u'février', u'mars', u'avril', u'mai', u'juin', u'juillet', u'août', u'septembre', u'octobre', u'novembre', u'décembre']
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, password):
|
||||
self.browser.select_form('connexionCompteForm')
|
||||
self.browser["vp_connexion_portlet_1numPS"] = login.encode('utf8')
|
||||
|
|
@ -38,13 +38,13 @@ class LoginPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
||||
class AccountPage(BasePage):
|
||||
class AccountPage(Page):
|
||||
|
||||
def get_subscription_list(self):
|
||||
ident = self.document.xpath('//div[@id="identification"]')[0]
|
||||
|
|
@ -59,7 +59,7 @@ class AccountPage(BasePage):
|
|||
return sub
|
||||
|
||||
|
||||
class HistoryPage(BasePage):
|
||||
class HistoryPage(Page):
|
||||
|
||||
def iter_history(self):
|
||||
table = self.document.xpath('//table[contains(concat(" ", @class, " "), " cTableauTriable ")]')[0].xpath('.//tr')
|
||||
|
|
@ -83,7 +83,7 @@ class HistoryPage(BasePage):
|
|||
yield det
|
||||
|
||||
|
||||
class BillsPage(BasePage):
|
||||
class BillsPage(Page):
|
||||
|
||||
def iter_bills(self):
|
||||
table = self.document.xpath('//table[@id="releveCompteMensuel"]')[0].xpath('.//tr')
|
||||
|
|
|
|||
|
|
@ -22,14 +22,14 @@ import datetime
|
|||
from decimal import Decimal
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction
|
||||
from weboob.tools.date import ChaoticDateGuesser
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, username, password):
|
||||
self.browser.select_form(name='ssoform')
|
||||
self.browser.set_all_readonly(False)
|
||||
|
|
@ -40,7 +40,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
def get_list(self):
|
||||
for box in self.document.getroot().cssselect('div.roundedBox div.contentBox'):
|
||||
a = Account()
|
||||
|
|
@ -56,7 +56,7 @@ class AccountsPage(BasePage):
|
|||
|
||||
yield a
|
||||
|
||||
class TransactionsPage(BasePage):
|
||||
class TransactionsPage(Page):
|
||||
COL_ID = 0
|
||||
COL_DATE = 1
|
||||
COL_DEBIT_DATE = 2
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.html import html2text
|
||||
import dateutil.parser
|
||||
import re
|
||||
|
|
@ -26,7 +26,7 @@ import re
|
|||
from .job import ApecJobAdvert
|
||||
|
||||
|
||||
class SearchPage(BasePage):
|
||||
class SearchPage(Page):
|
||||
def iter_job_adverts(self):
|
||||
re_id_title = re.compile('/offres-emploi-cadres/\d*_\d*_\d*_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?)_(.*?).html', re.DOTALL)
|
||||
divs = self.document.getroot().xpath("//div[@class='boxContent offre']") + self.document.getroot().xpath("//div[@class='boxContent offre even']")
|
||||
|
|
@ -43,7 +43,7 @@ class SearchPage(BasePage):
|
|||
yield advert
|
||||
|
||||
|
||||
class AdvertPage(BasePage):
|
||||
class AdvertPage(Page):
|
||||
def get_job_advert(self, url, advert):
|
||||
re_id_title = re.compile('/offres-emploi-cadres/\d*_\d*_\d*_(.*?)________(.*?).html(.*?)', re.DOTALL)
|
||||
if advert is None:
|
||||
|
|
|
|||
|
|
@ -21,11 +21,11 @@
|
|||
from decimal import Decimal
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, username, password):
|
||||
self.browser.select_form(nr=0)
|
||||
self.browser['_58_login'] = username.encode('utf-8')
|
||||
|
|
@ -33,7 +33,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
COL_LABEL = 0
|
||||
COL_OWNER = 1
|
||||
COL_ID = 2
|
||||
|
|
@ -59,7 +59,7 @@ class Transaction(FrenchTransaction):
|
|||
pass
|
||||
|
||||
|
||||
class OperationsPage(BasePage):
|
||||
class OperationsPage(Page):
|
||||
COL_DATE = 0
|
||||
COL_LABEL = 1
|
||||
COL_AMOUNT = 2
|
||||
|
|
|
|||
|
|
@ -21,14 +21,14 @@ import re
|
|||
|
||||
from weboob.capabilities.base import UserError
|
||||
from weboob.capabilities.image import BaseImage
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.capabilities import NotAvailable
|
||||
|
||||
|
||||
from .video import ArretSurImagesVideo
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
def iter_videos(self):
|
||||
videos = self.document.getroot().cssselect("div[class=bloc-contenu-8]")
|
||||
for div in videos:
|
||||
|
|
@ -55,7 +55,7 @@ class ForbiddenVideo(UserError):
|
|||
pass
|
||||
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def is_logged(self):
|
||||
try:
|
||||
self.parser.select(self.document.getroot(), '#user-info', 1)
|
||||
|
|
@ -106,7 +106,7 @@ class VideoPage(BasePage):
|
|||
return url
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, username, password):
|
||||
response = self.browser.response()
|
||||
response.set_data(response.get_data().replace("<br/>", "<br />")) # Python mechanize is broken, fixing it.
|
||||
|
|
@ -119,5 +119,5 @@ class LoginPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class LoginRedirectPage(BasePage):
|
||||
class LoginRedirectPage(Page):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.html import html2text
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.capabilities.image import BaseImage
|
||||
|
|
@ -26,7 +26,7 @@ from weboob.capabilities.collection import Collection
|
|||
from .video import ArteLiveVideo
|
||||
|
||||
|
||||
class ArteLiveVideoPage(BasePage):
|
||||
class ArteLiveVideoPage(Page):
|
||||
def get_video(self, video=None):
|
||||
if not video:
|
||||
video = ArteLiveVideo(self.group_dict['id'])
|
||||
|
|
@ -43,7 +43,7 @@ class ArteLiveVideoPage(BasePage):
|
|||
return json_url, video
|
||||
|
||||
|
||||
class ArteLivePage(BasePage):
|
||||
class ArteLivePage(Page):
|
||||
def iter_resources(self):
|
||||
items = list()
|
||||
for el in self.document.xpath('//ul[@class="filter-liste"]/li'):
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
|
||||
from weboob.capabilities.subtitle import Subtitle
|
||||
from weboob.capabilities.base import NotAvailable
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class SearchPage(BasePage):
|
||||
class SearchPage(Page):
|
||||
def iter_subtitles(self, language, pattern):
|
||||
fontresult = self.parser.select(self.document.getroot(), 'div.search-results font.search-results')
|
||||
# for each result in freefind, explore the subtitle list page to iter subtitles
|
||||
|
|
@ -37,7 +37,7 @@ class SearchPage(BasePage):
|
|||
yield subtitle
|
||||
|
||||
|
||||
class SubtitlesPage(BasePage):
|
||||
class SubtitlesPage(Page):
|
||||
def get_subtitle(self, id):
|
||||
href = id.split('|')[1]
|
||||
# we have to find the 'tr' which contains the link to this address
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import urllib
|
|||
from decimal import Decimal, InvalidOperation
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage as _BasePage, BrowserUnavailable, BrokenPageError
|
||||
from weboob.tools.browser import Page as _BasePage, BrowserUnavailable, BrokenPageError
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ from decimal import Decimal
|
|||
import re
|
||||
from mechanize import Cookie, FormNotFoundError
|
||||
|
||||
from weboob.tools.browser import BasePage as _BasePage, BrowserUnavailable, BrokenPageError
|
||||
from weboob.tools.browser import Page as _BasePage, BrowserUnavailable, BrokenPageError
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ import datetime
|
|||
from decimal import Decimal
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, passwd):
|
||||
self.browser.select_form(name='frmLogin')
|
||||
self.browser['username'] = login.encode(self.browser.ENCODING)
|
||||
|
|
@ -41,7 +41,7 @@ class LoginPage(BasePage):
|
|||
return True
|
||||
|
||||
|
||||
class Login2Page(BasePage):
|
||||
class Login2Page(Page):
|
||||
def login(self, secret):
|
||||
label = self.document.xpath('//span[@class="PF_LABEL"]')[0].text.strip()
|
||||
letters = ''
|
||||
|
|
@ -53,11 +53,11 @@ class Login2Page(BasePage):
|
|||
self.browser.submit(name='valider', nologin=True)
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
ACCOUNT_TYPES = {u'Epargne': Account.TYPE_SAVINGS,
|
||||
u'Liquidités': Account.TYPE_CHECKING,
|
||||
u'Titres': Account.TYPE_MARKET,
|
||||
|
|
@ -170,7 +170,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class HistoryBasePage(BasePage):
|
||||
class HistoryBasePage(Page):
|
||||
def get_history(self):
|
||||
self.logger.warning('Do not support account of type %s' % type(self).__name__)
|
||||
return iter([])
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ from datetime import datetime
|
|||
import re
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError
|
||||
from weboob.tools.misc import to_unicode
|
||||
|
|
@ -50,7 +50,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class BEPage(BasePage):
|
||||
class BEPage(Page):
|
||||
def get_error(self):
|
||||
for title in self.document.xpath('/html/head/title'):
|
||||
if 'erreur' in title.text or 'error' in title.text:
|
||||
|
|
|
|||
|
|
@ -24,10 +24,10 @@ from decimal import Decimal
|
|||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.capabilities.base import NotAvailable
|
||||
from weboob.tools.browser import BasePage, BrokenPageError, BrowserPasswordExpired
|
||||
from weboob.tools.browser import Page, BrokenPageError, BrowserPasswordExpired
|
||||
|
||||
|
||||
class AccountsList(BasePage):
|
||||
class AccountsList(Page):
|
||||
ACCOUNT_TYPES = {
|
||||
u'Liquidités': Account.TYPE_CHECKING,
|
||||
u'Epargne disponible': Account.TYPE_SAVINGS,
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import time
|
|||
import re
|
||||
import urllib
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserUnavailable
|
||||
from weboob.tools.browser import Page, BrowserUnavailable
|
||||
from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError
|
||||
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ class BNPVirtKeyboard(VirtKeyboard):
|
|||
return code
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def on_loaded(self):
|
||||
for td in self.document.getroot().cssselect('td.LibelleErreur'):
|
||||
if td.text is None:
|
||||
|
|
@ -101,7 +101,7 @@ class LoginPage(BasePage):
|
|||
self.browser.location(url, urllib.urlencode(params))
|
||||
|
||||
|
||||
class ConfirmPage(BasePage):
|
||||
class ConfirmPage(Page):
|
||||
def get_error(self):
|
||||
for td in self.document.xpath('//td[@class="hdvon1"]'):
|
||||
if td.text:
|
||||
|
|
@ -115,12 +115,12 @@ class ConfirmPage(BasePage):
|
|||
return m.group(1)
|
||||
|
||||
|
||||
class InfoMessagePage(BasePage):
|
||||
class InfoMessagePage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
||||
class ChangePasswordPage(BasePage):
|
||||
class ChangePasswordPage(Page):
|
||||
def change_password(self, current, new):
|
||||
try:
|
||||
vk=BNPVirtKeyboard(self)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.capabilities.messages import Message, Thread
|
||||
from weboob.capabilities.base import NotLoaded
|
||||
from weboob.tools.capabilities.messages.genericArticle import try_drop_tree
|
||||
|
|
@ -29,7 +29,7 @@ from datetime import datetime
|
|||
from lxml.html import make_links_absolute
|
||||
|
||||
|
||||
class MessagesPage(BasePage):
|
||||
class MessagesPage(Page):
|
||||
def iter_threads(self):
|
||||
table = self.parser.select(self.document.getroot(), 'table#listeMessages', 1)
|
||||
for tr in table.xpath('./tr'):
|
||||
|
|
@ -61,7 +61,7 @@ class MessagesPage(BasePage):
|
|||
yield thread
|
||||
|
||||
|
||||
class MessagePage(BasePage):
|
||||
class MessagePage(Page):
|
||||
def get_content(self):
|
||||
"""
|
||||
Get the message content.
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class AccountHistory(BasePage):
|
||||
class AccountHistory(Page):
|
||||
def iter_operations(self):
|
||||
for tr in self.document.xpath('//table[@id="tableCompte"]//tr'):
|
||||
if len(tr.xpath('td[@class="debit"]')) == 0:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserPasswordExpired
|
||||
from weboob.tools.browser import Page, BrowserPasswordExpired
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.capabilities.bank import TransferError
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ class Account(object):
|
|||
self.receive_checkbox = receive_checkbox
|
||||
|
||||
|
||||
class TransferPage(BasePage):
|
||||
class TransferPage(Page):
|
||||
def on_loaded(self):
|
||||
for td in self.document.xpath('//td[@class="hdvon1"]'):
|
||||
if td.text and 'Vous avez atteint le seuil de' in td.text:
|
||||
|
|
@ -88,7 +88,7 @@ class TransferPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class TransferConfirmPage(BasePage):
|
||||
class TransferConfirmPage(Page):
|
||||
def on_loaded(self):
|
||||
for td in self.document.getroot().cssselect('td#size2'):
|
||||
raise TransferError(td.text.strip())
|
||||
|
|
@ -100,6 +100,6 @@ class TransferConfirmPage(BasePage):
|
|||
return
|
||||
|
||||
|
||||
class TransferCompletePage(BasePage):
|
||||
class TransferCompletePage(Page):
|
||||
def get_id(self):
|
||||
return self.group_dict['id']
|
||||
|
|
|
|||
|
|
@ -24,12 +24,12 @@ from decimal import Decimal, InvalidOperation
|
|||
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
from .perso.transactions import Transaction
|
||||
|
||||
|
||||
class ProAccountsList(BasePage):
|
||||
class ProAccountsList(Page):
|
||||
COL_LABEL = 1
|
||||
COL_ID = 2
|
||||
COL_BALANCE = 3
|
||||
|
|
@ -77,7 +77,7 @@ class ProAccountsList(BasePage):
|
|||
return accounts
|
||||
|
||||
|
||||
class ProAccountHistory(BasePage):
|
||||
class ProAccountHistory(Page):
|
||||
COL_DATE = 0
|
||||
COL_LABEL = 1
|
||||
COL_DEBIT = -2
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
from urlparse import urlparse
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class AccountHistory(BasePage):
|
||||
class AccountHistory(Page):
|
||||
def get_operations(self):
|
||||
for form in self.document.xpath('//form[@name="marques"]'):
|
||||
for tr in form.xpath('.//tbody/tr'):
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@
|
|||
from decimal import Decimal
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class AccountsList(BasePage):
|
||||
class AccountsList(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class CardHistory(BasePage):
|
||||
class CardHistory(Page):
|
||||
def get_operations(self):
|
||||
for form in self.document.xpath('//form[@name="marques"]'):
|
||||
for tr in form.xpath('.//tbody/tr'):
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import re
|
|||
import hashlib
|
||||
import urllib
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserIncorrectPassword
|
||||
from weboob.tools.browser import Page, BrowserIncorrectPassword
|
||||
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard
|
||||
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ class VirtKeyboard(MappedVirtKeyboard):
|
|||
return hashlib.md5(s).hexdigest()
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
# for td in self.document.getroot().cssselect('td.LibelleErreur'):
|
||||
|
|
@ -97,6 +97,6 @@ class LoginPage(BasePage):
|
|||
self.browser.location(form.attrib['action'], urllib.urlencode(args), no_login=True)
|
||||
|
||||
|
||||
class UpdateInfoPage(BasePage):
|
||||
class UpdateInfoPage(Page):
|
||||
def on_loaded(self):
|
||||
raise BrowserIncorrectPassword('Please update your login credentials')
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserIncorrectPassword
|
||||
from weboob.tools.browser import Page, BrowserIncorrectPassword
|
||||
import urllib2
|
||||
import re
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ class BrowserAuthenticationCodeMaxLimit(BrowserIncorrectPassword):
|
|||
pass
|
||||
|
||||
|
||||
class AuthenticationPage(BasePage):
|
||||
class AuthenticationPage(Page):
|
||||
MAX_LIMIT = "vous avez atteint le nombre maximum "\
|
||||
"d'utilisation de l'authentification forte."
|
||||
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@
|
|||
import re
|
||||
|
||||
from weboob.capabilities.messages import CantSendMessage
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class ComposeFrame(BasePage):
|
||||
class ComposeFrame(Page):
|
||||
phone_regex = re.compile('^(\+33|0033|0)(6|7)(\d{8})$')
|
||||
|
||||
def post_message(self, message):
|
||||
|
|
@ -37,14 +37,14 @@ class ComposeFrame(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class ComposePage(BasePage):
|
||||
class ComposePage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class ConfirmPage(BasePage):
|
||||
class ConfirmPage(Page):
|
||||
def confirm(self):
|
||||
self.browser.location('http://www.mobile.service.bbox.bouyguestelecom.fr/services/SMSIHD/resultSendSMS.phtml')
|
||||
|
||||
|
||||
class SentPage(BasePage):
|
||||
class SentPage(Page):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, password):
|
||||
self.browser.select_form(name='code')
|
||||
self.browser['j_username'] = login
|
||||
|
|
@ -29,7 +29,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class LoginSASPage(BasePage):
|
||||
class LoginSASPage(Page):
|
||||
def login(self):
|
||||
self.browser.select_form(name='redirect')
|
||||
self.browser.submit()
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import datetime
|
|||
import re
|
||||
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class Transaction(FrenchTransaction):
|
||||
|
|
@ -46,7 +46,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class AccountHistory(BasePage):
|
||||
class AccountHistory(Page):
|
||||
def get_next_link(self):
|
||||
for a in self.document.xpath('//a[@class="btn_crt"]'):
|
||||
txt = u''.join([txt.strip() for txt in a.itertext()])
|
||||
|
|
@ -105,7 +105,7 @@ class AccountHistory(BasePage):
|
|||
return operations
|
||||
|
||||
|
||||
class CardsList(BasePage):
|
||||
class CardsList(Page):
|
||||
def get_cards(self):
|
||||
cards = []
|
||||
for tr in self.document.xpath('//table[@class="dataNum"]/tbody/tr'):
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@
|
|||
from decimal import Decimal
|
||||
|
||||
from weboob.capabilities.bank import Account, AccountNotFound
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.misc import to_unicode
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
|
||||
|
||||
class AccountList(BasePage):
|
||||
class AccountList(Page):
|
||||
def on_loaded(self):
|
||||
self.accounts = OrderedDict()
|
||||
self.parse_table('comptes', Account.TYPE_CHECKING)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import hashlib
|
|||
import re
|
||||
import lxml.etree as etree
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserUnavailable
|
||||
from weboob.tools.browser import Page, BrowserUnavailable
|
||||
from weboob.tools.captcha.virtkeyboard import VirtKeyboard
|
||||
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ def md5(f):
|
|||
return md5.hexdigest()
|
||||
|
||||
|
||||
class UnavailablePage(BasePage):
|
||||
class UnavailablePage(Page):
|
||||
def on_loaded(self):
|
||||
raise BrowserUnavailable()
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ class Keyboard(VirtKeyboard):
|
|||
# strip borders
|
||||
return VirtKeyboard.get_symbol_coords(self, (x1+3, y1+3, x2-3, y2-3))
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, pwd):
|
||||
vk = Keyboard(self)
|
||||
|
||||
|
|
@ -96,24 +96,24 @@ class LoginPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class repositionnerCheminCourant(BasePage):
|
||||
class repositionnerCheminCourant(Page):
|
||||
def on_loaded(self):
|
||||
self.browser.open("https://voscomptesenligne.labanquepostale.fr/voscomptes/canalXHTML/securite/authentification/initialiser-identif.ea")
|
||||
|
||||
|
||||
class Initident(BasePage):
|
||||
class Initident(Page):
|
||||
def on_loaded(self):
|
||||
self.browser.open("https://voscomptesenligne.labanquepostale.fr/voscomptes/canalXHTML/securite/authentification/verifierMotDePasse-identif.ea")
|
||||
|
||||
|
||||
class CheckPassword(BasePage):
|
||||
class CheckPassword(Page):
|
||||
def on_loaded(self):
|
||||
self.browser.open("https://voscomptesenligne.labanquepostale.fr/voscomptes/canalXHTML/comptesCommun/synthese_assurancesEtComptes/init-synthese.ea")
|
||||
|
||||
|
||||
class BadLoginPage(BasePage):
|
||||
class BadLoginPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class AccountDesactivate(BasePage):
|
||||
class AccountDesactivate(Page):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -21,11 +21,11 @@
|
|||
import re
|
||||
|
||||
from weboob.capabilities.bank import TransferError
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.misc import to_unicode
|
||||
|
||||
|
||||
class TransferChooseAccounts(BasePage):
|
||||
class TransferChooseAccounts(Page):
|
||||
def set_accouts(self, from_account, to_account):
|
||||
self.browser.select_form(name="AiguillageForm")
|
||||
self.browser["idxCompteEmetteur"] = [from_account.id]
|
||||
|
|
@ -33,19 +33,19 @@ class TransferChooseAccounts(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class CompleteTransfer(BasePage):
|
||||
class CompleteTransfer(Page):
|
||||
def complete_transfer(self, amount):
|
||||
self.browser.select_form(name="virement_unitaire_saisie_saisie_virement_sepa")
|
||||
self.browser["montant"] = str(amount)
|
||||
self.browser.submit()
|
||||
|
||||
|
||||
class TransferConfirm(BasePage):
|
||||
class TransferConfirm(Page):
|
||||
def confirm(self):
|
||||
self.browser.location('https://voscomptesenligne.labanquepostale.fr/voscomptes/canalXHTML/virement/virementSafran_national/confirmerVirementNational-virementNational.ea')
|
||||
|
||||
|
||||
class TransferSummary(BasePage):
|
||||
class TransferSummary(Page):
|
||||
def get_transfer_id(self):
|
||||
p = self.document.xpath("//div[@id='main']/div/p")[0]
|
||||
|
||||
|
|
|
|||
|
|
@ -25,14 +25,14 @@ ControlNotFoundError = ClientForm.ControlNotFoundError
|
|||
from decimal import Decimal, InvalidOperation
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.misc import to_unicode
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, passwd):
|
||||
try:
|
||||
length = int(self.document.xpath('//input[@id="pass"]')[0].attrib['maxlength'])
|
||||
|
|
@ -52,7 +52,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class LoginResultPage(BasePage):
|
||||
class LoginResultPage(Page):
|
||||
def on_loaded(self):
|
||||
for script in self.document.xpath('//script'):
|
||||
text = script.text
|
||||
|
|
@ -113,11 +113,11 @@ class LoginResultPage(BasePage):
|
|||
return error.text.strip()
|
||||
|
||||
|
||||
class EmptyPage(BasePage):
|
||||
class EmptyPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class BredBasePage(BasePage):
|
||||
class BredBasePage(Page):
|
||||
def js2args(self, s):
|
||||
cur_arg = None
|
||||
args = {}
|
||||
|
|
@ -207,7 +207,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class TransactionsPage(BasePage):
|
||||
class TransactionsPage(Page):
|
||||
def get_history(self, is_coming=None):
|
||||
last_debit = None
|
||||
transactions = []
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ from datetime import datetime, timedelta
|
|||
from urlparse import urlparse, parse_qs
|
||||
|
||||
from weboob.tools.misc import get_bytes_size
|
||||
from weboob.tools.browser import BasePage,BrokenPageError
|
||||
from weboob.tools.browser import Page,BrokenPageError
|
||||
from weboob.capabilities.torrent import Torrent, MagnetOnly
|
||||
from weboob.capabilities.base import NotAvailable
|
||||
|
||||
|
||||
class TorrentsPage(BasePage):
|
||||
class TorrentsPage(Page):
|
||||
|
||||
def iter_torrents(self):
|
||||
try:
|
||||
|
|
@ -50,7 +50,7 @@ class TorrentsPage(BasePage):
|
|||
torrent.date = date
|
||||
yield torrent
|
||||
|
||||
class TorrentPage(BasePage):
|
||||
class TorrentPage(Page):
|
||||
def get_torrent(self, id):
|
||||
trs = self.document.getroot().cssselect('table.torrent_info_tbl tr')
|
||||
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ import string
|
|||
|
||||
from weboob.capabilities.torrent import Torrent
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.misc import get_bytes_size
|
||||
|
||||
|
||||
class TorrentsPage(BasePage):
|
||||
class TorrentsPage(Page):
|
||||
def iter_torrents(self):
|
||||
for div in self.parser.select(self.document.getroot(),'div.list_tor'):
|
||||
name = NotAvailable
|
||||
|
|
@ -63,7 +63,7 @@ class TorrentsPage(BasePage):
|
|||
yield torrent
|
||||
|
||||
|
||||
class TorrentPage(BasePage):
|
||||
class TorrentPage(Page):
|
||||
def get_torrent(self):
|
||||
seed = 0
|
||||
leech = 0
|
||||
|
|
|
|||
|
|
@ -26,13 +26,13 @@ import re
|
|||
|
||||
from weboob.tools.mech import ClientForm
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.tools.browser import BasePage, BrokenPageError, BrowserUnavailable, BrowserIncorrectPassword
|
||||
from weboob.tools.browser import Page, BrokenPageError, BrowserUnavailable, BrowserIncorrectPassword
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class _LogoutPage(BasePage):
|
||||
class _LogoutPage(Page):
|
||||
def on_loaded(self):
|
||||
try:
|
||||
raise BrowserIncorrectPassword(self.parser.tocleanstring(self.parser.select(self.document.getroot(), '.messErreur', 1)))
|
||||
|
|
@ -83,7 +83,7 @@ class LoginPage(_LogoutPage):
|
|||
class ErrorPage(_LogoutPage):
|
||||
pass
|
||||
|
||||
class UnavailablePage(BasePage):
|
||||
class UnavailablePage(Page):
|
||||
def on_loaded(self):
|
||||
try:
|
||||
raise BrowserUnavailable(self.parser.select(self.document.getroot(), 'div#message_error_hs', 1).text.strip())
|
||||
|
|
@ -116,7 +116,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
ACCOUNT_TYPES = {u'Epargne liquide': Account.TYPE_SAVINGS,
|
||||
u'Compte Courant': Account.TYPE_CHECKING,
|
||||
u'Mes comptes': Account.TYPE_CHECKING,
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
from datetime import datetime
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.collection import Collection
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.capabilities.image import BaseImage
|
||||
|
|
@ -28,7 +28,7 @@ from weboob.capabilities.image import BaseImage
|
|||
from .video import CanalplusVideo
|
||||
|
||||
|
||||
class ChannelsPage(BasePage):
|
||||
class ChannelsPage(Page):
|
||||
def get_channels(self):
|
||||
"""
|
||||
Extract all possible channels (paths) from the page
|
||||
|
|
@ -55,7 +55,7 @@ class ChannelsPage(BasePage):
|
|||
return friendly_id, name
|
||||
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def parse_video(self, el, video=None):
|
||||
_id = el.find('ID').text
|
||||
if _id == '-1':
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import urllib
|
|||
import datetime
|
||||
from weboob.capabilities.base import NotAvailable
|
||||
from weboob.tools.misc import to_unicode
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.browser import BrokenPageError
|
||||
from weboob.tools.browser import BaseBrowser
|
||||
from weboob.tools.browser.decorators import id2url
|
||||
|
|
@ -37,7 +37,7 @@ class CappedVideo(BaseVideo):
|
|||
|
||||
|
||||
# parser for search pages
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
def iter_videos(self):
|
||||
# When no results are found, the website returns random results
|
||||
sb = self.parser.select(self.document.getroot(), 'div.search form input.searchbox', 1)
|
||||
|
|
@ -85,7 +85,7 @@ class IndexPage(BasePage):
|
|||
|
||||
|
||||
# parser for the video page
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def get_video(self, video=None):
|
||||
_id = to_unicode(self.group_dict['id'])
|
||||
if video is None:
|
||||
|
|
|
|||
|
|
@ -19,16 +19,16 @@
|
|||
|
||||
from datetime import date
|
||||
from weboob.capabilities.library import Book, Renew
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.mech import ClientForm
|
||||
from weboob.tools.html import html2text
|
||||
|
||||
|
||||
class SkipPage(BasePage):
|
||||
class SkipPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
def on_loaded(self):
|
||||
link = self.document.find('//a[@id="patronRSSFeedLinkComponent"]')
|
||||
self.id = link.attrib['href'].split('/')[4]
|
||||
|
|
@ -42,7 +42,7 @@ def txt2date(s):
|
|||
return date(int(split[2]) + 2000, int(split[1]), int(split[0]))
|
||||
|
||||
|
||||
class RentedPage(BasePage):
|
||||
class RentedPage(Page):
|
||||
def get_list(self):
|
||||
for tr in self.document.getroot().xpath('//tr[@class="patFuncEntry"]'):
|
||||
id = tr.xpath('td/input')[0].attrib["value"]
|
||||
|
|
@ -77,16 +77,16 @@ class RentedPage(BasePage):
|
|||
return renew
|
||||
|
||||
|
||||
class HistoryPage(BasePage):
|
||||
class HistoryPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class BookedPage(BasePage):
|
||||
class BookedPage(Page):
|
||||
# TODO: book some books...
|
||||
pass
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, passwd):
|
||||
self.browser.select_form(nr=0)
|
||||
self.browser.form.set_all_readonly(False)
|
||||
|
|
|
|||
|
|
@ -23,16 +23,16 @@ from dateutil.parser import parse as parse_date
|
|||
|
||||
from weboob.capabilities.parcel import Parcel, Event
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
def track_package(self, _id):
|
||||
self.browser.select_form(predicate=lambda form: form.attrs.get('id', '') == 'suivreEnvoi')
|
||||
self.browser['chronoNumbers'] = _id.encode('utf-8')
|
||||
self.browser.submit()
|
||||
|
||||
class TrackPage(BasePage):
|
||||
class TrackPage(Page):
|
||||
def get_info(self, id):
|
||||
if len(self.document.xpath('//libelle[@nom="MSG_AUCUN_EVT"]')) > 0:
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -24,14 +24,14 @@ from decimal import Decimal
|
|||
import re
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserIncorrectPassword, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrowserIncorrectPassword, BrokenPageError
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.tools.date import parse_french_date
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, passwd):
|
||||
self.browser.select_form(name='ident')
|
||||
self.browser['_cm_user'] = login.encode(self.browser.ENCODING)
|
||||
|
|
@ -39,35 +39,35 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class LoginErrorPage(BasePage):
|
||||
class LoginErrorPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class ChangePasswordPage(BasePage):
|
||||
class ChangePasswordPage(Page):
|
||||
def on_loaded(self):
|
||||
raise BrowserIncorrectPassword('Please change your password')
|
||||
|
||||
class VerifCodePage(BasePage):
|
||||
class VerifCodePage(Page):
|
||||
def on_loaded(self):
|
||||
raise BrowserIncorrectPassword('Unable to login: website asks a code from a card')
|
||||
|
||||
class InfoPage(BasePage):
|
||||
class InfoPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class EmptyPage(BasePage):
|
||||
class EmptyPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class TransfertPage(BasePage):
|
||||
class TransfertPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class UserSpacePage(BasePage):
|
||||
class UserSpacePage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
TYPES = {'C/C': Account.TYPE_CHECKING,
|
||||
'Livret': Account.TYPE_SAVINGS,
|
||||
'Pret': Account.TYPE_LOAN,
|
||||
|
|
@ -165,7 +165,7 @@ class Transaction(FrenchTransaction):
|
|||
_is_coming = False
|
||||
|
||||
|
||||
class OperationsPage(BasePage):
|
||||
class OperationsPage(Page):
|
||||
def get_history(self):
|
||||
index = 0
|
||||
for tr in self.document.getiterator('tr'):
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ from decimal import Decimal
|
|||
import datetime
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserIncorrectPassword
|
||||
from weboob.tools.browser import Page, BrowserIncorrectPassword
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
|
|
@ -36,7 +36,7 @@ class Transaction(FrenchTransaction):
|
|||
return FrenchTransaction.clean_amount(text)
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, merchant_id, login, password):
|
||||
self.browser.select_form(name='loginForm')
|
||||
self.browser['merchant'] = merchant_id.encode(self.browser.ENCODING)
|
||||
|
|
@ -45,7 +45,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class SummaryPage(BasePage):
|
||||
class SummaryPage(Page):
|
||||
def clean_amount(self, el, debit):
|
||||
amount = Decimal(Transaction.clean_amount(el.text_content()))
|
||||
if amount == Decimal('0.00'):
|
||||
|
|
@ -66,13 +66,13 @@ class SummaryPage(BasePage):
|
|||
return amount
|
||||
|
||||
|
||||
class UselessPage(BasePage):
|
||||
class UselessPage(Page):
|
||||
def on_loaded(self):
|
||||
for error in self.document.xpath('//li[@class="error"]'):
|
||||
raise BrowserIncorrectPassword(self.parser.tocleanstring(error))
|
||||
|
||||
|
||||
class TransactionSearchPage(BasePage):
|
||||
class TransactionSearchPage(Page):
|
||||
def search(self, accepted=True, refused=False):
|
||||
self.browser.select_form(name='transactionSearchForm')
|
||||
self.browser['selectedDateCriteria'] = ['thisweek'] # TODO ask for more
|
||||
|
|
@ -86,14 +86,14 @@ class TransactionSearchPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class TransactionsPage(BasePage):
|
||||
class TransactionsPage(Page):
|
||||
def get_csv_url(self):
|
||||
for a in self.parser.select(self.document.getroot(), '.exportlinks a'):
|
||||
if len(self.parser.select(a, 'span.csv')):
|
||||
return a.attrib['href']
|
||||
|
||||
|
||||
class TransactionsCsvPage(BasePage):
|
||||
class TransactionsCsvPage(Page):
|
||||
def guess_format(self, amount):
|
||||
if re.search(r'\d\.\d\d$', amount):
|
||||
date_format = "%m/%d/%Y"
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ import datetime
|
|||
from decimal import Decimal
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, passwd):
|
||||
self.browser.select_form(name='formIdentification')
|
||||
self.browser['noPersonne'] = login.encode(self.browser.ENCODING)
|
||||
|
|
@ -35,7 +35,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
def get_list(self):
|
||||
names = set()
|
||||
for li in self.document.xpath('//div[@class="affichMontant"]/ul/li/a'):
|
||||
|
|
@ -70,7 +70,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class TransactionsPage(BasePage):
|
||||
class TransactionsPage(Page):
|
||||
months = [u'janvier', u'février', u'mars', u'avril', u'mai', u'juin', u'juillet', u'août', u'septembre', u'octobre', u'novembre', u'décembre']
|
||||
|
||||
def get_next_link(self):
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from datetime import date
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.parcel import Parcel, Event
|
||||
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ def update_status(p, status):
|
|||
if p.status < status:
|
||||
p.status = status
|
||||
|
||||
class TrackPage(BasePage):
|
||||
class TrackPage(Page):
|
||||
def get_info(self, _id):
|
||||
p = Parcel(_id)
|
||||
|
||||
|
|
@ -70,5 +70,5 @@ class TrackPage(BasePage):
|
|||
pass
|
||||
return p
|
||||
|
||||
class ErrorPage(BasePage):
|
||||
class ErrorPage(Page):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.browser import BrowserUnavailable
|
||||
|
||||
|
||||
class CragrBasePage(BasePage):
|
||||
class CragrBasePage(Page):
|
||||
def on_loaded(self):
|
||||
# Check for an error
|
||||
for div in self.document.getiterator('div'):
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ from decimal import Decimal
|
|||
|
||||
from weboob.tools.date import parse_french_date
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
def get_post_url(self):
|
||||
for script in self.document.xpath('//script'):
|
||||
text = script.text
|
||||
|
|
@ -39,7 +39,7 @@ class HomePage(BasePage):
|
|||
|
||||
return None
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, password):
|
||||
assert password.isdigit()
|
||||
assert len(password) == 6
|
||||
|
|
@ -60,13 +60,13 @@ class LoginPage(BasePage):
|
|||
def get_result_url(self):
|
||||
return self.parser.tocleanstring(self.document.getroot())
|
||||
|
||||
class UselessPage(BasePage):
|
||||
class UselessPage(Page):
|
||||
pass
|
||||
|
||||
class LoginErrorPage(BasePage):
|
||||
class LoginErrorPage(Page):
|
||||
pass
|
||||
|
||||
class _AccountsPage(BasePage):
|
||||
class _AccountsPage(Page):
|
||||
COL_LABEL = 0
|
||||
COL_ID = 2
|
||||
COL_VALUE = 4
|
||||
|
|
@ -121,7 +121,7 @@ class _AccountsPage(BasePage):
|
|||
return links
|
||||
|
||||
|
||||
class CardsPage(BasePage):
|
||||
class CardsPage(Page):
|
||||
def get_list(self):
|
||||
TABLE_XPATH = '//table[caption[@class="caption tdb-cartes-caption" or @class="ca-table caption"]]'
|
||||
|
||||
|
|
@ -229,7 +229,7 @@ class AccountsPage(_AccountsPage):
|
|||
class SavingsPage(_AccountsPage):
|
||||
COL_ID = 1
|
||||
|
||||
class TransactionsPage(BasePage):
|
||||
class TransactionsPage(Page):
|
||||
def get_next_url(self):
|
||||
links = self.document.xpath('//span[@class="pager"]/a[@class="liennavigationcorpspage"]')
|
||||
if len(links) < 1:
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ from decimal import Decimal
|
|||
import re
|
||||
|
||||
from weboob.tools.json import json
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, password):
|
||||
self.browser.select_form(predicate=lambda form: form.attrs.get('id', '') == 'AuthForm')
|
||||
self.browser['j_username'] = login.encode('iso-8859-15')
|
||||
|
|
@ -35,7 +35,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class LoggedPage(BasePage):
|
||||
class LoggedPage(Page):
|
||||
def get_error(self):
|
||||
div = self.document.xpath('//div[@class="errorForm-msg"]')
|
||||
if len(div) == 0:
|
||||
|
|
@ -45,7 +45,7 @@ class LoggedPage(BasePage):
|
|||
return re.sub('[\r\n\t\xa0]+', ' ', msg)
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
ACCOUNT_TYPES = {u'COMPTE NEF': Account.TYPE_CHECKING}
|
||||
|
||||
def get_list(self):
|
||||
|
|
@ -89,11 +89,11 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class TransactionsPage(BasePage):
|
||||
class TransactionsPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class TransactionsJSONPage(BasePage):
|
||||
class TransactionsJSONPage(Page):
|
||||
ROW_DATE = 0
|
||||
ROW_TEXT = 2
|
||||
ROW_CREDIT = -1
|
||||
|
|
@ -109,7 +109,7 @@ class TransactionsJSONPage(BasePage):
|
|||
yield t
|
||||
|
||||
|
||||
class ComingTransactionsPage(BasePage):
|
||||
class ComingTransactionsPage(Page):
|
||||
ROW_REF = 0
|
||||
ROW_TEXT = 1
|
||||
ROW_DATE = 2
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ from decimal import Decimal
|
|||
import re
|
||||
import time
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, pin, strong_auth):
|
||||
form_nb = 1 if strong_auth else 0
|
||||
indentType = "RENFORCE" if strong_auth else "MDP"
|
||||
|
|
@ -40,7 +40,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
ACCOUNT_TYPES = {u'COMPTE NEF': Account.TYPE_CHECKING}
|
||||
|
||||
CPT_ROW_ID = 0
|
||||
|
|
@ -95,7 +95,7 @@ class Transaction(FrenchTransaction):
|
|||
FrenchTransaction.TYPE_UNKNOWN),
|
||||
]
|
||||
|
||||
class ITransactionsPage(BasePage):
|
||||
class ITransactionsPage(Page):
|
||||
def get_next_url(self):
|
||||
# can be 'Suivant' or ' Suivant'
|
||||
next = self.document.xpath("//a[normalize-space(text()) = 'Suivant']")
|
||||
|
|
|
|||
|
|
@ -23,18 +23,18 @@ from decimal import Decimal
|
|||
import re
|
||||
from cStringIO import StringIO
|
||||
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.tools.json import json
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class CDNBasePage(BasePage):
|
||||
class CDNBasePage(Page):
|
||||
def get_from_js(self, pattern, end, is_list=False):
|
||||
"""
|
||||
find a pattern in any javascript text
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
|
||||
from weboob.capabilities.recipe import Recipe, Comment
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class ResultsPage(BasePage):
|
||||
class ResultsPage(Page):
|
||||
""" Page which contains results as a list of recipies
|
||||
"""
|
||||
def iter_recipes(self):
|
||||
|
|
@ -71,7 +71,7 @@ class ResultsPage(BasePage):
|
|||
yield recipe
|
||||
|
||||
|
||||
class RecipePage(BasePage):
|
||||
class RecipePage(Page):
|
||||
""" Page which contains a recipe
|
||||
"""
|
||||
def get_recipe(self, id):
|
||||
|
|
|
|||
|
|
@ -27,13 +27,13 @@ import mechanize
|
|||
from weboob.capabilities import NotAvailable
|
||||
from weboob.capabilities.image import BaseImage
|
||||
from weboob.tools.html import html2text
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
|
||||
|
||||
from .video import DailymotionVideo
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
def iter_videos(self):
|
||||
for div in self.parser.select(self.document.getroot(), 'div.sd_video_listitem'):
|
||||
smalldiv = self.parser.select(div, 'div.sd_video_previewtwig', 1)
|
||||
|
|
@ -82,7 +82,7 @@ class IndexPage(BasePage):
|
|||
return 0
|
||||
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def get_video(self, video=None):
|
||||
if video is None:
|
||||
video = DailymotionVideo(self.group_dict['id'])
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ from decimal import Decimal
|
|||
import re
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, username, password):
|
||||
self.browser.select_form(name="frmLogin")
|
||||
self.browser['username'] = username.encode('utf-8')
|
||||
|
|
@ -36,7 +36,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class DashboardPage(BasePage):
|
||||
class DashboardPage(Page):
|
||||
def iter_accounts(self):
|
||||
for line in self._accounts():
|
||||
yield self._get_account(line)
|
||||
|
|
@ -67,7 +67,7 @@ class DashboardPage(BasePage):
|
|||
return account
|
||||
|
||||
|
||||
class OperationsPage(BasePage):
|
||||
class OperationsPage(Page):
|
||||
_LINE_XPATH = '//tr[starts-with(@class,"PL_LIGLST_")]'
|
||||
_NEXT_XPATH = '//a[contains(@class,"pg_next")]/@href'
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
import re
|
||||
from logging import warning
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class Message(object):
|
||||
|
|
@ -43,7 +43,7 @@ class Message(object):
|
|||
warning('Unable to parse timestamp "%s"' % timestamp)
|
||||
|
||||
|
||||
class BoardIndexPage(BasePage):
|
||||
class BoardIndexPage(Page):
|
||||
def is_logged(self):
|
||||
return True
|
||||
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class DLFPPage(BasePage):
|
||||
class DLFPPage(Page):
|
||||
def is_logged(self):
|
||||
for form in self.document.getiterator('form'):
|
||||
if form.attrib.get('id', None) == 'new_account_sidebar':
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ from datetime import datetime
|
|||
import re
|
||||
import urllib
|
||||
from decimal import Decimal
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bill import Subscription, Detail, Bill
|
||||
|
||||
base_url = "http://particuliers.edf.com/"
|
||||
|
||||
class EdfBasePage(BasePage):
|
||||
class EdfBasePage(Page):
|
||||
def is_logged(self):
|
||||
return (u'Me déconnecter' in self.document.xpath('//a/text()')) \
|
||||
or (self.document.xpath('//table[contains(@summary, "Informations sur mon")]'))
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.html import html2text
|
||||
from weboob.capabilities.image import BaseImage
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ import re
|
|||
from .gallery import EHentaiGallery
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def is_logged(self):
|
||||
success_p = self.document.xpath(
|
||||
'//p[text() = "Login Successful. You will be returned momentarily."]')
|
||||
|
|
@ -38,11 +38,11 @@ class LoginPage(BasePage):
|
|||
return False
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
def iter_galleries(self):
|
||||
lines = self.document.xpath('//table[@class="itg"]//tr[@class="gtr0" or @class="gtr1"]')
|
||||
for line in lines:
|
||||
|
|
@ -52,7 +52,7 @@ class IndexPage(BasePage):
|
|||
yield EHentaiGallery(re.search('(?<=/g/)\d+/[\dabcdef]+', url).group(0), title=title)
|
||||
|
||||
|
||||
class GalleryPage(BasePage):
|
||||
class GalleryPage(Page):
|
||||
def image_pages(self):
|
||||
return self.document.xpath('//div[@class="gdtm"]//a/attribute::href')
|
||||
|
||||
|
|
@ -97,6 +97,6 @@ class GalleryPage(BasePage):
|
|||
gallery.thumbnail.url = gallery.thumbnail.id
|
||||
|
||||
|
||||
class ImagePage(BasePage):
|
||||
class ImagePage(Page):
|
||||
def get_url(self):
|
||||
return self.document.xpath('//div[@class="sni"]/a/img/attribute::src')[0]
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
from weboob.tools.mech import ClientForm
|
||||
ControlNotFoundError = ClientForm.ControlNotFoundError
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
import re
|
||||
import datetime
|
||||
|
|
@ -32,7 +32,7 @@ from weboob.tools.browser import BrokenPageError
|
|||
from .video import EuroparlVideo
|
||||
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def get_video(self, video=None):
|
||||
if video is None:
|
||||
video = EuroparlVideo(self.group_dict['id'])
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import re
|
|||
from time import sleep
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage, BrowserIncorrectPassword
|
||||
from weboob.tools.browser import Page, BrowserIncorrectPassword
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.tools.json import json
|
||||
|
|
@ -50,7 +50,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class AccountHistoryPage(BasePage):
|
||||
class AccountHistoryPage(Page):
|
||||
def get_operations(self, _id):
|
||||
"""history, see http://docs.weboob.org/api/capabilities/bank.html?highlight=transaction#weboob.capabilities.bank.Transaction"""
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ class AccountHistoryPage(BasePage):
|
|||
yield operation
|
||||
|
||||
|
||||
class AccountsList(BasePage):
|
||||
class AccountsList(Page):
|
||||
def on_loaded(self):
|
||||
warn = self.document.xpath('//div[@id="message_renouvellement_mot_passe"]')
|
||||
if len(warn) > 0:
|
||||
|
|
@ -157,7 +157,7 @@ class AccountsList(BasePage):
|
|||
yield account
|
||||
|
||||
|
||||
class GlobalAccountsList(BasePage):
|
||||
class GlobalAccountsList(Page):
|
||||
pass
|
||||
|
||||
# vim:ts=4:sw=4
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
|
||||
#from logging import error
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserUnavailable
|
||||
from weboob.tools.browser import Page, BrowserUnavailable
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, passwd):
|
||||
msgb = self.document.xpath(".//*[@id='message_client']/text()")
|
||||
msga = ''.join(msgb)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import re
|
|||
|
||||
from datetime import datetime
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class Message(object):
|
||||
|
|
@ -47,7 +47,7 @@ class Message(object):
|
|||
return '<Message id=%s filename=%s url=%s comments=%d>' % (self.id, self.filename, self.url, len(self.comments))
|
||||
|
||||
|
||||
class BoardPage(BasePage):
|
||||
class BoardPage(Page):
|
||||
URL_REGEXP = re.compile('http://boards.4chan.org/(\w+)/')
|
||||
|
||||
def on_loaded(self):
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@
|
|||
from decimal import Decimal
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, login, passwd):
|
||||
self.browser.select_form(name='loginForm')
|
||||
self.browser.set_all_readonly(False)
|
||||
|
|
@ -35,7 +35,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
ACCOUNT_TYPES = {u'Solde des comptes bancaires - Groupama Banque': Account.TYPE_CHECKING,
|
||||
u'Epargne bancaire constituée - Groupama Banque': Account.TYPE_SAVINGS,
|
||||
}
|
||||
|
|
@ -88,7 +88,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class TransactionsPage(BasePage):
|
||||
class TransactionsPage(Page):
|
||||
def get_history(self):
|
||||
count = 0
|
||||
for tr in self.document.xpath('//table[@id="releve_operation"]/tr'):
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BrowserUnavailable, BasePage as _BasePage
|
||||
from weboob.tools.browser import BrowserUnavailable, Page as _BasePage
|
||||
|
||||
|
||||
class BasePage(_BasePage):
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
import urllib
|
||||
import re
|
||||
|
|
@ -40,7 +40,7 @@ from .video import GDCVaultVideo
|
|||
# TODO: check title on 1439
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
def iter_videos(self):
|
||||
for a in self.parser.select(self.document.getroot(), 'section.conference ul.media_items li.featured a.session_item'):
|
||||
href = a.attrib.get('href', '')
|
||||
|
|
@ -79,7 +79,7 @@ class IndexPage(BasePage):
|
|||
|
||||
# the search page class uses a JSON parser,
|
||||
# since it's what search.php returns when POSTed (from Ajax)
|
||||
class SearchPage(BasePage):
|
||||
class SearchPage(Page):
|
||||
def iter_videos(self):
|
||||
if self.document is None or self.document['data'] is None:
|
||||
raise BrokenPageError('Unable to find JSON data')
|
||||
|
|
@ -90,7 +90,7 @@ class SearchPage(BasePage):
|
|||
continue
|
||||
yield video
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def get_video(self, video=None):
|
||||
# check for slides id variant
|
||||
want_slides = False
|
||||
|
|
|
|||
|
|
@ -26,12 +26,12 @@ import shutil
|
|||
from datetime import date
|
||||
from decimal import Decimal
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.base import NotAvailable
|
||||
from weboob.capabilities.bill import Detail, Bill
|
||||
|
||||
|
||||
class HistoryPage(BasePage):
|
||||
class HistoryPage(Page):
|
||||
|
||||
def on_loaded(self):
|
||||
self.details = []
|
||||
|
|
|
|||
|
|
@ -19,11 +19,11 @@
|
|||
|
||||
from datetime import date
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bill import Subscription
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
|
||||
def login(self, login, password):
|
||||
self.browser.select_form('symConnexionForm')
|
||||
|
|
@ -32,13 +32,13 @@ class LoginPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
||||
class AccountPage(BasePage):
|
||||
class AccountPage(Page):
|
||||
|
||||
def get_subscription_list(self):
|
||||
table = self.document.xpath('//table[@id="ensemble_contrat_N0"]')[0]
|
||||
|
|
@ -63,7 +63,7 @@ class AccountPage(BasePage):
|
|||
yield sub
|
||||
|
||||
|
||||
class TimeoutPage(BasePage):
|
||||
class TimeoutPage(Page):
|
||||
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class TranslatePage(BasePage):
|
||||
class TranslatePage(Page):
|
||||
def get_translation(self):
|
||||
boxes = self.parser.select(self.document.getroot(), 'span#result_box', 1).findall('span')
|
||||
if len(boxes) == 0:
|
||||
|
|
|
|||
|
|
@ -21,14 +21,14 @@
|
|||
import datetime
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class ValidationPage(BasePage):
|
||||
class ValidationPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
pass
|
||||
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ class Story(object):
|
|||
self.body = None
|
||||
|
||||
|
||||
class HistoryPage(BasePage):
|
||||
class HistoryPage(Page):
|
||||
def get_numerous(self):
|
||||
td = self.parser.select(self.document.getroot(), 'td.t0', 1)
|
||||
n = td.xpath('//u/strong|//u/b')[0].text
|
||||
|
|
@ -91,7 +91,7 @@ class HistoryPage(BasePage):
|
|||
story = None
|
||||
|
||||
|
||||
class StoryPage(BasePage):
|
||||
class StoryPage(Page):
|
||||
def get_story(self):
|
||||
p_tags = self.document.getroot().xpath('//body/p')
|
||||
if len(p_tags) > 0 and p_tags[0].text.strip() == \
|
||||
|
|
@ -146,7 +146,7 @@ class StoryPage(BasePage):
|
|||
return story
|
||||
|
||||
|
||||
class AuthorPage(BasePage):
|
||||
class AuthorPage(Page):
|
||||
def get_author(self):
|
||||
p_tags = self.document.getroot().xpath('//body/div/font/b')
|
||||
if len(p_tags) > 0 and p_tags[0].text.strip() == \
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@
|
|||
from decimal import Decimal
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage, BrowserPasswordExpired
|
||||
from weboob.tools.browser import Page, BrowserPasswordExpired
|
||||
from weboob.tools.json import json
|
||||
|
||||
|
||||
class AccountsList(BasePage):
|
||||
class AccountsList(Page):
|
||||
ACCOUNT_TYPES = {
|
||||
1: Account.TYPE_CHECKING,
|
||||
2: Account.TYPE_SAVINGS,
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
import time
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserUnavailable
|
||||
from weboob.tools.browser import Page, BrowserUnavailable
|
||||
from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError
|
||||
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ class HelloBankVirtKeyboard(VirtKeyboard):
|
|||
return code
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def on_loaded(self):
|
||||
for td in self.document.getroot().cssselect('td.LibelleErreur'):
|
||||
if td.text is None:
|
||||
|
|
@ -93,7 +93,7 @@ class LoginPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class ConfirmPage(BasePage):
|
||||
class ConfirmPage(Page):
|
||||
def get_error(self):
|
||||
for td in self.document.xpath('//td[@class="hdvon1"]'):
|
||||
if td.text:
|
||||
|
|
@ -107,6 +107,6 @@ class ConfirmPage(BasePage):
|
|||
return m.group(1)
|
||||
|
||||
|
||||
class InfoMessagePage(BasePage):
|
||||
class InfoMessagePage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.capabilities.messages import Message, Thread
|
||||
from weboob.capabilities.base import NotLoaded
|
||||
from weboob.tools.capabilities.messages.genericArticle import try_drop_tree
|
||||
|
|
@ -29,7 +29,7 @@ from datetime import datetime
|
|||
from lxml.html import make_links_absolute
|
||||
|
||||
|
||||
class MessagesPage(BasePage):
|
||||
class MessagesPage(Page):
|
||||
def iter_threads(self):
|
||||
table = self.parser.select(self.document.getroot(), 'table#listeMessages', 1)
|
||||
for tr in table.xpath('./tr'):
|
||||
|
|
@ -61,7 +61,7 @@ class MessagesPage(BasePage):
|
|||
yield thread
|
||||
|
||||
|
||||
class MessagePage(BasePage):
|
||||
class MessagePage(Page):
|
||||
def get_content(self):
|
||||
"""
|
||||
Get the message content.
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class AccountHistory(BasePage):
|
||||
class AccountHistory(Page):
|
||||
def iter_operations(self):
|
||||
for tr in self.document.xpath('//table[@id="tableCompte"]//tr'):
|
||||
if len(tr.xpath('td[@class="debit"]')) == 0:
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage, BrowserPasswordExpired
|
||||
from weboob.tools.browser import Page, BrowserPasswordExpired
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.capabilities.bank import TransferError
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ class Account(object):
|
|||
self.receive_checkbox = receive_checkbox
|
||||
|
||||
|
||||
class TransferPage(BasePage):
|
||||
class TransferPage(Page):
|
||||
def on_loaded(self):
|
||||
for td in self.document.xpath('//td[@class="hdvon1"]'):
|
||||
if td.text and 'Vous avez atteint le seuil de' in td.text:
|
||||
|
|
@ -91,7 +91,7 @@ class TransferPage(BasePage):
|
|||
self.browser.submit()
|
||||
|
||||
|
||||
class TransferConfirmPage(BasePage):
|
||||
class TransferConfirmPage(Page):
|
||||
def on_loaded(self):
|
||||
for td in self.document.getroot().cssselect('td#size2'):
|
||||
raise TransferError(td.text.strip())
|
||||
|
|
@ -103,6 +103,6 @@ class TransferConfirmPage(BasePage):
|
|||
return
|
||||
|
||||
|
||||
class TransferCompletePage(BasePage):
|
||||
class TransferCompletePage(Page):
|
||||
def get_id(self):
|
||||
return self.group_dict['id']
|
||||
|
|
|
|||
|
|
@ -20,13 +20,13 @@
|
|||
|
||||
from weboob.capabilities.cinema import Person, Movie
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.html import html2text
|
||||
from datetime import datetime
|
||||
import re
|
||||
|
||||
|
||||
class ReleasePage(BasePage):
|
||||
class ReleasePage(Page):
|
||||
''' Page containing releases of a movie
|
||||
'''
|
||||
def get_movie_releases(self, country_filter):
|
||||
|
|
@ -54,7 +54,7 @@ class ReleasePage(BasePage):
|
|||
return result
|
||||
|
||||
|
||||
class BiographyPage(BasePage):
|
||||
class BiographyPage(Page):
|
||||
''' Page containing biography of a person
|
||||
'''
|
||||
def get_biography(self):
|
||||
|
|
@ -71,7 +71,7 @@ class BiographyPage(BasePage):
|
|||
return bio
|
||||
|
||||
|
||||
class MovieCrewPage(BasePage):
|
||||
class MovieCrewPage(Page):
|
||||
''' Page listing all the persons related to a movie
|
||||
'''
|
||||
def iter_persons(self, role_filter=None):
|
||||
|
|
@ -126,7 +126,7 @@ class MovieCrewPage(BasePage):
|
|||
yield id
|
||||
|
||||
|
||||
class PersonPage(BasePage):
|
||||
class PersonPage(Page):
|
||||
''' Page informing about a person
|
||||
It is used to build a Person instance and to get the movie list related to a person
|
||||
'''
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@
|
|||
import datetime
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.capabilities.image import BaseImage
|
||||
|
||||
from ..video import InaVideo
|
||||
|
||||
|
||||
class SearchPage(BasePage):
|
||||
class SearchPage(Page):
|
||||
URL_REGEXP = re.compile(r'/(.+)/(.+)\.jpeg')
|
||||
|
||||
def iter_videos(self):
|
||||
|
|
|
|||
|
|
@ -23,12 +23,12 @@ import re
|
|||
|
||||
from weboob.capabilities import NotAvailable
|
||||
from weboob.capabilities.image import BaseImage
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
from ..video import InaVideo
|
||||
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
URL_REGEXP = re.compile('http://player.ina.fr/notices/(.+)\.mrss')
|
||||
|
||||
def get_id(self):
|
||||
|
|
|
|||
|
|
@ -24,12 +24,12 @@ import re
|
|||
from weboob.capabilities.gallery import CapGallery, BaseGallery, BaseImage
|
||||
from weboob.tools.json import json
|
||||
from weboob.tools.backend import Module
|
||||
from weboob.tools.browser import BaseBrowser, BasePage
|
||||
from weboob.tools.browser import BaseBrowser, Page
|
||||
|
||||
__all__ = ['IzneoModule']
|
||||
|
||||
|
||||
class ReaderV2(BasePage):
|
||||
class ReaderV2(Page):
|
||||
def get_ean(self):
|
||||
return self.document.xpath("//div[@id='viewer']/attribute::rel")[0]
|
||||
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@ import re
|
|||
|
||||
from weboob.capabilities.base import NotAvailable
|
||||
from weboob.capabilities.image import BaseImage
|
||||
from weboob.tools.browser import BasePage, BrokenPageError
|
||||
from weboob.tools.browser import Page, BrokenPageError
|
||||
from weboob.tools.misc import to_unicode
|
||||
|
||||
from .video import JacquieEtMichelVideo
|
||||
|
||||
|
||||
class ResultsPage(BasePage):
|
||||
class ResultsPage(Page):
|
||||
def iter_videos(self):
|
||||
for span in self.document.xpath('//ul[@id="list"]/li'):
|
||||
a = self.parser.select(span, 'a', 1)
|
||||
|
|
@ -49,7 +49,7 @@ class ResultsPage(BasePage):
|
|||
yield video
|
||||
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def get_video(self, video=None):
|
||||
_id = to_unicode(self.group_dict['id'])
|
||||
if video is None:
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@ import datetime
|
|||
from weboob.capabilities.travel import RoadmapError
|
||||
from weboob.tools.misc import to_unicode
|
||||
from weboob.tools.mech import ClientForm
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class RoadmapAmbiguity(RoadmapError):
|
||||
def __init__(self, error):
|
||||
RoadmapError.__init__(self, error)
|
||||
|
||||
class RoadmapSearchPage(BasePage):
|
||||
class RoadmapSearchPage(Page):
|
||||
def search(self, departure, arrival, departure_time, arrival_time):
|
||||
match = -1
|
||||
i = 0
|
||||
|
|
@ -46,7 +46,7 @@ class RoadmapSearchPage(BasePage):
|
|||
raise RoadmapError('Unable to establish a roadmap with %s time at "%s"' % ('departure' if departure_time else 'arrival', time))
|
||||
self.browser.submit()
|
||||
|
||||
class RoadmapResultsPage(BasePage):
|
||||
class RoadmapResultsPage(Page):
|
||||
def html_br_strip(self, text):
|
||||
return "".join([l.strip() for l in text.split("\n")]).strip().replace(' ', '%20')
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ class RoadmapResultsPage(BasePage):
|
|||
self.browser[propname] = [ propvalue ]
|
||||
self.browser.submit()
|
||||
|
||||
class RoadmapPage(BasePage):
|
||||
class RoadmapPage(Page):
|
||||
def get_steps(self):
|
||||
errors = []
|
||||
# for p in self.parser.select(self.document.getroot(), 'p.errors'):
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ from urlparse import parse_qs, urlsplit
|
|||
|
||||
from weboob.capabilities.torrent import Torrent
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.misc import get_bytes_size
|
||||
|
||||
|
||||
class TorrentsPage(BasePage):
|
||||
class TorrentsPage(Page):
|
||||
def iter_torrents(self):
|
||||
for tr in self.document.getiterator('tr'):
|
||||
if tr.attrib.get('class', '') == 'odd' or tr.attrib.get('class', '') == ' even':
|
||||
|
|
@ -70,7 +70,7 @@ class TorrentsPage(BasePage):
|
|||
yield torrent
|
||||
|
||||
|
||||
class TorrentPage(BasePage):
|
||||
class TorrentPage(Page):
|
||||
def get_torrent(self, id):
|
||||
seed = 0
|
||||
leech = 0
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@
|
|||
from decimal import Decimal
|
||||
import re
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities import NotAvailable, NotLoaded
|
||||
from weboob.capabilities.pricecomparison import Product, Price, Shop
|
||||
|
||||
|
||||
# I manage main page, ie do nothing yet
|
||||
class MainPage(BasePage):
|
||||
class MainPage(Page):
|
||||
def iter_products(self, criteria):
|
||||
product = Product(1)
|
||||
# TODO check if criteria exists in main page
|
||||
|
|
@ -59,7 +59,7 @@ def new_price(id, product, cost, title):
|
|||
|
||||
|
||||
# I manage listing page and extract information
|
||||
class ListingAutoPage(BasePage):
|
||||
class ListingAutoPage(Page):
|
||||
|
||||
def _extract(self, tr, name):
|
||||
'Extract content from td element with class name'
|
||||
|
|
@ -107,7 +107,7 @@ class ListingAutoPage(BasePage):
|
|||
|
||||
|
||||
# I manage one car page (annonce) )and extract information
|
||||
class AnnoncePage(BasePage):
|
||||
class AnnoncePage(Page):
|
||||
|
||||
def _extract(self, e, name):
|
||||
'Extract content from li element with class name'
|
||||
|
|
|
|||
|
|
@ -20,37 +20,37 @@
|
|||
from decimal import Decimal
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
from ..pages import Transaction
|
||||
|
||||
|
||||
class RootPage(BasePage):
|
||||
class RootPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class LogoutPage(BasePage):
|
||||
class LogoutPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class LogoutOkPage(BasePage):
|
||||
class LogoutOkPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class MessagesPage(BasePage):
|
||||
class MessagesPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class AlreadyConnectedPage(BasePage):
|
||||
class AlreadyConnectedPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class ExpiredPage(BasePage):
|
||||
class ExpiredPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class MovementsPage(BasePage):
|
||||
class MovementsPage(Page):
|
||||
def get_account(self):
|
||||
LABEL_XPATH = '//*[@id="perimetreMandatEnfantLib"]'
|
||||
BALANCE_XPATH = '//div[contains(text(),"Solde comptable :")]/strong'
|
||||
|
|
@ -86,7 +86,7 @@ class MovementsPage(BasePage):
|
|||
yield operation
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
def login(self, login, passwd):
|
||||
p = lambda f: f.attrs.get('id') == "form_autoComplete"
|
||||
self.browser.select_form(predicate=p)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import random
|
|||
|
||||
|
||||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage, BrowserUnavailable
|
||||
from weboob.tools.browser import Page, BrowserUnavailable
|
||||
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
|
||||
|
|
@ -67,11 +67,11 @@ class LCLVirtKeyboard(MappedVirtKeyboard):
|
|||
return code
|
||||
|
||||
|
||||
class SkipPage(BasePage):
|
||||
class SkipPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def on_loaded(self):
|
||||
try:
|
||||
self.browser.select_form(name='form')
|
||||
|
|
@ -132,7 +132,7 @@ class LoginPage(BasePage):
|
|||
errors = self.document.xpath(u'//div[@class="erreur" or @class="messError"]')
|
||||
return len(errors) > 0
|
||||
|
||||
class ContractsPage(BasePage):
|
||||
class ContractsPage(Page):
|
||||
def on_loaded(self):
|
||||
self.select_contract()
|
||||
|
||||
|
|
@ -143,7 +143,7 @@ class ContractsPage(BasePage):
|
|||
self.browser.submit(nologin=True)
|
||||
|
||||
|
||||
class AccountsPage(BasePage):
|
||||
class AccountsPage(Page):
|
||||
def on_loaded(self):
|
||||
warn = self.document.xpath('//div[@id="attTxt"]')
|
||||
if len(warn) > 0:
|
||||
|
|
@ -234,7 +234,7 @@ class Transaction(FrenchTransaction):
|
|||
]
|
||||
|
||||
|
||||
class AccountHistoryPage(BasePage):
|
||||
class AccountHistoryPage(Page):
|
||||
def get_table(self):
|
||||
tables=self.document.findall("//table[@class='tagTab pyjama']")
|
||||
for table in tables:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import shutil
|
|||
from datetime import datetime, date, time
|
||||
from decimal import Decimal
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bill import Detail, Bill
|
||||
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ class PdfPage():
|
|||
return sorted(details, key=_get_date, reverse=True)
|
||||
|
||||
|
||||
class HistoryPage(BasePage):
|
||||
class HistoryPage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.capabilities.bill import Subscription
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import StringIO
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.mech import ClientForm
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
|
||||
from .pages.article import ArticlePage, ActuPage
|
||||
from .pages.flashactu import FlashActuPage
|
||||
from weboob.tools.browser import BaseBrowser, BasePage
|
||||
from weboob.tools.browser import BaseBrowser, Page
|
||||
|
||||
|
||||
class IndexPage(BasePage):
|
||||
class IndexPage(Page):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
import dateutil.parser
|
||||
import re
|
||||
|
||||
from .job import LolixJobAdvert
|
||||
|
||||
|
||||
class AdvertPage(BasePage):
|
||||
class AdvertPage(Page):
|
||||
def get_job_advert(self, url, advert):
|
||||
tables = self.document.getroot().xpath('//td[@class="Contenu"]/table')
|
||||
rows = self.parser.select(tables[2], 'tr')
|
||||
|
|
@ -66,7 +66,7 @@ class AdvertPage(BasePage):
|
|||
return advert
|
||||
|
||||
|
||||
class SearchPage(BasePage):
|
||||
class SearchPage(Page):
|
||||
def iter_job_adverts(self, pattern):
|
||||
rows = self.document.getroot().xpath('//td[@class="Contenu"]/table/tr')
|
||||
for row in rows:
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
import re
|
||||
|
||||
|
||||
class PageAll(BasePage):
|
||||
class PageAll(Page):
|
||||
def post(self, name, content, max_days):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
|
||||
from weboob.capabilities.recipe import Recipe, Comment
|
||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class ResultsPage(BasePage):
|
||||
class ResultsPage(Page):
|
||||
""" Page which contains results as a list of recipies
|
||||
"""
|
||||
def iter_recipes(self):
|
||||
|
|
@ -54,7 +54,7 @@ class ResultsPage(BasePage):
|
|||
yield recipe
|
||||
|
||||
|
||||
class RecipePage(BasePage):
|
||||
class RecipePage(Page):
|
||||
""" Page which contains a recipe
|
||||
"""
|
||||
def get_recipe(self, id):
|
||||
|
|
|
|||
|
|
@ -19,14 +19,14 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.weather import Forecast, Current, City
|
||||
|
||||
import datetime
|
||||
import re
|
||||
|
||||
|
||||
class SearchCitiesPage(BasePage):
|
||||
class SearchCitiesPage(Page):
|
||||
def iter_cities(self):
|
||||
list = self.document.getroot().xpath('//ul[@class="list-style-1"]/li/a')
|
||||
for a in list:
|
||||
|
|
@ -36,7 +36,7 @@ class SearchCitiesPage(BasePage):
|
|||
yield mcity
|
||||
|
||||
|
||||
class WeatherPage(BasePage):
|
||||
class WeatherPage(Page):
|
||||
def get_temp_without_unit(self, temp_str):
|
||||
# It seems that the mechanize module give us some old style
|
||||
# ISO character
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.tools.html import html2text
|
||||
import re
|
||||
from datetime import datetime, time, timedelta
|
||||
from .job import MonsterJobAdvert
|
||||
|
||||
|
||||
class SearchPage(BasePage):
|
||||
class SearchPage(Page):
|
||||
def iter_job_adverts(self):
|
||||
re_id = re.compile('http://offre-emploi.monster.fr/(.*?).aspx', re.DOTALL)
|
||||
trs = self.document.getroot().xpath("//table[@class='listingsTable']/tbody/tr")
|
||||
|
|
@ -58,7 +58,7 @@ class SearchPage(BasePage):
|
|||
yield advert
|
||||
|
||||
|
||||
class AdvertPage(BasePage):
|
||||
class AdvertPage(Page):
|
||||
def get_job_advert(self, url, advert):
|
||||
re_id = re.compile('http://offre-emploi.monster.fr/(.*?).aspx', re.DOTALL)
|
||||
if advert is None:
|
||||
|
|
|
|||
|
|
@ -17,13 +17,13 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.radio import Radio
|
||||
from weboob.capabilities.audiostream import BaseAudioStream
|
||||
from weboob.tools.capabilities.streaminfo import StreamInfo
|
||||
|
||||
|
||||
class StreamsPage(BasePage):
|
||||
class StreamsPage(Page):
|
||||
def iter_radios_list(self):
|
||||
radio = Radio('necta')
|
||||
radio.title = u'Nectarine'
|
||||
|
|
@ -48,7 +48,7 @@ class StreamsPage(BasePage):
|
|||
yield radio
|
||||
|
||||
|
||||
class LivePage(BasePage):
|
||||
class LivePage(Page):
|
||||
def get_current_emission(self):
|
||||
current = StreamInfo(0)
|
||||
current.who = unicode(self.document.xpath('//playlist/now/entry/artist')[0].text)
|
||||
|
|
|
|||
|
|
@ -21,11 +21,11 @@
|
|||
from datetime import datetime, date, time
|
||||
from decimal import Decimal
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.bill import Detail
|
||||
|
||||
|
||||
class DetailsPage(BasePage):
|
||||
class DetailsPage(Page):
|
||||
|
||||
def on_loaded(self):
|
||||
self.details = []
|
||||
|
|
@ -54,12 +54,12 @@ def _get_date(detail):
|
|||
return detail.datetime
|
||||
|
||||
|
||||
class BillsPage(BasePage):
|
||||
class BillsPage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
||||
class HistoryPage(BasePage):
|
||||
class HistoryPage(Page):
|
||||
|
||||
def on_loaded(self):
|
||||
self.calls = []
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
|
||||
from weboob.capabilities.bill import Subscription
|
||||
from weboob.tools.capabilities.bank.transactions import FrenchTransaction
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from datetime import date
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -17,13 +17,13 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
from weboob.capabilities.radio import Radio
|
||||
from weboob.capabilities.audiostream import BaseAudioStream
|
||||
from weboob.tools.capabilities.streaminfo import StreamInfo
|
||||
|
||||
|
||||
class LivePage(BasePage):
|
||||
class LivePage(Page):
|
||||
def iter_radios_list(self):
|
||||
radio = Radio('nihon')
|
||||
radio.title = u'Nihon no Oto'
|
||||
|
|
@ -49,7 +49,7 @@ class LivePage(BasePage):
|
|||
yield radio
|
||||
|
||||
|
||||
class ProgramPage(BasePage):
|
||||
class ProgramPage(Page):
|
||||
def get_current_emission(self):
|
||||
current = StreamInfo(0)
|
||||
two_or_more = unicode(self.document.xpath('//p')[0].text).split('/////')[0].split(' - ')
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
from weboob.capabilities.collection import Collection
|
||||
from weboob.capabilities.image import BaseImage
|
||||
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.browser import Page
|
||||
|
||||
import re
|
||||
from datetime import datetime, timedelta
|
||||
|
|
@ -29,7 +29,7 @@ from datetime import datetime, timedelta
|
|||
from .video import NolifeTVVideo
|
||||
|
||||
|
||||
class VideoPage(BasePage):
|
||||
class VideoPage(Page):
|
||||
def get_video(self, video):
|
||||
if not video:
|
||||
video = NolifeTVVideo(self.group_dict['id'])
|
||||
|
|
@ -67,7 +67,7 @@ class VideoPage(BasePage):
|
|||
seconds=int(m.group(3)))
|
||||
return video
|
||||
|
||||
class VideoListPage(BasePage):
|
||||
class VideoListPage(Page):
|
||||
def is_list_empty(self):
|
||||
return self.document.getroot() == None
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ class VideoListPage(BasePage):
|
|||
video.title = video.title + ' - ' + strongs[3].text
|
||||
yield video
|
||||
|
||||
class FamilyPage(BasePage):
|
||||
class FamilyPage(Page):
|
||||
def iter_category(self):
|
||||
subs = list()
|
||||
|
||||
|
|
@ -109,7 +109,7 @@ class FamilyPage(BasePage):
|
|||
if m and m.group(1):
|
||||
yield Collection([m.group(1)], unicode(h1.text))
|
||||
|
||||
class AboPage(BasePage):
|
||||
class AboPage(Page):
|
||||
def get_available_videos(self):
|
||||
available = ['[Gratuit]']
|
||||
|
||||
|
|
@ -123,13 +123,13 @@ class AboPage(BasePage):
|
|||
return available
|
||||
|
||||
|
||||
class LoginPage(BasePage):
|
||||
class LoginPage(Page):
|
||||
def login(self, username, password):
|
||||
self.browser.select_form(name='login')
|
||||
self.browser['username'] = str(username)
|
||||
self.browser['password'] = str(password)
|
||||
self.browser.submit()
|
||||
|
||||
class HomePage(BasePage):
|
||||
class HomePage(Page):
|
||||
def is_logged(self):
|
||||
return len(self.document.xpath('//a[@href="deconnexion/"]')) == 1
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
import urllib
|
||||
|
||||
from weboob.tools.browser import BaseBrowser, BasePage
|
||||
from weboob.tools.browser import BaseBrowser, Page
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
|
||||
from .pages import LoginPage, ThreadPage, MessagesPage, PostMessagePage, ProfilePage, PhotosPage, VisitsPage, QuickMatchPage, SentPage
|
||||
|
|
@ -45,7 +45,7 @@ class OkCBrowser(BaseBrowser):
|
|||
ENCODING = 'UTF-8'
|
||||
PAGES = OrderedDict((
|
||||
('https://%s/login.*' % DOMAIN, LoginPage),
|
||||
('http://%s/home' % DOMAIN, BasePage),
|
||||
('http://%s/home' % DOMAIN, Page),
|
||||
('http://%s/messages' % DOMAIN, ThreadPage),
|
||||
('http://%s/messages\?compose=1' % DOMAIN, PostMessagePage),
|
||||
('http://\w+.okcupid.com/messages\?.*', MessagesPage),
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue