Spaces:
Sleeping
Sleeping
Download modules/google/utils.py from sky-meilin/SkyOSFullCore: direct link, hf CLI and curl.
- Browser
- Download file 2.78 kB
-
https://huggingface.co/spaces/sky-meilin/SkyOSFullCore/resolve/main/modules/google/utils.py
- Command line
-
hf download hf://spaces/sky-meilin/SkyOSFullCore/modules/google/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/sky-meilin/SkyOSFullCore/resolve/main/modules/google/utils.py
2.78 kB
| """ | |
| utils.py | |
| SkyOS Google Utilities | |
| Gemeinsame Hilfsfunktionen für alle Google-Module. | |
| Autor: Sky Meilin | |
| Projekt: SkyOS Full Core | |
| """ | |
| from __future__ import annotations | |
| import logging | |
| import re | |
| from datetime import datetime | |
| from pathlib import Path | |
| from typing import Any | |
| logger = logging.getLogger("SkyOS.GoogleUtils") | |
| # ------------------------------------------------- | |
| # Datum & Zeit | |
| # ------------------------------------------------- | |
| def iso_now() -> str: | |
| """Aktuelle UTC-Zeit im ISO-8601-Format.""" | |
| return datetime.utcnow().replace(microsecond=0).isoformat() + "Z" | |
| def format_datetime(dt: datetime) -> str: | |
| """Konvertiert datetime in ISO-8601.""" | |
| return dt.isoformat() | |
| # ------------------------------------------------- | |
| # Dateinamen | |
| # ------------------------------------------------- | |
| def sanitize_filename(filename: str) -> str: | |
| """Entfernt ungültige Zeichen aus Dateinamen.""" | |
| filename = re.sub(r'[<>:"/\\|?*]', "_", filename) | |
| filename = filename.strip() | |
| return filename | |
| def file_extension(path: str) -> str: | |
| """Gibt die Dateiendung zurück.""" | |
| return Path(path).suffix.lower() | |
| # ------------------------------------------------- | |
| # Google IDs | |
| # ------------------------------------------------- | |
| def is_google_id(value: str) -> bool: | |
| """ | |
| Einfache Prüfung, ob ein String | |
| wie eine Google-ID aussieht. | |
| """ | |
| return ( | |
| isinstance(value, str) | |
| and len(value) > 20 | |
| ) | |
| # ------------------------------------------------- | |
| # API Antworten | |
| # ------------------------------------------------- | |
| def success(data: Any = None, message: str = "OK") -> dict: | |
| """Standardisierte Erfolgsausgabe.""" | |
| return { | |
| "success": True, | |
| "message": message, | |
| "data": data, | |
| } | |
| def error(message: str, exception: Exception | None = None) -> dict: | |
| """Standardisierte Fehlerausgabe.""" | |
| logger.error(message) | |
| return { | |
| "success": False, | |
| "message": message, | |
| "error": str(exception) if exception else None, | |
| } | |
| # ------------------------------------------------- | |
| # Logging | |
| # ------------------------------------------------- | |
| def log_api_call(service: str, action: str): | |
| logger.info( | |
| "[%s] %s", | |
| service.upper(), | |
| action, | |
| ) | |
| # ------------------------------------------------- | |
| # MIME Types | |
| # ------------------------------------------------- | |
| GOOGLE_MIME_TYPES = { | |
| "document": | |
| "application/vnd.google-apps.document", | |
| "spreadsheet": | |
| "application/vnd.google-apps.spreadsheet", | |
| "folder": | |
| "application/vnd.google-apps.folder", | |
| "presentation": | |
| "application/vnd.google-apps.presentation", | |
| "drawing": | |
| "application/vnd.google-apps.drawing", | |
| } |