Cette application FastAPI permet de télécharger, traiter et analyser des fichiers texte, audio et vidéo. Elle utilise IPFS pour le stockage des fichiers, Whisper pour la transcription audio, et diverses commandes shell pour l'interaction avec les systèmes externes.
- Python 3.7 ou supérieur
- FastAPI
- Uvicorn
- Whisper
- IPFS
- yt-dlp
- OBS Studio avec WebSocket
-
Clonez le dépôt :
git clone https://github.com/papiche/AiApi cd AiApi
-
Créez un environnement virtuel et activez-le :
python3 -m venv venv source venv/bin/activate
-
Installez les dépendances :
pip install fastapi uvicorn beautifulsoup4 whisper magic requests
-
Assurez-vous que IPFS, yt-dlp et OBS Studio sont installés et configurés sur votre système.
-
Démarrez le démon IPFS :
ipfs daemon
-
Configurez OBS Studio pour accepter les commandes WebSocket.
- Lancez l'application :
uvicorn api:app --host 0.0.0.0 --port 8000
ou ./api.py
- Accédez à l'API via
http://localhost:8000
.
Transcrit une vidéo récupérée depuis IPFS.
- Méthode :
GET
- Paramètres :
cid
: CID du fichier IPFSfile
: Nom du fichier
- Réponse :
speech
: Transcription du fichier vidéo
Analyse une vidéo YouTube pour en extraire la durée et la convertir en secondes.
- Méthode :
GET
- Paramètres :
url
: URL de la vidéo YouTubepubkey
: Clé publique
- Réponse :
logs
: Logs de l'opérationerror
: Message d'erreur (si applicable)
Utilise un modèle d'IA pour traiter et traduire du texte récupéré depuis IPFS.
- Méthode :
GET
- Paramètres :
cid
: CID du fichier IPFS
- Réponse :
system
: Système utiliséprompt
: Invite utiliséetellme
: Résultat de l'IA
Télécharge un fichier, vérifie son type et sa taille, puis l'ajoute à IPFS.
- Méthode :
POST
- Paramètres :
file
: Fichier à télécharger
- Réponse :
cid
: CID du fichier ajouté à IPFSfile
: Nom du fichierfile_type
: Type de fichiermime_type
: Type MIME du fichier
Récupère et filtre des transactions basées sur une clé publique et une date optionnelle.
- Méthode :
GET
- Paramètres :
pubkey
: Clé publiquedate
: Date optionnelle (format YYYY-MM-DD)
- Réponse :
csv_data
: Transactions formatées en CSV
Démarre l'enregistrement vidéo via OBS Studio.
- Méthode :
GET
- Réponse :
message
: Message de confirmation
Arrête l'enregistrement vidéo via OBS Studio.
- Méthode :
GET
- Réponse :
message
: Message de confirmation
L'interface utilisateur (UI) est définie dans un fichier HTML avec du JavaScript pour gérer les interactions avec l'API. Voici une description des principales fonctionnalités de l'UI :
- Container Principal : Contient les formulaires et les résultats.
- Formulaire YouTube : Permet à l'utilisateur d'entrer une URL de vidéo YouTube et une clé publique pour traiter la vidéo.
- Formulaire de Téléchargement : Permet à l'utilisateur de télécharger un fichier (texte, audio ou vidéo) pour le traitement.
- Indicateurs de Chargement : Affichent des spinners pour indiquer que des opérations sont en cours.
- Containers de Résultats : Affichent les résultats des opérations et les messages d'erreur.
Le JavaScript gère les interactions utilisateur et les appels API. Voici les principales fonctions :
Cette fonction gère le téléchargement de fichiers et leur traitement :
- Récupération du Fichier : Récupère le fichier sélectionné par l'utilisateur.
- Validation de la Taille : Vérifie que la taille du fichier ne dépasse pas 100 MB.
- Envoi du Fichier : Envoie le fichier à l'endpoint
/upload
de l'API. - Traitement du Résultat :
- Si le fichier est de type texte, affiche un bouton pour traiter le texte via l'endpoint
/tellme
. - Si le fichier est de type vidéo, affiche un bouton pour traiter la vidéo via l'endpoint
/g1vlog
.
- Si le fichier est de type texte, affiche un bouton pour traiter le texte via l'endpoint
- Gestion des Erreurs : Affiche les messages d'erreur en cas de problème.
Cette fonction gère le traitement des vidéos YouTube :
- Récupération des Entrées : Récupère l'URL de la vidéo YouTube et la clé publique entrées par l'utilisateur.
- Envoi de la Requête : Envoie une requête à l'endpoint
/youtube
de l'API. - Traitement du Résultat :
- Affiche un bouton pour transcrire la vidéo via l'endpoint
/g1vlog
.
- Affiche un bouton pour transcrire la vidéo via l'endpoint
- Gestion des Erreurs : Affiche les messages d'erreur en cas de problème.
Pour contribuer à ce projet, veuillez suivre les étapes ci-dessous :
- Forkez le dépôt.
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/ma-fonctionnalite
). - Commitez vos modifications (
git commit -am 'Ajoute une nouvelle fonctionnalité'
). - Poussez votre branche (
git push origin feature/ma-fonctionnalite
). - Créez une Pull Request.
Ce projet est sous licence GNU AFFERO GENERAL PUBLIC LICENSE. Voir le fichier LICENSE pour plus de détails.