diff --git a/modules/colisprive/__init__.py b/modules/colisprive/__init__.py
new file mode 100644
index 00000000..27e92c23
--- /dev/null
+++ b/modules/colisprive/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+# Copyright(C) 2014 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 ColispriveBackend
+
+
+__all__ = ['ColispriveBackend']
diff --git a/modules/colisprive/backend.py b/modules/colisprive/backend.py
new file mode 100644
index 00000000..4c7a3fca
--- /dev/null
+++ b/modules/colisprive/backend.py
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+
+# Copyright(C) 2014 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
+from weboob.tools.backend import BaseBackend
+
+from .browser import ColispriveBrowser
+
+__all__ = ['ColispriveBackend']
+
+
+class ColispriveBackend(BaseBackend, ICapParcel):
+ NAME = 'colisprive'
+ DESCRIPTION = u'Colisprive parcel tracking website'
+ MAINTAINER = u'Florent Fourcot'
+ EMAIL = 'weboob@flo.fourcot.fr'
+ VERSION = '0.i'
+ LICENSE = 'AGPLv3+'
+
+ BROWSER = ColispriveBrowser
+
+ def get_parcel_tracking(self, _id):
+ with self.browser:
+ return self.browser.get_tracking_info(_id)
diff --git a/modules/colisprive/browser.py b/modules/colisprive/browser.py
new file mode 100644
index 00000000..e0130a2a
--- /dev/null
+++ b/modules/colisprive/browser.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+
+# Copyright(C) 2014 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, BrowserBanned
+from .pages import TrackPage
+
+
+__all__ = ['ColispriveBrowser']
+
+
+class ColispriveBrowser(BaseBrowser):
+ PROTOCOL = 'https'
+ DOMAIN = 'www.colisprive.com'
+ ENCODING = 'utf8'
+
+ PAGES = {'https://www.colisprive.com/moncolis/pages/detailColis.aspx.*': TrackPage,
+ }
+
+ def get_tracking_info(self, _id):
+ self.location('https://www.colisprive.com/moncolis/pages/detailColis.aspx?numColis=%s' % _id)
+ if not self.is_on_page(TrackPage):
+ return None
+
+ return self.page.get_info(_id)
diff --git a/modules/colisprive/pages.py b/modules/colisprive/pages.py
new file mode 100644
index 00000000..cf13619d
--- /dev/null
+++ b/modules/colisprive/pages.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+
+# Copyright(C) 2014 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 datetime import date
+from weboob.tools.browser import BasePage
+from weboob.capabilities.parcel import Parcel, Event
+
+
+__all__ = ['TrackPage']
+
+
+class TrackPage(BasePage):
+ def get_info(self, _id):
+ p = Parcel(_id)
+
+ statustr = self.document.xpath('//tr[@class="bandeauText"]')[0]
+ status = self.parser.tocleanstring(statustr.xpath('td')[1])
+
+ p.info = status
+
+ p.history = []
+ for i, tr in enumerate(self.document.xpath('//div[@class="mainbloc4Evt"]//tr')):
+ tds = tr.findall('td')
+ try:
+ if tds[0].attrib['class'] != "titrestatutdate2":
+ continue
+ except:
+ continue
+
+ ev = Event(i)
+ ev.location = None
+ ev.activity = self.parser.tocleanstring(tds[1])
+ ev.date = date(*reversed([int(x) for x in self.parser.tocleanstring(tds[0]).split('/')]))
+ p.history.append(ev)
+
+ return p