Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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)
|