Source code for diggrtoolbox.platform_mapping.platform_mapping
#!/usr/bin/env python3
"""
This file provides a class which
"""
import json
no_requests = False
try:
import requests
except ImportError:
no_requests = True
print("requests package not found. Falling back to local platform mapping")
from os.path import join, dirname, abspath
BASE_PATH = dirname(abspath(__file__))
DATA_PATH = join(BASE_PATH, "dist")
BASE_URL = "https://diggr.github.io/platform_mapping/{}.json"
AVAILABLE_PLATFORMS = ['esrb', 'gamefaqs', 'mediaartdb', 'mobygames', 'ogdb', 'pegi', 'usk']
[docs]def get_platform_mapping(database, with_metadata=False):
"""
This function gets the platform mapping
:param database: name of the video game database the mapping should be obtained for
:param with_metadata: if set, a metadata block will be returned additionally, default: False
:return: a dict with the mapping, and optionally a dict with the metadata
"""
if database not in AVAILABLE_PLATFORMS:
raise ValueError("{} not in {}".format(database, ", ".join(AVAILABLE_PLATFORMS)))
fetch_successful = False
if not no_requests:
response = requests.get(BASE_URL.format(database))
if response.status_code == 200:
mapping = json.loads(response.text)
fetch_successful = True
if not fetch_successful:
with open(join(DATA_PATH, "{}.json".format(database))) as mapping_file:
mapping = json.load(mapping_file)
if with_metadata:
return mapping['mapping'], mapping['meta']
else:
return mapping['mapping']
[docs]class PlatformMapper(object):
"""
Reads in diggr plattform mapping file and provides a mapping dict
"""
def __init__(self, dataset, sep=","):
self.mapping_dict = get_platform_mapping(dataset)
[docs] def std(self, source_name):
if source_name in self.mapping_dict:
return self.mapping_dict[source_name].strip()
else:
return None
def __getitem__(self, source_name):
return self.std(source_name)