Spaces:
Sleeping
Sleeping
| """ | |
| Modèles de données pour l'API. | |
| """ | |
| from typing import List, Optional, Dict, Union, Any | |
| from pydantic import BaseModel, HttpUrl, validator, Field | |
| class ScrapeRequest(BaseModel): | |
| """Modèle pour une requête de scraping.""" | |
| url: str = Field(..., description="URL à scraper") | |
| save: bool = Field(False, description="Sauvegarder le résultat en fichier Markdown") | |
| filename: Optional[str] = Field(None, description="Nom du fichier pour la sauvegarde") | |
| clean: bool = Field(True, description="Nettoyer le HTML avant conversion") | |
| def url_must_be_valid(cls, v): | |
| """Validation de l'URL.""" | |
| if not v.startswith(('http://', 'https://')): | |
| raise ValueError('URL doit commencer par http:// ou https://') | |
| return v | |
| class MultipleScrapeRequest(BaseModel): | |
| """Modèle pour une requête de scraping multiple.""" | |
| urls: List[str] = Field(..., description="Liste d'URLs à scraper") | |
| save: bool = Field(True, description="Sauvegarder les résultats en fichiers Markdown") | |
| def urls_must_be_valid(cls, v): | |
| """Validation des URLs.""" | |
| for url in v: | |
| if not url.startswith(('http://', 'https://')): | |
| raise ValueError(f'URL {url} doit commencer par http:// ou https://') | |
| return v | |
| class ScrapeResponse(BaseModel): | |
| """Modèle pour la réponse de scraping.""" | |
| url: str = Field(..., description="URL scrapée") | |
| title: Optional[str] = Field(None, description="Titre de la page") | |
| markdown: Optional[str] = Field(None, description="Contenu en Markdown") | |
| saved: bool = Field(False, description="Indique si le fichier a été sauvegardé") | |
| saved_path: Optional[str] = Field(None, description="Chemin du fichier sauvegardé") | |
| success: bool = Field(..., description="Indique si le scraping a réussi") | |
| error: Optional[str] = Field(None, description="Message d'erreur éventuel") | |
| class MultipleScrapeResponse(BaseModel): | |
| """Modèle pour la réponse de scraping multiple.""" | |
| total: int = Field(..., description="Nombre total d'URLs traitées") | |
| success: int = Field(..., description="Nombre d'URLs traitées avec succès") | |
| results: List[ScrapeResponse] = Field(..., description="Résultats pour chaque URL") |