From f2aba970fd572161f614f773916f85d03d8dc34d Mon Sep 17 00:00:00 2001 From: I-Al-Istannen Date: Tue, 10 Nov 2020 15:27:12 +0100 Subject: [PATCH] [sync_url] Sanitize path names on windows --- sync_url.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sync_url.py b/sync_url.py index d2dce94..cb837a2 100755 --- a/sync_url.py +++ b/sync_url.py @@ -5,16 +5,27 @@ A simple script to download a course by name from ILIAS. """ import argparse -from pathlib import Path +import os +import re +from pathlib import Path, PurePath +from typing import Optional from urllib.parse import urlparse from PFERD import Pferd from PFERD.cookie_jar import CookieJar from PFERD.ilias import (IliasCrawler, IliasElementType, KitShibbolethAuthenticator) +from PFERD.transform import re_rename from PFERD.utils import to_path +def sanitize_path(path: PurePath) -> Optional[PurePath]: + # Escape windows illegal path characters + if os.name == 'nt': + return PurePath(re.sub(r'[<>:"/\\|?]', "", str(path))) + return path + + def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("--test-run", action="store_true") @@ -59,7 +70,8 @@ def main() -> None: target=folder, full_url=args.url, cookies=args.cookies, - dir_filter=dir_filter + dir_filter=dir_filter, + transform=sanitize_path )