Movie Finder
Outil pour identifier un film ou une série à partir d’une vidéo TikTok via l’analyse d’images et une discussion entre deux IA. Tous les fichiers de travail (vidéo, images, transcription, résultats) sont stockés sur Google Drive via rclone — le local est utilisé temporairement puis nettoyé.
Paramètres ajustables par l’utilisateur (demander ou déduire de la demande)
| Paramètre | Valeur par défaut | Description |
|---|---|---|
| nombre d’images | 10 | 2ᵉ argument de grab_frames.sh |
| mode discussion | par-image | 3 tours de discussion par image (lourd, ~30 échanges pour 10 images). Mode batch = toutes les images discutées en 3 tours (économique, suffisant pour la majorité des cas) |
| tours | 3 | Nombre de paires de réponses AI1↔AI2 |
| remote rclone | gdrive:Linux-Server/movie-finder | Surcharge par la variable d’environnement MF_REMOTE |
| garder local | 0 | 3ᵉ argument, 1 = conserver la vidéo en local également |
Pipeline
1. Téléchargement + découpage en images
bash scripts/grab_frames.sh "<url_tiktok>" [num_images] [garder_local]
- Le JSON de sortie contient :
gdrive(dossier de destination),frames_local(chemins des images jpg),duration_sec,video_size,scratch_dir. - Le script automatise : téléchargement → extraction des images (sauter les 10% début/fin) → upload vers gdrive → suppression de la vidéo locale. Les images restent locales pendant la session (nécessaires pour que vous puissiez les voir).
- Échec de téléchargement (verrou régional/âge) : informer l’utilisateur, suggérer un lien alternatif.
2. Voir toutes les images
Lire chaque fichier jpg depuis frames_local avec l’outil de lecture (image). Notez vous-même les indices :
costumes, lieu, acteurs, époque/grain du film, texte à l’écran, filigrane, style cinématographique, crédits du titre.
3. Discussion entre deux IA (via outil subagent, agent : general)
Exécutez deux rôles en alternance, comme un chat WhatsApp :
- 🕵️ IA 1 DÉTECTIVE — prompt : analyser visuellement l’image (citer les indices concrets visibles), proposer 1 à 3 candidatures
titre + année + raison, donner une confiance. IA 1 doit lire le fichier image directement (fournissez son chemin). - 🔍 IA 2 SCEPTIQUE — prompt : utiliser l’outil de recherche web pour vérifier chaque candidature
(chercher
"<titre> <année> film"+ détail de scène unique), réfuter/confirmer avec des preuves de liens, peut proposer de nouveaux candidats.
Règles :
- 1 tour = IA 1 analyse → IA 2 vérification. Par défaut 3 tours.
- Noter et afficher le modèle utilisé par chaque IA dans la transcription et la réponse
(exemple d’en-tête :
🕵️ IA 1 — Détective [modèle : custom/auto]). Vérifier le nom du modèle depuis les métadonnées du subagent/configuration ; si les deux rôles utilisent le même modèle, l’écrire tel quel. L’inclure également dansdiscussion.mdet dans la réponse finale. - Mode
par-image: répéter pour chaque image, toujours inclure la transcription du tour précédent + le contexte des candidats déjà existants pour assurer la continuité de la discussion. Déduplication : si le même candidat apparaît dans plusieurs images, un seul tour de renforcement suffit, pas 3 tours complets. - Mode
batch: envoyer toutes les images (liste des chemins) en une seule discussion de 3 tours. - Ne pas définir le paramètre
modeldu subagent (utiliser la valeur par défaut). - Recommandation : limiter chaque subagent – IA 1 analyse uniquement (pas besoin d’outils), IA 2 se concentre sur la recherche web.
4. Conclusion
Rédigez : titre + année + confiance (élevée/moyenne/faible) + liens de référence provenant de IA 2 + note si aucun consensus.
Pour les SÉRIES / séries TV, IA 2 (tour final) doit essayer de compléter :
- Saison et épisode : numéro d’épisode le plus probable source de l’extrait (indices : scène/personnage/costume identifiés + recherche web "guide des épisodes", synopsis par épisode, crédits TMDB par épisode).
- Titre de l’épisode (si disponible).
- Durée de l’épisode précise en minutes:secondes (format
47:23), depuis IMDb (fiche technique / page épisode) ou TMDB — pas d’arrondi approximatif. - Si l’épisode spécifique ne peut être déterminé, écrire explicitement "épisode impossible à déterminer" + durée de l’épisode uniquement.
- Bonus (au mieux, mentionner "estimation") : estimer le timestamp de l’extrait dans l’épisode en fonction de la scène identifiée dans le guide/synopsis de l’épisode.
Pour les FILMS : indiquer la durée du film précise heures:minutes:secondes (format
1:52:47) depuis les fiches techniques IMDb/TMDB, pas "±120 minutes".
5. Sauvegarder les résultats sur gdrive (sans nouveau fichier local)
- Transcription complète →
rclone rcat "<DEST>/discussion.md"(format chat : emoji 🕵️/🔍, nom du rôle, contenu de la réponse). - Conclusion →
rclone rcat "<DEST>/resultats.md".
Modèle de resultats.md pour une SÉRIE (obligatoire : remplir les détails d’épisode) :
# Résultats d’identification — Movie Finder
- Titre / Type / Année / Plateforme / Créé par / Confiance
## Détails de l’épisode
- Saison et Épisode : S01E05 (si possible à déterminer, sinon "impossible à déterminer")
- Titre de l’épisode : "Beautiful Billionaires"
- Durée de l’épisode : 47:23 (minutes:secondes, depuis IMDb/TMDB)
- Total des épisodes : 11 (S1)
- Estimation de la position de l’extrait : ±12:40 dans l’épisode (au mieux, estimation)
## Pourquoi ça correspond
...preuves principales...
## Références
...liens...
Pour un FILM : remplacer la section "Détails de l’épisode" par "Durée du film : 1:52:47 (heures:minutes:secondes)".
6. Nettoyage local
rm -rf <scratch_dir>
7. Répondre à l’utilisateur
Ordre de la réponse : détails de l’épisode et durée si série (saison, numéro d’épisode, titre de l’épisode, durée) ou durée du film + résumé succinct des points de discussion + liens de référence + emplacement du dossier gdrive — puis estimation finale (🎬 Résultat : titre/année) placée TOUT EN BAS comme conclusion. Ne pas afficher la transcription complète sauf si demandé.
Exemple de transcription
🕵️ IA 1 — Détective [modèle : custom/auto] : L’image 3 montre un costume du 19ᵉ
siècle de type soldat anglais… Candidatures : "1917" (2019), "The Northman" (2022)
🔍 IA 2 — Sceptique [modèle : custom/auto] : Je vérifie… [recherche web] "The Northman"
est une époque viking, ne correspond pas. "1917" correspond : guerre de tranchées, plan-séquence.
Vérifié : [lien]