diff --git a/modules/colissimo/__init__.py b/modules/colissimo/__init__.py new file mode 100644 index 00000000..15deaef8 --- /dev/null +++ b/modules/colissimo/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2013 Florent Fourcot +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + + +from .backend import ColissimoBackend + + +__all__ = ['ColissimoBackend'] diff --git a/modules/colissimo/backend.py b/modules/colissimo/backend.py new file mode 100644 index 00000000..f3f8bb9a --- /dev/null +++ b/modules/colissimo/backend.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2013 Florent Fourcot +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + +from weboob.capabilities.parcel import ICapParcel, Parcel, Event +from weboob.tools.backend import BaseBackend + +from .browser import ColissimoBrowser +from datetime import date + +__all__ = ['ColissimoBackend'] + + +class ColissimoBackend(BaseBackend, ICapParcel): + NAME = 'colissimo' + DESCRIPTION = u'Colissimo parcel tracking website' + MAINTAINER = u'Florent Fourcot' + EMAIL = 'weboob@flo.fourcot.fr' + VERSION = '0.h' + + BROWSER = ColissimoBrowser + + def get_parcel_tracking(self, _id): + data = self.browser.get_tracking_info(_id) + p = Parcel(_id) + label = data['message'] + p.info = label + # TODO, need to know the delivery message + if "blablabla" in label: + p.status = p.STATUS_ARRIVED + else: + p.status = p.STATUS_IN_TRANSIT + + ev = Event(0) + ev.activity = label + ev.date = date(*reversed([int(x) for x in data['date'].split("/")])) + p.history = [ev] + + return p diff --git a/modules/colissimo/browser.py b/modules/colissimo/browser.py new file mode 100644 index 00000000..e1626da6 --- /dev/null +++ b/modules/colissimo/browser.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2013 Florent Fourcot +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + +from weboob.tools.json import json +from weboob.tools.browser import BaseBrowser + + +__all__ = ['ColissimoBrowser'] + + +class ColissimoBrowser(BaseBrowser): + PROTOCOL = 'http' + DOMAIN = 'www.laposte.fr' + ENCODING = None + USER_AGENT = BaseBrowser.USER_AGENTS['android'] + + api_key = 'd112dc5c716d443af02b13bf708f73985e7ee943' + + def get_tracking_info(self, _id): + json_data = self.readurl('/outilsuivi/web/suiviInterMetiers.php?key=%s&method=json&code=%s' % (self.api_key, _id)) + return json.loads(json_data)