[suivi] Fix TNT tracking

This commit is contained in:
Max 2015-10-30 20:55:02 +01:00
parent 91b550754f
commit f15ebd7c02
2 changed files with 20 additions and 6 deletions

View File

@ -16,12 +16,19 @@ from more import Response
# POSTAGE SERVICE PARSERS ############################################ # POSTAGE SERVICE PARSERS ############################################
def get_tnt_info(track_id): def get_tnt_info(track_id):
values = []
data = getURLContent('www.tnt.fr/public/suivi_colis/recherche/' data = getURLContent('www.tnt.fr/public/suivi_colis/recherche/'
'visubontransport.do?bonTransport=%s' % track_id) 'visubontransport.do?bonTransport=%s' % track_id)
soup = BeautifulSoup(data) soup = BeautifulSoup(data)
status = soup.find('p', class_='suivi-title-selected') status_list = soup.find('div', class_='result__content')
if status: if not status_list:
return status.get_text() return None
last_status = status_list.find('div', class_='roster')
if last_status:
for info in last_status.find_all('div', class_='roster__item'):
values.append(info.get_text().strip())
if len(values) == 3:
return (values[0], values[1], values[2])
def get_colissimo_info(colissimo_id): def get_colissimo_info(colissimo_id):
@ -106,8 +113,14 @@ def get_laposte_info(laposte_id):
def handle_tnt(tracknum): def handle_tnt(tracknum):
info = get_tnt_info(tracknum) info = get_tnt_info(tracknum)
if info: if info:
status, date, place = info
placestr = ''
if place:
placestr = ' à \x02{place}\x0f'
return ('Le colis \x02{trackid}\x0f a actuellement le status: ' return ('Le colis \x02{trackid}\x0f a actuellement le status: '
'\x02{status}\x0F'.format(trackid=tracknum, status=info)) '\x02{status}\x0F mis à jour le \x02{date}\x0f{place}.'
.format(trackid=tracknum, status=status,
date=re.sub(r'\s+', ' ', date), place=placestr))
def handle_laposte(tracknum): def handle_laposte(tracknum):

View File

@ -92,7 +92,8 @@ def parselisten(msg):
def parseresponse(msg): def parseresponse(msg):
global LAST_URLS global LAST_URLS
if hasattr(msg, "text") and isinstance(msg.text, str): if hasattr(msg, "text") and isinstance(msg.text, str):
urls = re.findall("([a-zA-Z0-9+.-]+:(?://)?(?:[^ :/]+:[0-9]+)?[^ :]+)", msg.text) urls = re.findall("([a-zA-Z0-9+.-]+:(?://)?(?:[^ :/]+:[0-9]+)?[^ :]+)",
msg.text)
for url in urls: for url in urls:
o = urlparse(web._getNormalizedURL(url), "http") o = urlparse(web._getNormalizedURL(url), "http")
@ -130,7 +131,7 @@ def cmd_reduceurl(msg):
raise IMException("I have no more URL to reduce.") raise IMException("I have no more URL to reduce.")
if len(msg.args) > 4: if len(msg.args) > 4:
raise IMException("I cannot reduce that maby URLs at once.") raise IMException("I cannot reduce that many URLs at once.")
else: else:
minify += msg.args minify += msg.args