Merge lp:~chsn/parcel-tracker/parcel-tracker-fedex into lp:parcel-tracker

Proposed by Erik Christiansson
Status: Merged
Approved by: Vsevolod Velichko
Approved revision: 166
Merged at revision: 166
Proposed branch: lp:~chsn/parcel-tracker/parcel-tracker-fedex
Merge into: lp:parcel-tracker
Diff against target: 52 lines (+9/-21)
1 file modified
parcel_tracker_lib/postservices/fedexcom.py (+9/-21)
To merge this branch: bzr merge lp:~chsn/parcel-tracker/parcel-tracker-fedex
Reviewer Review Type Date Requested Status
Vsevolod Velichko Pending
Review via email: mp+171042@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'parcel_tracker_lib/postservices/fedexcom.py'
2--- parcel_tracker_lib/postservices/fedexcom.py 2013-02-17 00:10:02 +0000
3+++ parcel_tracker_lib/postservices/fedexcom.py 2013-06-24 09:38:27 +0000
4@@ -4,7 +4,7 @@
5 ### BEGIN LICENSE
6 # Copyright © 2012 Vsevolod Velichko <torkvema@gmail.com>
7 # Copyright © 2012 Carlos da Costa <c.costa@outlook.com>
8-# Copyright © 2012 Erik Christiansson <erik@christiansson.net>
9+# Copyright © 2013 Erik Christiansson <erik@christiansson.net>
10 # This program is free software: you can redistribute it and/or modify it
11 # under the terms of the GNU General Public License version 3, as published
12 # by the Free Software Foundation.
13@@ -24,31 +24,19 @@
14 import json
15 from dateutil.parser import parse as parsedate
16
17-
18 class FedexComService(TrackingService):
19 """ FedEx """
20
21 name = "Fedex"
22- url = 'http://www.fedex.com/Tracking'
23- post = 'clienttype=dotcom&track=y&ascend_header=1&cntry_code=us&cntry_code=ru&language=english&mi=n&tracknumbers=%(number)s&action=1&language=null&cntry_code=null&clienttype=null'
24+ url = 'https://www.fedex.com/trackingCal/track'
25+ post = 'data=%%7B%%22TrackPackagesRequest%%22%%3A%%7B%%22appType%%22%%3A%%22wtrk%%22%%2C%%22uniqueKey%%22%%3A%%22%%22%%2C%%22processingParameters%%22%%3A%%7B%%22anonymousTransaction%%22%%3Atrue%%2C%%22clientId%%22%%3A%%22WTRK%%22%%2C%%22returnDetailedErrors%%22%%3Atrue%%2C%%22returnLocalizedDateTime%%22%%3Afalse%%7D%%2C%%22trackingInfoList%%22%%3A%%5B%%7B%%22trackNumberInfo%%22%%3A%%7B%%22trackingNumber%%22%%3A%%22%(number)s%%22%%2C%%22trackingQualifier%%22%%3A%%22%%22%%2C%%22trackingCarrier%%22%%3A%%22%%22%%7D%%7D%%5D%%7D%%7D&action=trackpackages&locale=en_US&format=json&version=99'
26
27 def _parse_page(self, html):
28- html = html.decode('utf-8', 'ignore')
29- res = re.search(r'var detailInfoObject\s*=\s*(\{.+\})', html)
30- if res is None:
31- return []
32- history = None
33 try:
34- js = json.loads(res.group(1))
35- history = js['scans']
36+ js = json.loads(html.replace('\\x', '\u00'))
37+ if len(js['TrackPackagesResponse']['packageList'][0]['trackingQualifier']) > 0:
38+ return [(e['status'], parsedate('%s %s' % (e['date'], e['time'])), e['scanLocation'])
39+ for e in js['TrackPackagesResponse']['packageList'][0]['scanEventList']]
40 except:
41- return []
42- results = []
43- for op in history:
44- opdate = parsedate('%s, %s' % (op['scanDate'], op['scanTime']))
45- location = op['scanLocation'] if 'scanLocation' in op else ''
46- operation = op['scanStatus']
47- if 'scanComments' in op:
48- operation += '. ' + op['scanComments']
49- results.append((operation, opdate, location))
50- return results
51+ pass
52+ return []

Subscribers

People subscribed via source and target branches