import requests import logging class InstancesAPI: def __init__(self, instances): self.instances = instances def fetch_reports(self): reports = {} for instance_url in self.instances: try: response = requests.get(f"{instance_url}/api/get/report") response.raise_for_status() reports[instance_url] = response.json() except requests.exceptions.RequestException as e: logging.error(f"Error contacting instance {instance_url}: {e}") return reports def download_film(self, instance_url, title): """ Download a film to an instance. If the download started, it returns a JSON like this: example: {"film_id": "my_spy_2020", "status": "Download started"} If the film has already been downloaded, it will return the video file. """ data = {} try: response = requests.get(f"{instance_url}/api/film/{title}") response.raise_for_status() data = response.json() except requests.exceptions.RequestException as e: logging.error(f"Error contacting instance {instance_url}: {e}") data = {"error": str(e)} return data def download_episode(self, instance_url, title, season, episode): """ Download a film to an instance. If the download started, it returns a JSON like this: example: {"film_id": "my_spy_2020", "status": "Download started"} If the film has already been downloaded, it will return the video file. """ data = {} try: response = requests.get(f"{instance_url}/api/tv/{title}/{season}/{episode}") response.raise_for_status() data = response.json() except requests.exceptions.RequestException as e: logging.error(f"Error contacting instance {instance_url}: {e}") data = {"error": str(e)} return data