diff --git a/PFERD/crawl/ilias/kit_ilias_html.py b/PFERD/crawl/ilias/kit_ilias_html.py index 36da7d4..7bb7084 100644 --- a/PFERD/crawl/ilias/kit_ilias_html.py +++ b/PFERD/crawl/ilias/kit_ilias_html.py @@ -17,6 +17,7 @@ TargetType = Union[str, int] class IliasElementType(Enum): EXERCISE = "exercise" EXERCISE_FILES = "exercise_files" # own submitted files + TEST = "test" # an online test. Will be ignored currently. FILE = "file" FOLDER = "folder" FORUM = "forum" @@ -373,9 +374,8 @@ class IliasPage: if "target=file_" in parsed_url.query: return IliasElementType.FILE - # Skip forums - if "cmd=showThreads" in parsed_url.query: - return IliasElementType.FORUM + # TODO: Match based on CMD_CLASS or icon? The folder_like check looks at the icon, + # but we could also match the command class. I am not sure what's more stable. # Everything with a ref_id can *probably* be opened to reveal nested things # video groups, directories, exercises, etc @@ -432,6 +432,9 @@ class IliasPage: if str(img_tag["src"]).endswith("sess.svg"): return IliasElementType.MEETING + if str(img_tag["src"]).endswith("icon_tst.svg"): + return IliasElementType.TEST + return IliasElementType.FOLDER @staticmethod diff --git a/PFERD/crawl/ilias/kit_ilias_web_crawler.py b/PFERD/crawl/ilias/kit_ilias_web_crawler.py index 11b27d1..0bd3202 100644 --- a/PFERD/crawl/ilias/kit_ilias_web_crawler.py +++ b/PFERD/crawl/ilias/kit_ilias_web_crawler.py @@ -274,6 +274,10 @@ class KitIliasWebCrawler(HttpCrawler): log.explain_topic(f"Decision: Crawl {fmt_path(element_path)}") log.explain("Forums are not supported") log.explain("Answer: No") + elif element.type == IliasElementType.TEST: + log.explain_topic(f"Decision: Crawl {fmt_path(element_path)}") + log.explain("Tests contain no relevant files") + log.explain("Answer: No") elif element.type == IliasElementType.LINK: await self._download_link(element, element_path) elif element.type == IliasElementType.VIDEO: