From 1256f9434efb95a8a5bef293a1794c47ea55bae9 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Sun, 5 Jul 2020 20:51:58 -0300 Subject: [PATCH] Encode activity name for urlopen (#70) * Encode activity name * Unquote activity name --- standalone.py | 4 +++- zwift_offline.py | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/standalone.py b/standalone.py index 8845da5..f7bb67e 100755 --- a/standalone.py +++ b/standalone.py @@ -11,9 +11,11 @@ from datetime import datetime if sys.version_info[0] > 2: import socketserver from http.server import SimpleHTTPRequestHandler + from urllib.parse import unquote else: import SocketServer as socketserver from SimpleHTTPServer import SimpleHTTPRequestHandler + from urllib2 import unquote import zwift_offline import protobuf.udp_node_msgs_pb2 as udp_node_msgs_pb2 @@ -65,7 +67,7 @@ def saveGhost(player_id, name): os.makedirs(load) except: return - f = '%s/%s-%s.bin' % (folder, time.strftime("%Y-%m-%d-%H-%M-%S"), name.replace('%20', ' ')) + f = '%s/%s-%s.bin' % (folder, time.strftime("%Y-%m-%d-%H-%M-%S"), unquote(name)) with open(f, 'wb') as fd: fd.write(rec.SerializeToString()) diff --git a/zwift_offline.py b/zwift_offline.py index b55749c..20ae0d7 100644 --- a/zwift_offline.py +++ b/zwift_offline.py @@ -16,9 +16,10 @@ from io import BytesIO from shutil import copyfile if sys.version_info[0] > 2: - import urllib.request as urllib2 + from urllib.parse import quote + from urllib.request import urlopen else: - import urllib2 + from urllib2 import quote, urlopen from flask import Flask, request, jsonify, g, redirect, render_template from google.protobuf.descriptor import FieldDescriptor @@ -400,7 +401,7 @@ def api_profiles_activities_id(player_id, activity_id): if request.args.get('upload-to-strava') != 'true': return response, 200 if os.path.exists(ENABLEGHOSTS_FILE): - urllib2.urlopen("http://cdn.zwift.com/saveghost?%s" % activity.name) + urlopen("http://cdn.zwift.com/saveghost?%s" % quote(activity.name)) # Unconditionally *try* and upload to strava and garmin since profile may # not be properly linked to strava/garmin (i.e. no 'upload-to-strava' call # will occur with these profiles).