本文整理汇总了Python中weboob.capabilities.bill.Detail.datetime方法的典型用法代码示例。如果您正苦于以下问题:Python Detail.datetime方法的具体用法?Python Detail.datetime怎么用?Python Detail.datetime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类weboob.capabilities.bill.Detail
的用法示例。
在下文中一共展示了Detail.datetime方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: iter_payment_details
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def iter_payment_details(self, sub):
if sub._id.isdigit():
idx = 0
else:
idx = sub._id.replace('AFFILIE', '')
if len(self.document.xpath('//div[@class="centrepage"]/h2')) > idx or self.document.xpath('//table[@id="DetailPaiement3"]') > idx:
id_str = self.document.xpath('//div[@class="centrepage"]/h2')[idx].text.strip()
m = re.match('.*le (.*) pour un montant de.*', id_str)
if m:
id_str = m.group(1)
id_date = datetime.strptime(id_str, '%d/%m/%Y').date()
id = sub._id + "." + datetime.strftime(id_date, "%Y%m%d")
table = self.document.xpath('//table[@class="tableau"]')[idx].xpath('.//tr')
line = 1
last_date = None
for tr in table:
tds = tr.xpath('.//td')
if len(tds) == 0:
continue
date_str = tds[0].text
det = Detail()
det.id = id + "." + str(line)
det.label = unicode(tds[1].text.strip())
if date_str is None or date_str == '':
det.infos = u''
det.datetime = last_date
else:
det.infos = u'Payé ' + unicode(re.sub('[^\d,-]+', '', tds[2].text)) + u'€ / Base ' + unicode(re.sub('[^\d,-]+', '', tds[3].text)) + u'€ / Taux ' + unicode(re.sub('[^\d,-]+', '', tds[4].text)) + '%'
det.datetime = datetime.strptime(date_str, '%d/%m/%Y').date()
last_date = det.datetime
det.price = Decimal(re.sub('[^\d,-]+', '', tds[5].text).replace(',', '.'))
line = line + 1
yield det
示例2: iter_history
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def iter_history(self):
tables = self.doc.xpath('//table[contains(concat(" ", @class, " "), " cTableauTriable ")]')
if len(tables) > 0:
lines = tables[0].xpath('.//tr')
sno = 0
for tr in lines:
list_a = tr.xpath('.//a')
if len(list_a) == 0:
continue
date = tr.xpath('.//td')[0].text.strip()
lot = list_a[0].text.replace('(*)', '').strip()
if lot == 'SNL':
sno = sno + 1
lot = lot + str(sno)
factures = tr.xpath('.//div[@class="cAlignGauche"]/a')
factures_lbl = ''
for a in factures:
factures_lbl = factures_lbl + a.text.replace('(**)', '').strip() + ' '
montant = tr.xpath('.//div[@class="cAlignDroite"]')[0].text.strip()
det = Detail()
det.id = u''+lot
det.label = u''+lot
det.infos = u''+factures_lbl
det.datetime = datetime.strptime(date, "%d/%m/%Y").date()
det.price = Decimal(montant.replace(',', '.'))
yield det
示例3: get_calls
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def get_calls(self):
txt = self._parse_pdf()
pages = txt.split("DEBIT")
pages.pop(0) # remove headers
details = []
for page in pages:
page = page.split("RÉGLO MOBILE")[0].split("N.B. Prévoir")[0] # remove footers
lines = page.split("\n")
lines = [x for x in lines if len(x) > 0] # Remove empty lines
numitems = (len(lines) + 1) / 4 # Each line has five columns
lines.pop(0) # remove the extra € symbol
modif = 0
i = 0
while i < numitems:
if modif != 0:
numitems = (len(lines) + 1 + modif) / 4
base = i * 4 - modif
dateop = base
corres = base + 1
duree = base + 2
price = base + 3
if "Changement vers le Forfait" in lines[base]:
modif += 1
i += 1
continue
# Special case with 5 columns, the operation date is not in the first one
if len(re.split("(\d+\/\d+\/\d+)", lines[dateop])) < 2:
lines[base + 1] = lines[base] + " " + lines[base + 1]
dateop = base + 1
corres = base + 2
duree = base + 3
price = base + 4
modif -= 1
detail = Detail()
splits = re.split("(\d+\/\d+\/\d+)", lines[dateop])
mydate = date(*reversed([int(x) for x in splits[1].split("/")]))
mytime = time(*[int(x) for x in splits[2].split(":")])
detail.datetime = datetime.combine(mydate, mytime)
if lines[corres] == "-":
lines[corres] = ""
if lines[duree] == "-":
lines[duree] = ""
detail.label = (
unicode(splits[0], encoding="utf-8", errors="replace") + u" " + lines[corres] + u" " + lines[duree]
)
# Special case with only 3 columns, we insert a price
if "Activation de votre ligne" in detail.label:
lines.insert(price, "0")
try:
detail.price = Decimal(lines[price].replace(",", "."))
except:
# In some special cases, there are no price column. Try to detect it
if "Inclus" not in lines[price]:
modif += 1
detail.price = Decimal(0)
details.append(detail)
i += 1
return sorted(details, key=_get_date, reverse=True)
示例4: iter_payment_details
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def iter_payment_details(self, sub):
if sub._id.isdigit():
idx = 0
else:
idx = sub._id.replace("AFFILIE", "")
if (
len(self.document.xpath('//div[@class="centrepage"]/h3')) > idx
or self.document.xpath('//table[@id="DetailPaiement3"]') > idx
):
id_str = self.document.xpath('//div[@class="centrepage"]/h3')[idx].text.strip()
m = re.match(".*le (.*) pour un montant de.*", id_str)
if m:
id_str = m.group(1)
id_date = datetime.strptime(id_str, "%d/%m/%Y").date()
id = sub._id + "." + datetime.strftime(id_date, "%Y%m%d")
table = self.document.xpath('//table[@id="DetailPaiement3"]')[idx].xpath(".//tr")
line = 1
last_date = None
for tr in table:
tds = tr.xpath(".//td")
if len(tds) == 0:
continue
date_str = tds[0].text
det = Detail()
det.id = id + "." + str(line)
det.label = unicode(tds[1].text.strip())
if date_str is None or date_str == "":
det.infos = u""
det.datetime = last_date
else:
det.infos = (
u"Payé "
+ unicode(re.sub("[^\d,-]+", "", tds[2].text))
+ u"€ / Base "
+ unicode(re.sub("[^\d,-]+", "", tds[3].text))
+ u"€ / Taux "
+ unicode(re.sub("[^\d,-]+", "", tds[4].text))
+ "%"
)
det.datetime = datetime.strptime(date_str, "%d/%m/%Y").date()
last_date = det.datetime
det.price = Decimal(re.sub("[^\d,-]+", "", tds[5].text).replace(",", "."))
line = line + 1
yield det
示例5: get_calls
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def get_calls(self):
txt = self._parse_pdf()
pages = txt.split("DEBIT")
pages.pop(0) # remove headers
details = []
for page in pages:
page = page.split('RÉGLO MOBILE')[0].split('N.B. Prévoir')[0] # remove footers
lines = page.split('\n')
lines = [x for x in lines if len(x) > 0] # Remove empty lines
numitems = (len(lines) + 1) / 4 # Each line has five columns
lines.pop(0)
modif = 0
i = 0
while i < numitems:
if modif != 0:
numitems = ((len(lines) + 1 + modif) / 4)
nature = i * 4 - modif
dateop = nature
corres = nature + 1
duree = corres + 1
price = duree + 1
if "Changement vers le Forfait" in lines[nature]:
modif += 1
i += 1
continue
if len(re.split("(\d+\/\d+\/\d+)", lines[dateop])) < 2:
lines[nature + 1] = lines[nature] + " " + lines[nature + 1]
dateop = nature + 1
corres = dateop + 1
duree = corres + 1
price = duree + 1
modif -= 1
if not lines[corres][0:3].isdigit() and not lines[corres][0:3] == "-":
modif += 1
detail = Detail()
splits = re.split("(\d+\/\d+\/\d+)", lines[dateop])
mydate = date(*reversed([int(x) for x in splits[1].split("/")]))
mytime = time(*[int(x) for x in splits[2].split(":")])
detail.datetime = datetime.combine(mydate, mytime)
if lines[corres] == '-':
lines[corres] = ""
if lines[duree] == '-':
lines[duree] = ''
detail.label = unicode(splits[0], encoding='utf-8', errors='replace') + u" " + lines[corres] + u" " + lines[duree]
# Special case with only 3 columns, we insert a price
if "Activation de votre ligne" in detail.label:
lines.insert(price, '0')
try:
detail.price = Decimal(lines[price].replace(',', '.'))
except:
detail.price = Decimal(0)
details.append(detail)
i += 1
return sorted(details, key=_get_date, reverse=True)
示例6: iter_payments
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def iter_payments(self, sub):
table = self.browser.page.document.xpath('//table[contains(@summary, "Informations sur mon")]')[0]
for tr in table.xpath('.//tr'):
list_tds = tr.xpath('.//td')
if len(list_tds) == 0:
continue
date = datetime.strptime(self.parser.tocleanstring(list_tds[0]), "%d/%m/%Y").date()
amount = self.parser.tocleanstring(list_tds[1])
if amount is None:
continue
det = Detail()
det.id = sub._id + "." + date.strftime("%Y%m%d")
det.price = Decimal(re.sub('[^\d,-]+', '', amount).replace(',', '.'))
det.datetime = date
det.label = unicode(self.parser.tocleanstring(list_tds[2]))
yield det
示例7: on_loaded
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def on_loaded(self):
self.calls = []
for tr in self.document.xpath('//tr'):
tds = tr.xpath('td')
if tds[0].text is None or tds[0].text == "Date":
pass
else:
detail = Detail()
mydate = date(*reversed([int(x) for x in tds[0].text.split(' ')[0].split("/")]))
mytime = time(*[int(x) for x in tds[0].text.split(' ')[2].split(":")])
detail.datetime = datetime.combine(mydate, mytime)
detail.label = u' '.join([unicode(td.text.strip()) for td in tds[1:4] if td.text is not None])
try:
detail.price = Decimal(tds[4].text[0:4].replace(',', '.'))
except:
detail.price = Decimal(0)
self.calls.append(detail)
示例8: iter_history
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def iter_history(self):
table = self.document.xpath('//table[contains(concat(" ", @class, " "), " cTableauTriable ")]')[0].xpath('.//tr')
for tr in table:
list_a = tr.xpath('.//a')
if len(list_a) == 0:
continue
date = tr.xpath('.//td')[0].text.strip()
lot = list_a[0].text
factures = tr.xpath('.//div[@class="cAlignGauche"]/a')
factures_lbl = ''
for a in factures:
factures_lbl = factures_lbl + a.text + ' '
montant = tr.xpath('.//div[@class="cAlignDroite"]')[0].text.strip()
det = Detail()
det.id = lot
det.label = lot
det.infos = factures_lbl
det.datetime = datetime.strptime(date, "%d/%m/%Y").date()
det.price = Decimal(montant.replace(',', '.'))
yield det
示例9: on_loaded
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def on_loaded(self):
self.calls = []
for tr in self.document.xpath('//tr'):
try:
attrib = tr.attrib["class"]
except:
continue
if attrib == "even" or attrib == "odd":
label = u''
tddate = tr.find('td[@class="middle nowrap"]')
for td in tr.xpath('td[@class="long"]'):
label += unicode(td.text.strip()) + u' '
tdprice = tr.xpath('td[@class="price"]')
label += u'(' + unicode(tdprice[0].text.strip()) + u')'
price = Decimal(tdprice[1].text.strip().replace(',', '.'))
detail = Detail()
mydate = date(*reversed([int(x) for x in tddate.text.strip().split(' ')[0].split(".")]))
mytime = time(*[int(x) for x in tddate.text.strip().split(' ')[1].split(":")])
detail.datetime = datetime.combine(mydate, mytime)
detail.label = label
detail.price = price
self.calls.append(detail)
示例10: get_calls
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def get_calls(self):
table = self.document.xpath('//table/tbody')[0]
for tr in table.xpath('tr'):
tds = tr.xpath('td')
rawdate = tds[0].text_content()
splitdate = rawdate.split('-')
month_no = self.months.index(splitdate[1]) + 1
mydate = date(int(splitdate[2]), month_no, int(splitdate[0]))
rawtime = tds[1].text_content()
mytime = time(*[int(x) for x in rawtime.split(":")])
price = re.sub(u'[^\d\-\.]', '', tds[6].text)
detail = Detail()
detail.datetime = datetime.combine(mydate, mytime)
detail.label = u"%s from %s to %s - %s" % (tds[2].text, tds[3].text, tds[4].text, tds[5].text)
try:
detail.price = Decimal(price)
except InvalidOperation:
detail.price = Decimal(0) # free calls
detail.currency = 'EUR'
yield detail
示例11: iter_payment_details
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def iter_payment_details(self, sub):
id_str = self.doc.xpath('//div[@class="entete container"]/h2')[0].text.strip()
m = re.match('.*le (.*) pour un montant de.*', id_str)
if m:
blocs_benes = self.doc.xpath('//span[contains(@id,"nomBeneficiaire")]')
blocs_prestas = self.doc.xpath('//table[@id="tableauPrestation"]')
i = 0
last_bloc = len(blocs_benes)
for i in range(0, last_bloc):
bene = blocs_benes[i].text;
id_str = m.group(1)
id_date = datetime.strptime(id_str, '%d/%m/%Y').date()
id = sub._id + "." + datetime.strftime(id_date, "%Y%m%d")
table = blocs_prestas[i].xpath('.//tr')
line = 1
last_date = None
for tr in table:
tds = tr.xpath('.//td')
if len(tds) == 0:
continue
det = Detail()
# TO TEST : Indemnités journalières : Pas pu tester de cas de figure similaire dans la nouvelle mouture du site
if len(tds) == 4:
date_str = Regexp(pattern=r'.*<br/>(\d+/\d+/\d+)\).*').filter(tds[0].text)
det.id = id + "." + str(line)
det.label = tds[0].xpath('.//span')[0].text.strip()
jours = tds[1].text
if jours is None:
jours = '0'
montant = tds[2].text
if montant is None:
montant = '0'
price = tds[3].text
if price is None:
price = '0'
if date_str is None or date_str == '':
det.infos = u''
det.datetime = last_date
else:
det.infos = '%s (%sj) * %s€' % (date_str, re.sub(r'[^\d,-]+', '', jours), re.sub(r'[^\d,-]+', '', montant))
det.datetime = datetime.strptime(date_str.split(' ')[3], '%d/%m/%Y').date()
last_date = det.datetime
det.price = Decimal(re.sub('[^\d,-]+', '', price).replace(',', '.'))
if len(tds) == 5:
date_str = Regexp(pattern=r'\w*(\d{2})/(\d{2})/(\d{4}).*', template='\\1/\\2/\\3', default="").filter("".join(tds[0].itertext()))
det.id = id + "." + str(line)
det.label = '%s - %s' % (bene, tds[0].xpath('.//span')[0].text.strip())
paye = tds[1].text
if paye is None:
paye = '0'
base = tds[2].text
if base is None:
base = '0'
tdtaux = tds[3].xpath('.//span')[0].text
if tdtaux is None:
taux = '0'
else:
taux = tdtaux.strip()
tdprice = tds[4].xpath('.//span')[0].text
if tdprice is None:
price = '0'
else:
price = tdprice.strip()
if date_str is None or date_str == '':
det.infos = u''
det.datetime = last_date
else:
det.infos = u' Payé %s€ / Base %s€ / Taux %s%%' % (re.sub(r'[^\d,-]+', '', paye), re.sub(r'[^\d,-]+', '', base), re.sub('[^\d,-]+', '', taux))
det.datetime = datetime.strptime(date_str, '%d/%m/%Y').date()
last_date = det.datetime
det.price = Decimal(re.sub('[^\d,-]+', '', price).replace(',', '.'))
line = line + 1
yield det
示例12: iter_payment_details
# 需要导入模块: from weboob.capabilities.bill import Detail [as 别名]
# 或者: from weboob.capabilities.bill.Detail import datetime [as 别名]
def iter_payment_details(self, sub):
if CleanText('//div[@class="infoPrestationsAssure"]/span')(self.doc).startswith('Pour %s' % sub.subscriber):
id_str = self.doc.xpath('//div[@class="centrepage"]/h2')[0].text.strip()
m = re.match('.*le (.*) pour un montant de.*', id_str)
if m:
id_str = m.group(1)
id_date = datetime.strptime(id_str, '%d/%m/%Y').date()
id = sub._id + "." + datetime.strftime(id_date, "%Y%m%d")
table = self.doc.xpath('//div[@class="infoPrestationsAssure"]//table')[0].xpath('.//tr')
line = 1
last_date = None
for tr in table:
tds = tr.xpath('.//td')
if len(tds) == 0:
continue
det = Detail()
if len(tds) == 5:
date_str = tds[0].text
det.id = id + "." + str(line)
det.label = unicode(tds[1].text.strip())
jours = tds[2].text
if jours is None:
jours = '0'
montant = tds[3].text
if montant is None:
montant = '0'
price = tds[4].text
if price is None:
price = '0'
if date_str is None or date_str == '':
det.infos = u''
det.datetime = last_date
else:
det.infos = date_str + u' (' + unicode(re.sub('[^\d,-]+', '', jours)) + u'j) * ' + unicode(re.sub('[^\d,-]+', '', montant)) + u'€'
det.datetime = datetime.strptime(date_str.split(' ')[3], '%d/%m/%Y').date()
last_date = det.datetime
det.price = Decimal(re.sub('[^\d,-]+', '', price).replace(',', '.'))
if len(tds) == 6:
date_str = tds[0].text
det.id = id + "." + str(line)
det.label = unicode(tds[1].text.strip())
paye = tds[2].text
if paye is None:
paye = '0'
base = tds[3].text
if base is None:
base = '0'
taux = tds[4].text
if taux is None:
taux = '0'
price = tds[5].text
if price is None:
price = '0'
if date_str is None or date_str == '':
det.infos = u''
det.datetime = last_date
else:
det.infos = u'Payé ' + unicode(re.sub('[^\d,-]+', '', paye)) + u'€ / Base ' + unicode(re.sub('[^\d,-]+', '', base)) + u'€ / Taux ' + unicode(re.sub('[^\d,-]+', '', taux)) + '%'
det.datetime = datetime.strptime(date_str, '%d/%m/%Y').date()
last_date = det.datetime
det.price = Decimal(re.sub('[^\d,-]+', '', price).replace(',', '.'))
line = line + 1
yield det