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") |