Fix generation of forum profile URLs

Fixes #196
This commit is contained in:
rubenwardy 2020-07-10 22:44:58 +01:00
parent c3d96c7459
commit b9e1be57e4
1 changed files with 19 additions and 1 deletions

View File

@ -9,6 +9,8 @@ from datetime import datetime
import urllib.request
import os.path
import time, re
import urllib.parse as urlparse
from urllib.parse import urlencode
def urlEncodeNonAscii(b):
return re.sub('[\x80-\xFF]', lambda c: '%%%02x' % ord(c.group(0)), b)
@ -71,8 +73,24 @@ def __extract_signature(soup):
else:
return res[0]
def getProfileURL(url, username):
url = urlparse.urlparse(url)
# Update path
url = url._replace(path="/memberlist.php")
# Set query args
query = dict(urlparse.parse_qsl(url.query))
query.update({ "un": username, "mode": "viewprofile" })
query_encoded = urlencode(query)
url = url._replace(query=query_encoded)
return urlparse.urlunparse(url)
def getProfile(url, username):
url = url + "/memberlist.php?mode=viewprofile&un=" + urlEncodeNonAscii(username)
url = getProfileURL(url, username)
req = urllib.request.urlopen(url, timeout=5)
if req.getcode() == 404: