Add a script to track status of FedEx packages - localbin - leot's localbin (~/bin)
(HTM) hg clone https://bitbucket.org/iamleot/localbin
(DIR) Log
(DIR) Files
(DIR) Refs
---
(DIR) changeset d3bdacb262d155ce0f6e4e2b0864f18d6aa8f84a
(DIR) parent 3c3da635be1b30099c7a74d45272255ec4eb26bb
(HTM) Author: Leonardo Taccari <iamleot@gmail.com>
Date: Thu, 17 Oct 2019 16:13:27
Add a script to track status of FedEx packages
Diffstat:
fedextrack | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
---
diff -r 3c3da635be1b -r d3bdacb262d1 fedextrack
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fedextrack Thu Oct 17 16:13:27 2019 +0200
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+#
+# Get package status via www.fedex.com
+#
+
+
+#
+# Given a package tracking number request its status and pretty print
+# information about it.
+#
+package_status()
+{
+ tracking_number=$1
+
+ params='data={"TrackPackagesRequest":{"appType":"WTRK",'
+ params=${params}'"appDeviceType":"DESKTOP","supportHTML":false,'
+ params=${params}'"supportCurrentLocation":true,"uniqueKey":"",'
+ params=${params}'"processingParameters":{},"trackingInfoList":'
+ params=${params}'[{"trackNumberInfo":{"trackingNumber":'
+ params=${params}"\"${tracking_number}\","
+ params=${params}'"trackingQualifier":"","trackingCarrier":""}}]}}'
+ params=${params}'&action=trackpackages&locale=en_US&version=1'
+ params=${params}'&format=json'
+
+ curl -d "${params}" -gs "https://www.fedex.com/trackingCal/track" |
+ json2tsv | awk -F '\t' '
+ BEGIN {
+ bn = ".TrackPackagesResponse.packageList[].scanEventList[]"
+ }
+
+ $1 == bn { n++ }
+ $1 == bn ".date" { events[n, "date"] = $3 }
+ $1 == bn ".time" { events[n, "time"] = $3 }
+ $1 == bn ".gmtOffset" { events[n, "gmtoffset"] = $3 }
+ $1 == bn ".status" { events[n, "status"] = $3 }
+ $1 == bn ".scanLocation" { events[n, "location"] = $3 }
+
+ END {
+ for (i = n; i >= 1; i--) {
+ printf("%s %s %s\n",
+ events[i, "date"], events[i, "time"],
+ events[i, "gmtoffset"])
+ if (events[i, "location"])
+ printf("%s - ", events[i, "location"])
+ printf("%s\n", events[i, "status"])
+
+ if (i > 1)
+ printf("\n")
+ }
+ }
+'
+}
+
+
+if [ $# -lt 1 ]; then
+ echo "usage: $(basename $0) tracking_number ..."
+ exit 1
+fi
+
+
+for t in "$@"; do
+ package_status "$1"
+done