import requests import xml.etree.ElementTree as ET from pydantic import HttpUrl from classes.boardgame import BoardGame, BoardGameExpansion def url_to_xml_object(url: HttpUrl) -> ET.Element: r = requests.get(url) root = ET.fromstring(r.content) return root def convert_xml_to_boardgame(boardgame_xml: ET.Element) -> BoardGame: boardgame = BoardGame( id = boardgame_xml.get('id'), name = boardgame_xml.find('name').get('value'), description = boardgame_xml.find('description').text, image_url = boardgame_xml.find('image').text, thumbnail_url = boardgame_xml.find('thumbnail').text, year_published = int(boardgame_xml.find('yearpublished').get('value')), min_players = int(boardgame_xml.find('minplayers').get('value')), max_players = int(boardgame_xml.find('maxplayers').get('value')), min_playing_time = int(boardgame_xml.find('minplaytime').get('value')), max_playing_time = int(boardgame_xml.find('maxplaytime').get('value')), min_age = int(boardgame_xml.find('minage').get('value')), all_expansion_ids = [0,1,2,3] ) return boardgame def get_boardgame(boardgame_id: int) -> BoardGame: url : str = "https://boardgamegeek.com/xmlapi2/thing?id={}&stats=true".format(boardgame_id) boardgame_xml_object : ET.Element = url_to_xml_object(url) requested_boardgame = convert_xml_to_boardgame(boardgame_xml_object.find('item')) return requested_boardgame