Jacobmadwed commited on
Commit
b1281e2
·
verified ·
1 Parent(s): 4c60e93

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -0
app.py CHANGED
@@ -3,9 +3,11 @@ import logging
3
  import json
4
  import base64
5
  import uuid
 
6
  from datetime import datetime
7
  from flask import Flask, jsonify, request
8
  from threading import Thread
 
9
 
10
  # Configure logging
11
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
@@ -18,6 +20,9 @@ UPS_CLIENT_SECRET = 'DBAV77mzTWgI5oqWwXlA12hi62hgyUkesoGsREZsmjd1WHMSugpDUuBGTjy
18
  FEDEX_API_KEY = 'l705da56bf34254c3495f351772a6ea2d3'
19
  FEDEX_SECRET_KEY = 'ae27688af74341f094228fc67a36a8cc'
20
 
 
 
 
21
  def get_fedex_access_token():
22
  url = "https://apis.fedex.com/oauth/token"
23
  headers = {
@@ -233,6 +238,43 @@ def fetch_fedex_tracking_info(tracking_number):
233
  logger.error(f"Response content: {data}")
234
  raise
235
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  @app.route('/')
237
  def home():
238
  return "Tracking update service is running."
@@ -262,4 +304,8 @@ def get_fedex_tracking():
262
  return jsonify({"status": "error", "message": str(e)}), 500
263
 
264
  if __name__ == '__main__':
 
 
 
 
265
  app.run(host='0.0.0.0', port=7860)
 
3
  import json
4
  import base64
5
  import uuid
6
+ import os
7
  from datetime import datetime
8
  from flask import Flask, jsonify, request
9
  from threading import Thread
10
+ import time
11
 
12
  # Configure logging
13
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
 
20
  FEDEX_API_KEY = 'l705da56bf34254c3495f351772a6ea2d3'
21
  FEDEX_SECRET_KEY = 'ae27688af74341f094228fc67a36a8cc'
22
 
23
+ TRACKING_FILE = 'trackings.json'
24
+ UPDATE_INTERVAL = 60 * 1 # 10 minutes
25
+
26
  def get_fedex_access_token():
27
  url = "https://apis.fedex.com/oauth/token"
28
  headers = {
 
238
  logger.error(f"Response content: {data}")
239
  raise
240
 
241
+ def load_trackings():
242
+ if os.path.exists(TRACKING_FILE):
243
+ with open(TRACKING_FILE, 'r') as file:
244
+ return json.load(file)
245
+ return {}
246
+
247
+ def save_trackings(trackings):
248
+ with open(TRACKING_FILE, 'w') as file:
249
+ json.dump(trackings, file, indent=4)
250
+
251
+ def update_tracking_info():
252
+ while True:
253
+ try:
254
+ logger.info("Starting periodic tracking update")
255
+ trackings = load_trackings()
256
+ updated_trackings = {}
257
+
258
+ for tracking_number, tracking_info in trackings.items():
259
+ logger.info(f"Updating tracking info for {tracking_number}")
260
+ if tracking_info['courier'] == 'UPS':
261
+ updated_info = fetch_ups_tracking_info(tracking_number)
262
+ elif tracking_info['courier'] == 'FedEx':
263
+ updated_info = fetch_fedex_tracking_info(tracking_number)
264
+ else:
265
+ logger.warning(f"Unknown courier for tracking number {tracking_number}: {tracking_info['courier']}")
266
+ continue
267
+
268
+ updated_info['tracking'] = tracking_number
269
+ updated_trackings[tracking_number] = updated_info
270
+
271
+ save_trackings(updated_trackings)
272
+ logger.info("Tracking update completed")
273
+ except Exception as e:
274
+ logger.error(f"Error during periodic tracking update: {e}")
275
+
276
+ time.sleep(UPDATE_INTERVAL)
277
+
278
  @app.route('/')
279
  def home():
280
  return "Tracking update service is running."
 
304
  return jsonify({"status": "error", "message": str(e)}), 500
305
 
306
  if __name__ == '__main__':
307
+ # Start the background thread for periodic updates
308
+ update_thread = Thread(target=update_tracking_info, daemon=True)
309
+ update_thread.start()
310
+
311
  app.run(host='0.0.0.0', port=7860)