Spaces:
Sleeping
Sleeping
| import requests | |
| import logging | |
| from urllib.parse import quote | |
| 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_music(self, instance_url, title): | |
| """ | |
| Download a music file to an instance. | |
| If the download starts, it returns a JSON like this: | |
| example: | |
| {"music_id": "song_title_2024", | |
| "status": "Download started"} | |
| If the music file has already been downloaded, it will return the audio file. | |
| """ | |
| data = {} | |
| try: | |
| # URL-encode the title to handle special characters | |
| encoded_title = quote(title) | |
| response = requests.get(f"{instance_url}/api/get/music/{encoded_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 | |