This repository has been archived on 2019-10-13. You can view files and clone it, but cannot push or open issues or pull requests.
basta-server/ofu_app/apps/events/utils/parser/univis_eventpage_parser.py

73 lines
2.1 KiB
Python

import requests
import datetime
import xmltodict
from pprint import pprint
import json
# CONFIG
UNIVIS_RPG_GuK = "http://univis.uni-bamberg.de/prg?search=events&department=Fakult%E4t%20Geistes-%20und%20Kulturwissenschaften&show=xml"
UNIVIS_RPG_SoWi = "http://univis.uni-bamberg.de/prg?search=events&department=Fakult%E4t%20Sozial-%20und%20Wirtschaftswissenschaften&show=xml"
UNIVIS_RPG_HuWi = "http://univis.uni-bamberg.de/prg?search=events&department=Fakult%E4t%20Humanwissenschaften&show=xml"
UNIVIS_RPG_WIAI = "http://univis.uni-bamberg.de/prg?search=events&department=Fakult%E4t%20Wirtschaftsinformatik&show=xml"
def loadPage(url: str):
return requests.get(url).content
def getDay():
return datetime.datetime.today().strftime("%A, %d.%m.%Y")
def getRoom(dict: dict, id: str):
for room in dict['UnivIS']['Room']:
if room['@key'] == id:
return room
def resolveUnivisRefs(dict: dict):
for event in dict['UnivIS']['Event']:
if 'rooms' in event:
room = event['rooms']['room']
if 'UnivISRef' in room:
key = room['UnivISRef']['@key']
detailed_room = getRoom(dict, key)
event['rooms']['room'] = detailed_room
def resolveDates(json):
for event in json['UnivIS']['Event']:
start_datetime = datetime.datetime.strptime(event['startdate'], "%Y-%m-%d").strftime("%d.%m.%Y")
event['startdate'] = start_datetime
end_datetime = datetime.datetime.strptime(event['enddate'], "%Y-%m-%d").strftime("%d.%m.%Y")
event['enddate'] = end_datetime
def getEvents(dict):
events = []
for event in dict['UnivIS']['Event']:
events.append(event)
return events
def getRooms(dict: dict):
rooms = []
for room in dict['UnivIS']['Room']:
rooms.append(room)
return rooms
def getPersons(dict: dict):
persons = []
for person in dict['UnivIS']['Person']:
persons.append(person)
return persons
def parsePage(url):
page = loadPage(url)
dict = xmltodict.parse(page)
return getEvents(dict), getRooms(dict), getPersons(dict)
# parsePage(UNIVIS_RPG_GuK)