mirror of
https://github.com/Garmelon/PFERD.git
synced 2023-12-21 10:23:01 +01:00
Move "sanitize_windows_path" to PFERD.transform
This commit is contained in:
parent
98834c9c95
commit
cd90a60dee
@ -5,6 +5,8 @@ only files whose names match a regex, or renaming files from one numbering
|
||||
scheme to another.
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
from dataclasses import dataclass
|
||||
from pathlib import PurePath
|
||||
from typing import Callable, List, Optional, TypeVar
|
||||
@ -45,7 +47,8 @@ def apply_transform(
|
||||
|
||||
# Transform combinators
|
||||
|
||||
keep = lambda path: path
|
||||
def keep(path: PurePath) -> Optional[PurePath]:
|
||||
return path
|
||||
|
||||
def attempt(*args: Transform) -> Transform:
|
||||
def inner(path: PurePath) -> Optional[PurePath]:
|
||||
@ -125,3 +128,15 @@ def re_rename(regex: Regex, target: str) -> Transform:
|
||||
return path.with_name(target.format(*groups))
|
||||
return None
|
||||
return inner
|
||||
|
||||
|
||||
def sanitize_windows_path(path: PurePath) -> Optional[PurePath]:
|
||||
"""
|
||||
A small function to escape characters that are forbidden in windows path names.
|
||||
This method is a no-op on other operating systems.
|
||||
"""
|
||||
# Escape windows illegal path characters
|
||||
if os.name == 'nt':
|
||||
sanitized_parts = [re.sub(r'[<>:"/|?]', "_", x) for x in list(path.parts)]
|
||||
return PurePath(*sanitized_parts)
|
||||
return path
|
||||
|
16
sync_url.py
16
sync_url.py
@ -5,27 +5,17 @@ A simple script to download a course by name from ILIAS.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import re
|
||||
from pathlib import Path, PurePath
|
||||
from typing import Optional
|
||||
from pathlib import Path
|
||||
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 sanitize_windows_path
|
||||
from PFERD.utils import to_path
|
||||
|
||||
|
||||
def sanitize_path(path: PurePath) -> Optional[PurePath]:
|
||||
# Escape windows illegal path characters
|
||||
if os.name == 'nt':
|
||||
sanitized_parts = [re.sub(r'[<>:"/|?]', "_", x) for x in list(path.parts)]
|
||||
return PurePath(*sanitized_parts)
|
||||
return path
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--test-run", action="store_true")
|
||||
@ -71,7 +61,7 @@ def main() -> None:
|
||||
full_url=args.url,
|
||||
cookies=args.cookies,
|
||||
dir_filter=dir_filter,
|
||||
transform=sanitize_path
|
||||
transform=sanitize_windows_path
|
||||
)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user