diff --git a/example_config.py b/example_config.py index 01c5da7..59b900b 100644 --- a/example_config.py +++ b/example_config.py @@ -2,38 +2,153 @@ import PFERD import asyncio import logging import pathlib +import re +import sys -logging.basicConfig(level=logging.DEBUG, format=PFERD.LOG_FORMAT) +logging.basicConfig(level=logging.INFO, format=PFERD.LOG_FORMAT) base_dir = PFERD.get_base_dir(__file__) -def hm1(old_path): - if old_path.match("blatt*.pdf"): - return pathlib.PurePath("Blätter", old_path.name) - - return old_path - -def ana1(old_path): - if old_path.match("*zettel*.pdf"): - return pathlib.PurePath("Blätter", old_path.name) - - return old_path - -def la1_filter(path): - if path.match("Tutorien/*"): - return False +def gbi_filter(path): + # Tutorien rausfiltern + if path.match("Tutoriumsfolien/Tutorium 15"): return True + if path.match("Tutoriumsfolien/Tutorium 15/*"): return True + if path.match("Tutoriumsfolien/*"): return False return True -async def main(): - #ffm = PFERD.FfM(base_dir) - #await ffm.synchronize("iana2/lehre/hm1info2018w", "HM1", transform=hm1) - #await ffm.synchronize("iana1/lehre/ana12018w", "Ana1", transform=ana1) - #await ffm.close() +def gbi_transform(path): + # Übungsblätter in Blätter/blatt_xx.pdf + if path.match("Übungsblätter/*"): + new_folder = pathlib.PurePath("Blätter") + match = re.match(r"(\d+).aufgaben.pdf", path.name) + if match: + number = int(match.group(1)) + name = f"blatt_{number:02}.pdf" + return new_folder / name + + match = re.match(r"(\d+).loesungen.pdf", path.name) + if match: + number = int(match.group(1)) + name = f"loesung_{number:02}.pdf" + return new_folder / name + + return pathlib.Path(new_folder, *path.parts[1:]) + + # Folien in Folien/* + if path.match("Vorlesung: Folien/*"): + return pathlib.Path("Folien", *path.parts[1:]) + + # Skripte in Skripte/* + if path.match("Vorlesung: Skript/*"): + return pathlib.Path("Skripte", *path.parts[1:]) + + # Übungsfolien in Übung/* + if path.match("große Übung: Folien/*"): + return pathlib.Path("Übung", *path.parts[1:]) + + # Tutoriumsfolien in Tutorium/* + if path.match("Tutoriumsfolien/Tutorium 15/GBI_Tut_2 (1).pdf"): + return pathlib.Path("Tutorium", "GBI_Tut_2.pdf") + if path.match("Tutoriumsfolien/Tutorium 15/*"): + return pathlib.Path("Tutorium", *path.parts[2:]) + + return path + +def hm1_transform(path): + if path.match("blatt*.pdf"): + new_folder = pathlib.PurePath("Blätter") + + match = re.match(r"blatt(\d+).pdf", path.name) + if match: + number = int(match.group(1)) + name = f"blatt_{number:02}.pdf" + return new_folder / name + + match = re.match(r"blatt(\d+).loesungen.pdf", path.name) + if match: + number = int(match.group(1)) + name = f"loesung_{number:02}.pdf" + return new_folder / name + + return pathlib.PurePath(new_folder, *path.parts[1:]) + + return path + +def la1_filter(path): + # Tutorien rausfitern + if path.match("Tutorien/Tutorium 03 - Philipp Faller"): return True + if path.match("Tutorien/Tutorium 03 - Philipp Faller/*"): return True + if path.match("Tutorien/*"): return False + + return True + +def la1_transform(path): + # Alle Übungsblätter in Blätter/blatt_xx.pdf + # Alles andere Übungsmaterial in Blätter/* + if path.match("Übungen/*"): + new_folder = pathlib.PurePath("Blätter") + + match = re.match(r"Blatt(\d+).pdf", path.name) + if match: + number = int(match.group(1)) + name = f"blatt_{number:02}.pdf" + return new_folder / name + + return pathlib.PurePath(new_folder, *path.parts[1:]) + + # Alles Tutoriengedöns in Tutorium/* + if path.match("Tutorien/Tutorium 03 - Philipp Faller/tut2.pdf"): + return pathlib.PurePath("Tutorium", "Tut2.pdf") + if path.match("Tutorien/Tutorium 03 - Philipp Faller/*"): + return pathlib.PurePath("Tutorium", *path.parts[2:]) + + # Übungs-Gedöns in Übung/* + if path.match("Informatikervorlesung/Übung_*"): + return pathlib.PurePath("Übung", *path.parts[1:]) + + # Vorlesungsfolien-Gedöns in Folien/* + if path.match("Informatikervorlesung/*"): + return pathlib.PurePath("Folien", *path.parts[1:]) + + return path + +def prog_filter(path): + # Tutorien rausfiltern + if path.match("Tutorien"): return False + + return True + +def prog_transform(path): + # Übungsblätter in Blätter/* + if path.match("Übungen/*"): + return pathlib.PurePath("Blätter", *path.parts[1:]) + + # Folien in Folien/* + if path.match("Vorlesungsmaterial/*"): + return pathlib.PurePath("Folien", *path.parts[1:]) + + return path + +async def main(args): + args = [arg.lower() for arg in args] + + ffm = PFERD.FfM(base_dir) ilias = PFERD.ILIAS(base_dir, "cookie_jar") - await ilias.synchronize("874938", "LA1", filter=la1_filter) + + if not args or "gbi" in args: + await ilias.synchronize("855240", "GBI", transform=gbi_transform, filter=gbi_filter) + if not args or "hm1" in args: + await ffm.synchronize("iana2/lehre/hm1info2018w", "HM1", transform=hm1_transform) + if not args or "la1" in args: + await ilias.synchronize("874938", "LA1", transform=la1_transform, filter=la1_filter) + if not args or "prog" in args: + await ilias.synchronize("851237", "Prog", transform=prog_transform, filter=prog_filter) + + await ffm.close() await ilias.close() if __name__ == "__main__": - asyncio.run(main()) + args = sys.argv[1:] + asyncio.run(main(args))