class MyrientAPI: """Simple text interface for Myrient API""" BASE_URL = "https://myrient.com/api/v1" def __init__(self): self.session = requests.Session() self.session.headers.update({ 'User-Agent': 'MyrientCLI/1.0' }) def search_files(self, query: str, system: Optional[str] = None) -> List[Dict]: """Search for files by name""" params = {'query': query} if system: params['system'] = system try: response = self.session.get(f"{self.BASE_URL}/search", params=params) response.raise_for_status() return response.json().get('results', []) except requests.RequestException as e: print(f"Error searching: {e}") return [] def list_systems(self) -> List[str]: """Get available systems""" try: response = self.session.get(f"{self.BASE_URL}/systems") response.raise_for_status() return response.json().get('systems', []) except requests.RequestException as e: print(f"Error listing systems: {e}") return [] def get_file_info(self, file_id: str) -> Optional[Dict]: """Get detailed file information""" try: response = self.session.get(f"{self.BASE_URL}/file/{file_id}") response.raise_for_status() return response.json() except requests.RequestException as e: print(f"Error getting file info: {e}") return None def download_link(self, file_id: str) -> Optional[str]: """Get download link for a file""" try: response = self.session.get(f"{self.BASE_URL}/download/{file_id}") response.raise_for_status() return response.json().get('url') except requests.RequestException as e: print(f"Error getting download link: {e}") return None
def get_download_link_interactive(api: MyrientAPI): """Get download link for a file""" print("\n--- DOWNLOAD LINK ---") file_id = input("Enter file ID: ").strip() if not file_id: print("File ID cannot be empty") return url = api.download_link(file_id) if url: print(f"\nDownload URL: {url}") save = input("\nSave to file? (y/n): ").lower() if save == 'y': filename = input("Enter filename: ").strip() if filename: with open(filename, 'w') as f: f.write(url) print(f"Download link saved to {filename}") else: print("Could not retrieve download link") myrient api
def list_systems_interactive(api: MyrientAPI): """List all available systems""" print("\n--- AVAILABLE SYSTEMS ---") systems = api.list_systems() if not systems: print("No systems found.") return for i, system in enumerate(systems, 1): print(f"{i}. {system}") system: Optional[str] = None) ->
def get_file_info_interactive(api: MyrientAPI): """Get file information""" print("\n--- FILE INFORMATION ---") file_id = input("Enter file ID: ").strip() if not file_id: print("File ID cannot be empty") return info = api.get_file_info(file_id) if not info: print("File not found or error occurred") return print("\nFile Information:") print("-" * 40) for key, value in info.items(): print(f"{key}: {value}") file_id: str) ->