[sync_url] Sanitize path names on windows

This commit is contained in:
I-Al-Istannen 2020-11-10 15:27:12 +01:00
parent 9c4759103a
commit f2aba970fd

View File

@ -5,16 +5,27 @@ A simple script to download a course by name from ILIAS.
""" """
import argparse 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 urllib.parse import urlparse
from PFERD import Pferd from PFERD import Pferd
from PFERD.cookie_jar import CookieJar from PFERD.cookie_jar import CookieJar
from PFERD.ilias import (IliasCrawler, IliasElementType, from PFERD.ilias import (IliasCrawler, IliasElementType,
KitShibbolethAuthenticator) KitShibbolethAuthenticator)
from PFERD.transform import re_rename
from PFERD.utils import to_path 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: def main() -> None:
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--test-run", action="store_true") parser.add_argument("--test-run", action="store_true")
@ -59,7 +70,8 @@ def main() -> None:
target=folder, target=folder,
full_url=args.url, full_url=args.url,
cookies=args.cookies, cookies=args.cookies,
dir_filter=dir_filter dir_filter=dir_filter,
transform=sanitize_path
) )