""" File service for handling file operations """ import aiofiles from pathlib import Path from typing import Optional class FileService: """Service for file operations""" async def write_text_file(self, file_path: str, content: str, encoding: str = "utf-8"): """Write text content to file asynchronously""" async with aiofiles.open(file_path, 'w', encoding=encoding) as f: await f.write(content) async def read_text_file(self, file_path: str, encoding: str = "utf-8") -> str: """Read text content from file asynchronously""" async with aiofiles.open(file_path, 'r', encoding=encoding) as f: return await f.read() def ensure_directory(self, directory_path: str): """Ensure directory exists""" Path(directory_path).mkdir(parents=True, exist_ok=True) def file_exists(self, file_path: str) -> bool: """Check if file exists""" return Path(file_path).exists() def get_file_size(self, file_path: str) -> int: """Get file size in bytes""" return Path(file_path).stat().st_size def get_file_extension(self, file_path: str) -> str: """Get file extension""" return Path(file_path).suffix.lower() def is_audio_file(self, file_path: str) -> bool: """Check if file is an audio file""" audio_extensions = {'.mp3', '.wav', '.m4a', '.flac', '.aac', '.ogg', '.wma'} return self.get_file_extension(file_path) in audio_extensions