diff --git a/PFERD/ilias/crawler.py b/PFERD/ilias/crawler.py index e80d495..62623eb 100644 --- a/PFERD/ilias/crawler.py +++ b/PFERD/ilias/crawler.py @@ -139,7 +139,7 @@ class IliasCrawler: all_properties_text ) if modification_date_match is None: - modification_date = datetime.datetime.now() + modification_date = None LOGGER.warning("Could not extract start date from %r", all_properties_text) else: modification_date_str = modification_date_match.group(1) @@ -331,14 +331,6 @@ class IliasCrawler: LOGGER.debug("Found exercise container %r", container_name) - # Parse the end date to use as modification date - # TODO: Return None? - end_date: datetime.datetime = datetime.datetime.now() - end_date_header: bs4.Tag = container.find(name="div", text="Abgabetermin") - if end_date_header is not None: - end_date_text = end_date_header.findNext("div").getText().strip() - end_date = demangle_date(end_date_text) - # Grab each file as you now have the link for file_link in files: # Two divs, side by side. Left is the name, right is the link ==> get left @@ -351,7 +343,7 @@ class IliasCrawler: results.append(IliasDownloadInfo( Path(element_path, container_name, file_name), url, - end_date + None # We do not have any timestamp )) return results diff --git a/PFERD/ilias/date_demangler.py b/PFERD/ilias/date_demangler.py index f199f5d..048df70 100644 --- a/PFERD/ilias/date_demangler.py +++ b/PFERD/ilias/date_demangler.py @@ -4,14 +4,22 @@ Helper methods to demangle an ILIAS date. import datetime import locale +import logging import re +from typing import Optional + +from ..logging import PrettyLogger + +LOGGER = logging.getLogger(__name__) +PRETTY = PrettyLogger(LOGGER) -def demangle_date(date: str) -> datetime.datetime: +def demangle_date(date: str) -> Optional[datetime.datetime]: """ Demangle a given date in one of the following formats: "Gestern, HH:MM" "Heute, HH:MM" + "Morgen, HH:MM" "dd. mon.yyyy, HH:MM """ saved = locale.setlocale(locale.LC_ALL) @@ -21,10 +29,18 @@ def demangle_date(date: str) -> datetime.datetime: date = re.sub(r"\s+", " ", date) date = date.replace("Gestern", _yesterday().strftime("%d. %b %Y")) date = date.replace("Heute", datetime.date.today().strftime("%d. %b %Y")) + date = date.replace("Morgen", _tomorrow().strftime("%d. %b %Y")) return datetime.datetime.strptime(date, "%d. %b %Y, %H:%M") + except ValueError: + PRETTY.warning(f"Could not parse date {date!r}") + return None finally: locale.setlocale(locale.LC_ALL, saved) def _yesterday() -> datetime.date: return datetime.date.today() - datetime.timedelta(days=1) + + +def _tomorrow() -> datetime.date: + return datetime.date.today() + datetime.timedelta(days=1)