Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -3,7 +3,6 @@ import logging
|
|
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
|
@@ -14,7 +13,6 @@ app = Flask(__name__)
|
|
14 |
CORS(app) # This will enable CORS for all routes
|
15 |
|
16 |
# Constants
|
17 |
-
TRACKING_FILE = 'https://capitolphotobooths.com/monday/trackings.json' # Update this path to your specific file location
|
18 |
UPDATE_INTERVAL = 60 * 10 # 10 minutes
|
19 |
|
20 |
UPS_CLIENT_ID = 'LKrZBgcSZ2v7vtAn3VAmEEBXqpkXD8zIEcZum97Eb8sSl7Fx'
|
@@ -22,14 +20,6 @@ UPS_CLIENT_SECRET = 'DBAV77mzTWgI5oqWwXlA12hi62hgyUkesoGsREZsmjd1WHMSugpDUuBGTjy
|
|
22 |
FEDEX_API_KEY = 'l705da56bf34254c3495f351772a6ea2d3'
|
23 |
FEDEX_SECRET_KEY = 'ae27688af74341f094228fc67a36a8cc'
|
24 |
|
25 |
-
# Initialize tracking file
|
26 |
-
def initialize_tracking_file():
|
27 |
-
if not os.path.exists(TRACKING_FILE):
|
28 |
-
with open(TRACKING_FILE, 'w') as f:
|
29 |
-
json.dump({}, f)
|
30 |
-
|
31 |
-
initialize_tracking_file()
|
32 |
-
|
33 |
# Configure logging
|
34 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
35 |
logger = logging.getLogger(__name__)
|
@@ -239,66 +229,6 @@ def fetch_ups_tracking_info(tracking_number):
|
|
239 |
logger.error(f"Response content: {e.response.text}")
|
240 |
raise
|
241 |
|
242 |
-
def load_trackings():
|
243 |
-
try:
|
244 |
-
if os.path.exists(TRACKING_FILE):
|
245 |
-
with open(TRACKING_FILE, 'r') as file:
|
246 |
-
content = file.read().strip()
|
247 |
-
if content:
|
248 |
-
trackings = json.loads(content)
|
249 |
-
logger.info(f"Loaded {len(trackings)} trackings from file")
|
250 |
-
return trackings
|
251 |
-
else:
|
252 |
-
logger.info("Tracking file is empty")
|
253 |
-
return {}
|
254 |
-
else:
|
255 |
-
logger.info(f"Tracking file {TRACKING_FILE} not found")
|
256 |
-
return {}
|
257 |
-
except json.JSONDecodeError:
|
258 |
-
logger.error("Error decoding JSON, file might be corrupted")
|
259 |
-
return {}
|
260 |
-
except Exception as e:
|
261 |
-
logger.error(f"Error loading trackings: {str(e)}")
|
262 |
-
logger.error(f"Traceback: {traceback.format_exc()}")
|
263 |
-
return {}
|
264 |
-
|
265 |
-
def save_trackings(trackings):
|
266 |
-
try:
|
267 |
-
with open(TRACKING_FILE, 'w') as file:
|
268 |
-
json.dump(trackings, file, indent=4)
|
269 |
-
logger.info(f"Saved {len(trackings)} trackings to file")
|
270 |
-
except Exception as e:
|
271 |
-
logger.error(f"Error saving trackings to {TRACKING_FILE}: {str(e)}")
|
272 |
-
logger.error(f"Traceback: {traceback.format_exc()}")
|
273 |
-
raise
|
274 |
-
|
275 |
-
def update_tracking_info():
|
276 |
-
while True:
|
277 |
-
try:
|
278 |
-
logger.info("Starting periodic tracking update")
|
279 |
-
trackings = load_trackings()
|
280 |
-
updated_trackings = {}
|
281 |
-
|
282 |
-
for tracking_number, tracking_info in trackings.items():
|
283 |
-
logger.info(f"Updating tracking info for {tracking_number}")
|
284 |
-
if tracking_info['courier'] == 'UPS':
|
285 |
-
updated_info = fetch_ups_tracking_info(tracking_number)
|
286 |
-
elif tracking_info['courier'] == 'FedEx':
|
287 |
-
updated_info = fetch_fedex_tracking_info(tracking_number)
|
288 |
-
else:
|
289 |
-
logger.warning(f"Unknown courier for tracking number {tracking_number}: {tracking_info['courier']}")
|
290 |
-
continue
|
291 |
-
|
292 |
-
updated_info['tracking'] = tracking_number
|
293 |
-
updated_trackings[tracking_number] = updated_info
|
294 |
-
|
295 |
-
save_trackings(updated_trackings)
|
296 |
-
logger.info("Tracking update completed")
|
297 |
-
except Exception as e:
|
298 |
-
logger.error(f"Error during periodic tracking update: {e}")
|
299 |
-
|
300 |
-
time.sleep(UPDATE_INTERVAL)
|
301 |
-
|
302 |
@app.route('/')
|
303 |
def home():
|
304 |
return "Tracking update service is running."
|
@@ -329,44 +259,5 @@ def get_fedex_tracking():
|
|
329 |
logger.error(f"Error in get_fedex_tracking: {e}")
|
330 |
return jsonify({"status": "error", "message": str(e)}), 500
|
331 |
|
332 |
-
@app.route('/save_tracking', methods=['POST'])
|
333 |
-
def save_tracking():
|
334 |
-
try:
|
335 |
-
tracking_info = request.json
|
336 |
-
if not tracking_info:
|
337 |
-
return jsonify({"status": "error", "message": "No data received"}), 400
|
338 |
-
|
339 |
-
logger.info("Received tracking info: %s", tracking_info) # Debug print
|
340 |
-
|
341 |
-
trackings = load_trackings()
|
342 |
-
tracking_number = tracking_info['tracking']
|
343 |
-
|
344 |
-
# If the tracking already exists, update only the new fields
|
345 |
-
if tracking_number in trackings:
|
346 |
-
trackings[tracking_number].update(tracking_info)
|
347 |
-
else:
|
348 |
-
trackings[tracking_number] = tracking_info
|
349 |
-
|
350 |
-
save_trackings(trackings)
|
351 |
-
logger.info(f"Saved tracking: {tracking_number}")
|
352 |
-
return jsonify({"status": "success", "message": "Tracking saved successfully"}), 200
|
353 |
-
except Exception as e:
|
354 |
-
logger.error(f"Error saving tracking: {str(e)}")
|
355 |
-
return jsonify({"status": "error", "message": str(e)}), 500
|
356 |
-
|
357 |
-
@app.route('/load_trackings', methods=['GET'])
|
358 |
-
def get_trackings():
|
359 |
-
try:
|
360 |
-
trackings = load_trackings()
|
361 |
-
logger.info("Loaded trackings: %s", trackings)
|
362 |
-
return jsonify(trackings), 200
|
363 |
-
except Exception as e:
|
364 |
-
logger.error(f"Error in get_trackings: {str(e)}")
|
365 |
-
return jsonify({"status": "error", "message": str(e)}), 500
|
366 |
-
|
367 |
if __name__ == '__main__':
|
368 |
-
# Start the background thread for periodic updates
|
369 |
-
update_thread = Thread(target=update_tracking_info, daemon=True)
|
370 |
-
update_thread.start()
|
371 |
-
|
372 |
app.run(host='0.0.0.0', port=7860)
|
|
|
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
|
|
|
13 |
CORS(app) # This will enable CORS for all routes
|
14 |
|
15 |
# Constants
|
|
|
16 |
UPDATE_INTERVAL = 60 * 10 # 10 minutes
|
17 |
|
18 |
UPS_CLIENT_ID = 'LKrZBgcSZ2v7vtAn3VAmEEBXqpkXD8zIEcZum97Eb8sSl7Fx'
|
|
|
20 |
FEDEX_API_KEY = 'l705da56bf34254c3495f351772a6ea2d3'
|
21 |
FEDEX_SECRET_KEY = 'ae27688af74341f094228fc67a36a8cc'
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
# Configure logging
|
24 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
25 |
logger = logging.getLogger(__name__)
|
|
|
229 |
logger.error(f"Response content: {e.response.text}")
|
230 |
raise
|
231 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
@app.route('/')
|
233 |
def home():
|
234 |
return "Tracking update service is running."
|
|
|
259 |
logger.error(f"Error in get_fedex_tracking: {e}")
|
260 |
return jsonify({"status": "error", "message": str(e)}), 500
|
261 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
262 |
if __name__ == '__main__':
|
|
|
|
|
|
|
|
|
263 |
app.run(host='0.0.0.0', port=7860)
|