diff options
-rw-r--r-- | management/commands/scraptimetables.py | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/management/commands/scraptimetables.py b/management/commands/scraptimetables.py index cb5753d..4a07b3b 100644 --- a/management/commands/scraptimetables.py +++ b/management/commands/scraptimetables.py @@ -14,7 +14,8 @@ # along with celcatsanitizer. If not, see <http://www.gnu.org/licenses/>. from django.core.management.base import BaseCommand -from ._private import get_xml +from edt.models import Timetable, Year +from ._private import get_from_db_or_create, get_xml import re @@ -26,7 +27,14 @@ class Command(BaseCommand): parser.add_argument("--url", type=str, required=True) def handle(self, *args, **options): - url = options["url"] + timetables = {} + for year, name, finder in self.__get_finders(options["url"]): + if year in timetables: + timetables[year].append((name, finder,)) + else: + timetables[year] = [(name, finder,)] + + def __get_finders(self, url): soup = get_xml(url) choose_regex = re.compile("^- Choisissez votre ([\w ]+) -$") @@ -37,7 +45,12 @@ class Command(BaseCommand): search = choose_regex.search(option.text) if search is not None: - print() - print("GroupeĀ :", search.groups(0)[0]) + current_year = get_from_db_or_create(Year, name=search.groups(0)[0]) else: - print(option.text, option["value"]) + finder = option["value"].replace("finder", "finder2") + if option.text.startswith(current_year.name): + name = option.text[len(current_year.name):].strip() + else: + name = option.text + + yield current_year, name, finder |