mirror of
https://github.com/Garmelon/PFERD.git
synced 2023-12-21 10:23:01 +01:00
Demangle "Morgen" too
This commit is contained in:
parent
920d521d68
commit
42345ecc61
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user