Référence API
Cette section contient la documentation complète de l’API générée automatiquement depuis les docstrings du code source.
Note
Ce projet utilise les données de l’API PokeAPI (https://pokeapi.co/) pour récupérer les informations sur les Pokémon, leurs types, faiblesses et résistances.
Core
Ce module contient la logique métier principale de l’application.
Entities (Entités)
Entités métier de l’application Pokémon Analyzer
- class core.entities.Pokemon(number, pokedex_number, name, api_name, types, generation, description=None, height=None, weight=None, abilities=None)[source]
Bases :
objectEntité représentant un Pokémon
- Paramètres:
number (
int)pokedex_number (
int)name (
str)api_name (
str)types (
List[str])generation (
int)description (
Optional[str])height (
Optional[int])weight (
Optional[int])abilities (
Optional[List[Dict]])
-
number:
int
-
pokedex_number:
int
-
name:
str
-
api_name:
str
-
types:
List[str]
-
generation:
int
-
description:
Optional[str] = None
-
height:
Optional[int] = None
-
weight:
Optional[int] = None
-
abilities:
List[Dict] = None
- __init__(number, pokedex_number, name, api_name, types, generation, description=None, height=None, weight=None, abilities=None)
- Paramètres:
number (
int)pokedex_number (
int)name (
str)api_name (
str)types (
List[str])generation (
int)description (
Optional[str])height (
Optional[int])weight (
Optional[int])abilities (
Optional[List[Dict]])
- class core.entities.TypeAnalysis(weaknesses, resistances, immunities, vulnerabilities)[source]
Bases :
objectRésultat d’analyse des types
- Paramètres:
weaknesses (
List[str])resistances (
List[str])immunities (
List[str])vulnerabilities (
List[str])
-
weaknesses:
List[str]
-
resistances:
List[str]
-
immunities:
List[str]
-
vulnerabilities:
List[str]
- __init__(weaknesses, resistances, immunities, vulnerabilities)
- Paramètres:
weaknesses (
List[str])resistances (
List[str])immunities (
List[str])vulnerabilities (
List[str])
- class core.entities.AnalysisResult(pokemon, type_analysis, confidence, timestamp, method)[source]
Bases :
objectRésultat complet d’une analyse de Pokémon
- Paramètres:
pokemon (
Pokemon)type_analysis (
TypeAnalysis)confidence (
float)timestamp (
datetime)method (
str)
-
type_analysis:
TypeAnalysis
-
confidence:
float
-
timestamp:
datetime
-
method:
str
- __init__(pokemon, type_analysis, confidence, timestamp, method)
- Paramètres:
pokemon (
Pokemon)type_analysis (
TypeAnalysis)confidence (
float)timestamp (
datetime)method (
str)
- class core.entities.OCRResult(success, pokemon_name, confidence, detected_text, alternatives, error=None)[source]
Bases :
objectRésultat d’une reconnaissance OCR
- Paramètres:
success (
bool)pokemon_name (
Optional[str])confidence (
float)detected_text (
Optional[str])alternatives (
List[Dict])error (
Optional[str])
-
success:
bool
-
pokemon_name:
Optional[str]
-
confidence:
float
-
detected_text:
Optional[str]
-
alternatives:
List[Dict]
-
error:
Optional[str] = None
- __init__(success, pokemon_name, confidence, detected_text, alternatives, error=None)
- Paramètres:
success (
bool)pokemon_name (
Optional[str])confidence (
float)detected_text (
Optional[str])alternatives (
List[Dict])error (
Optional[str])
- class core.entities.CaptureRegion(left, top, width, height)[source]
Bases :
objectRégion de capture d’écran
- Paramètres:
left (
int)top (
int)width (
int)height (
int)
-
left:
int
-
top:
int
-
width:
int
-
height:
int
- __init__(left, top, width, height)
- Paramètres:
left (
int)top (
int)width (
int)height (
int)
Type Calculator (Calculateur de Types)
Système de calcul des efficacités de types Pokémon CORRIGÉ Basé sur le tableau officiel Pokémon
- class core.type_calculator.TypeEffectiveness(value)[source]
Bases :
EnumÉnumération des efficacités possibles
- NO_EFFECT = 0.0
- NOT_VERY = 0.5
- NORMAL = 1.0
- SUPER = 2.0
- class core.type_calculator.TypeCalculator[source]
Bases :
objectCalculateur d’efficacité des types Pokémon
- get_canonical_key(type_name)[source]
Récupère la clé canonique (anglais minuscule) pour un type donné (français ou autre) Utile pour la traduction via translate_type()
- Paramètres:
type_name (
str)- Type renvoyé:
str
- get_effectiveness(attacker_type, defender_type)[source]
Récupère l’efficacité d’un type attaquant contre un type défenseur
- Paramètres:
attacker_type (
str)defender_type (
str)
- Type renvoyé:
float
- calculate_damage_multiplier(attacker_type, defender_types)[source]
Calcule le multiplicateur de dégâts total contre un Pokémon (mono ou double type)
- Paramètres:
attacker_type (
str)defender_types (
List[str])
- Type renvoyé:
float
- analyze_pokemon_weaknesses(pokemon_types)[source]
Analyse les faiblesses et résistances d’un Pokémon
- Paramètres:
pokemon_types (
List[str])- Type renvoyé:
Dict[str,List[str]]
- get_best_counters(pokemon_types, limit=5)[source]
Trouve les meilleurs types pour contrer un Pokémon
- Paramètres:
pokemon_types (
List[str])limit (
int)
- Type renvoyé:
List[Dict[str,any]]
Translations (Traductions)
Module de traduction pour l’interface utilisateur Gère les traductions pour FR, EN, DE, ES, IT, JP
- class core.translations.TranslationManager[source]
Bases :
objectGestionnaire de traductions pour l’application
- TRANSLATIONS = {'de': {'analysis_multiplier': 'Multiplikator', 'analysis_title': 'Typ-Analyse', 'analysis_type': 'Typ', 'app_title': 'Pokémon-Analysator', 'battle_duo': 'Duo (2)', 'battle_solo': 'Solo (1)', 'battle_trio': 'Trio (3)', 'btn_clear': 'Löschen', 'btn_close': 'Schließen', 'btn_load_region': 'Konfiguration laden', 'btn_save_region': 'Konfiguration speichern', 'btn_search': 'Suchen', 'btn_select_region': 'Region wählen', 'btn_single_capture': 'Einzelaufnahme', 'btn_start_capture': 'Starten', 'btn_stop_capture': 'Stoppen', 'capture_title': 'Echtzeit-Aufnahme', 'filter_all_generations': 'Alle Generationen', 'filter_all_types': 'Alle Typen', 'group_analysis': 'Typ-Analyse', 'group_controls': 'Steuerung', 'group_filters': 'Filter', 'group_history': 'Verlauf', 'group_pokemon': 'Pokémon', 'group_preview': 'Vorschau', 'group_results': 'Ergebnisse', 'group_search': 'Suche nach Name', 'header_immunities': 'Immunitäten', 'header_resistances': 'Widerstände', 'header_vulnerabilities': 'Sehr effektiv', 'header_weaknesses': 'Schwächen', 'info_form': 'Form', 'info_generation': 'Generation', 'info_number': 'Nr.', 'info_type': 'Typ', 'label_analyze': 'Analysieren:', 'label_confidence': 'Min. Vertrauen', 'label_confidence_full': 'Vertrauen:', 'label_consecutive': 'Aufeinanderfolgend:', 'label_description': 'Beschreibung', 'label_filters': 'Filter', 'label_form': 'Form', 'label_generation': 'Generation', 'label_height': 'Größe', 'label_hidden': '(Versteckt)', 'label_history': 'Verlauf', 'label_interval': 'Intervall (s)', 'label_interval_full': 'Intervall (s):', 'label_max_pokemon': 'Max Pokémon', 'label_pokemon_count': 'Pokémon-Anzahl:', 'label_preview': 'Vorschau', 'label_region': 'Bildschirmbereich', 'label_region_not_selected': 'Keine Region ausgewählt', 'label_sensitivity': 'Empfindlichkeit', 'label_talents': 'Fähigkeiten', 'label_type': 'Typ', 'label_weight': 'Gewicht', 'load_short': 'Laden', 'msg_capture_started': 'Automatische Aufnahme gestartet', 'msg_no_config': 'Keine Regionskonfiguration gefunden', 'msg_no_pokemon': 'Kein Pokémon erkannt', 'msg_no_region': 'Bitte wählen Sie zuerst einen Bildschirmbereich', 'msg_pokemon_not_found': 'Pokémon nicht in der Datenbank gefunden', 'msg_region_loaded': 'Regionskonfiguration geladen!', 'msg_region_saved': 'Regionskonfiguration gespeichert!', 'no_capture': 'Keine Aufnahme', 'save_short': 'Speichern', 'search_placeholder': 'Pokémon suchen...', 'search_title': 'Pokémon-Suche', 'status_capturing': 'Aufnahme läuft...', 'status_error': 'Fehler', 'status_language_changed': 'Sprache geändert', 'status_pokemon_detected': 'Pokémon erkannt', 'status_ready': 'Bereit', 'status_region_selected': 'Region ausgewählt', 'status_stopped': 'Aufnahme gestoppt', 'tab_capture': 'Live-Aufnahme', 'tab_search': 'Suche', 'tooltip_click_details': 'Klicken Sie, um Details anzuzeigen', 'word_battle': 'Kampf', 'word_detected': 'erkannt', 'word_history': 'Verlauf'}, 'en': {'analysis_multiplier': 'Multiplier', 'analysis_title': 'Type Analysis', 'analysis_type': 'Type', 'app_title': 'Pokémon Analyzer', 'battle_duo': 'Duo (2)', 'battle_solo': 'Solo (1)', 'battle_trio': 'Trio (3)', 'btn_clear': 'Clear', 'btn_close': 'Close', 'btn_load_region': 'Load Configuration', 'btn_save_region': 'Save Configuration', 'btn_search': 'Search', 'btn_select_region': 'Select Region', 'btn_single_capture': 'Single Capture', 'btn_start_capture': 'Start', 'btn_stop_capture': 'Stop', 'capture_title': 'Real-Time Capture', 'filter_all_generations': 'All generations', 'filter_all_types': 'All types', 'group_analysis': 'Type Analysis', 'group_controls': 'Controls', 'group_filters': 'Filters', 'group_history': 'History', 'group_pokemon': 'Pokémon(s)', 'group_preview': 'Preview', 'group_results': 'Results', 'group_search': 'Search by name', 'header_immunities': 'Immunities', 'header_resistances': 'Resistances', 'header_vulnerabilities': 'Super effective', 'header_weaknesses': 'Weaknesses', 'info_form': 'Form', 'info_generation': 'Generation', 'info_number': 'No.', 'info_type': 'Type', 'label_analyze': 'Analyze:', 'label_confidence': 'Min. Confidence', 'label_confidence_full': 'Confidence:', 'label_consecutive': 'Consecutive:', 'label_description': 'Description', 'label_filters': 'Filters', 'label_form': 'Form', 'label_generation': 'Generation', 'label_height': 'Height', 'label_hidden': '(Hidden)', 'label_history': 'History', 'label_interval': 'Interval (s)', 'label_interval_full': 'Interval (s):', 'label_max_pokemon': 'Max Pokémon', 'label_pokemon_count': 'Pokémon Count:', 'label_preview': 'Preview', 'label_region': 'Screen Region', 'label_region_not_selected': 'No region selected', 'label_sensitivity': 'Sensitivity', 'label_talents': 'Abilities', 'label_type': 'Type', 'label_weight': 'Weight', 'load_short': 'Load', 'msg_capture_started': 'Automatic capture started', 'msg_no_config': 'No region configuration found', 'msg_no_pokemon': 'No Pokémon detected', 'msg_no_region': 'Please select a screen region first', 'msg_pokemon_not_found': 'Pokémon not found in database', 'msg_region_loaded': 'Region configuration loaded!', 'msg_region_saved': 'Region configuration saved!', 'no_capture': 'No capture', 'save_short': 'Save', 'search_placeholder': 'Search for a Pokémon...', 'search_title': 'Pokémon Search', 'status_capturing': 'Capturing...', 'status_error': 'Error', 'status_language_changed': 'Language changed', 'status_pokemon_detected': 'Pokémon detected', 'status_ready': 'Ready', 'status_region_selected': 'Region selected', 'status_stopped': 'Capture stopped', 'tab_capture': 'Live Capture', 'tab_search': 'Search', 'tooltip_click_details': 'Click to see details', 'word_battle': 'Battle', 'word_detected': 'detected', 'word_history': 'History'}, 'es': {'analysis_multiplier': 'Multiplicador', 'analysis_title': 'Análisis de Tipos', 'analysis_type': 'Tipo', 'app_title': 'Analizador Pokémon', 'battle_duo': 'Dúo (2)', 'battle_solo': 'Solo (1)', 'battle_trio': 'Trío (3)', 'btn_clear': 'Limpiar', 'btn_close': 'Cerrar', 'btn_load_region': 'Cargar Configuración', 'btn_save_region': 'Guardar Configuración', 'btn_search': 'Buscar', 'btn_select_region': 'Seleccionar Región', 'btn_single_capture': 'Captura Única', 'btn_start_capture': 'Iniciar', 'btn_stop_capture': 'Detener', 'capture_title': 'Captura en Tiempo Real', 'filter_all_generations': 'Todas las generaciones', 'filter_all_types': 'Todos los tipos', 'group_analysis': 'Análisis de Tipos', 'group_controls': 'Controles', 'group_filters': 'Filtros', 'group_history': 'Historial', 'group_pokemon': 'Pokémon', 'group_preview': 'Vista Previa', 'group_results': 'Resultados', 'group_search': 'Buscar por nombre', 'header_immunities': 'Inmunidades', 'header_resistances': 'Resistencias', 'header_vulnerabilities': 'Super eficaz', 'header_weaknesses': 'Debilidades', 'info_form': 'Forma', 'info_generation': 'Generación', 'info_number': 'N°', 'info_type': 'Tipo', 'label_analyze': 'Analizar:', 'label_confidence': 'Confianza Mín.', 'label_confidence_full': 'Confianza:', 'label_consecutive': 'Consecutivas:', 'label_description': 'Descripción', 'label_filters': 'Filtros', 'label_form': 'Forma', 'label_generation': 'Generación', 'label_height': 'Altura', 'label_hidden': '(Oculto)', 'label_history': 'Historial', 'label_interval': 'Intervalo (s)', 'label_interval_full': 'Intervalo (s):', 'label_max_pokemon': 'Máx. Pokémon', 'label_pokemon_count': 'Cantidad de Pokémon:', 'label_preview': 'Vista Previa', 'label_region': 'Región de Pantalla', 'label_region_not_selected': 'No hay región seleccionada', 'label_sensitivity': 'Sensibilidad', 'label_talents': 'Habilidades', 'label_type': 'Tipo', 'label_weight': 'Peso', 'load_short': 'Cargar', 'msg_capture_started': 'Captura automática iniciada', 'msg_no_config': 'No se encontró configuración de región', 'msg_no_pokemon': 'No se detectó ningún Pokémon', 'msg_no_region': 'Primero selecciona una región de pantalla', 'msg_pokemon_not_found': 'Pokémon no encontrado en la base de datos', 'msg_region_loaded': '¡Configuración de región cargada!', 'msg_region_saved': '¡Configuración de región guardada!', 'no_capture': 'Sin captura', 'save_short': 'Guardar', 'search_placeholder': 'Buscar un Pokémon...', 'search_title': 'Búsqueda de Pokémon', 'status_capturing': 'Capturando...', 'status_error': 'Error', 'status_language_changed': 'Idioma cambiado', 'status_pokemon_detected': 'Pokémon detectado', 'status_ready': 'Listo', 'status_region_selected': 'Región seleccionada', 'status_stopped': 'Captura detenida', 'tab_capture': 'Captura en Vivo', 'tab_search': 'Búsqueda', 'tooltip_click_details': 'Haz clic para ver los detalles', 'word_battle': 'Combate', 'word_detected': 'detectado', 'word_history': 'Historial'}, 'fr': {'analysis_multiplier': 'Multiplicateur', 'analysis_title': 'Analyse des Types', 'analysis_type': 'Type', 'app_title': 'Analyseur Pokémon', 'battle_duo': 'Duo (2)', 'battle_solo': 'Solo (1)', 'battle_trio': 'Trio (3)', 'btn_clear': 'Effacer', 'btn_close': 'Fermer', 'btn_load_region': 'Charger Configuration', 'btn_save_region': 'Sauvegarder Configuration', 'btn_search': 'Rechercher', 'btn_select_region': 'Sélectionner Zone', 'btn_single_capture': 'Capture Unique', 'btn_start_capture': 'Démarrer', 'btn_stop_capture': 'Arrêter', 'capture_title': 'Capture en Temps Réel', 'filter_all_generations': 'Toutes les générations', 'filter_all_types': 'Tous les types', 'group_analysis': 'Analyse des Types', 'group_controls': 'Contrôles', 'group_filters': 'Filtres', 'group_history': 'Historique', 'group_pokemon': 'Pokémon(s)', 'group_preview': 'Aperçu', 'group_results': 'Résultats', 'group_search': 'Recherche par nom', 'header_immunities': 'Immunités', 'header_resistances': 'Résistances', 'header_vulnerabilities': 'Super efficace', 'header_weaknesses': 'Faiblesses', 'info_form': 'Forme', 'info_generation': 'Génération', 'info_number': 'N°', 'info_type': 'Type', 'label_analyze': 'Analyser:', 'label_confidence': 'Confiance Min.', 'label_confidence_full': 'Confiance:', 'label_consecutive': 'Consécutives:', 'label_description': 'Description', 'label_filters': 'Filtres', 'label_form': 'Forme', 'label_generation': 'Génération', 'label_height': 'Taille', 'label_hidden': '(Caché)', 'label_history': 'Historique', 'label_interval': 'Intervalle (s)', 'label_interval_full': 'Intervalle (s):', 'label_max_pokemon': 'Max Pokémon', 'label_pokemon_count': 'Nombre de Pokémon:', 'label_preview': 'Aperçu', 'label_region': "Zone d'écran", 'label_region_not_selected': 'Aucune zone sélectionnée', 'label_sensitivity': 'Sensibilité', 'label_talents': 'Talents', 'label_type': 'Type', 'label_weight': 'Poids', 'load_short': 'Charger', 'msg_capture_started': 'Capture automatique démarrée', 'msg_no_config': 'Aucune configuration de région trouvée', 'msg_no_pokemon': 'Aucun Pokémon détecté', 'msg_no_region': "Sélectionnez d'abord une région d'écran", 'msg_pokemon_not_found': 'Pokémon non trouvé dans la base', 'msg_region_loaded': 'Configuration de région chargée!', 'msg_region_saved': 'Configuration de région sauvegardée!', 'no_capture': 'Aucune capture', 'save_short': 'Sauv.', 'search_placeholder': 'Rechercher un Pokémon...', 'search_title': 'Recherche de Pokémon', 'status_capturing': 'Capture en cours...', 'status_error': 'Erreur', 'status_language_changed': 'Langue changée', 'status_pokemon_detected': 'Pokémon détecté', 'status_ready': 'Prêt', 'status_region_selected': 'Zone sélectionnée', 'status_stopped': 'Capture arrêtée', 'tab_capture': 'Capture Live', 'tab_search': 'Recherche', 'tooltip_click_details': 'Cliquer pour voir les détails', 'word_battle': 'Combat', 'word_detected': 'détecté', 'word_history': 'Historique'}, 'it': {'analysis_multiplier': 'Moltiplicatore', 'analysis_title': 'Analisi dei Tipi', 'analysis_type': 'Tipo', 'app_title': 'Analizzatore Pokémon', 'battle_duo': 'Duo (2)', 'battle_solo': 'Singolo (1)', 'battle_trio': 'Trio (3)', 'btn_clear': 'Cancella', 'btn_close': 'Chiudi', 'btn_load_region': 'Carica Configurazione', 'btn_save_region': 'Salva Configurazione', 'btn_search': 'Cerca', 'btn_select_region': 'Seleziona Regione', 'btn_single_capture': 'Cattura Singola', 'btn_start_capture': 'Avvia', 'btn_stop_capture': 'Ferma', 'capture_title': 'Cattura in Tempo Reale', 'filter_all_generations': 'Tutte le generazioni', 'filter_all_types': 'Tutti i tipi', 'group_analysis': 'Analisi dei Tipi', 'group_controls': 'Controlli', 'group_filters': 'Filtri', 'group_history': 'Cronologia', 'group_pokemon': 'Pokémon', 'group_preview': 'Anteprima', 'group_results': 'Risultati', 'group_search': 'Cerca per nome', 'header_immunities': 'Immunità', 'header_resistances': 'Resistenze', 'header_vulnerabilities': 'Super efficace', 'header_weaknesses': 'Debolezze', 'info_form': 'Forma', 'info_generation': 'Generazione', 'info_number': 'N°', 'info_type': 'Tipo', 'label_analyze': 'Analizza:', 'label_confidence': 'Confidenza Min.', 'label_confidence_full': 'Confidenza:', 'label_consecutive': 'Consecutive:', 'label_description': 'Descrizione', 'label_filters': 'Filtri', 'label_form': 'Forma', 'label_generation': 'Generazione', 'label_height': 'Altezza', 'label_hidden': '(Nascosta)', 'label_history': 'Cronologia', 'label_interval': 'Intervallo (s)', 'label_interval_full': 'Intervallo (s):', 'label_max_pokemon': 'Max Pokémon', 'label_pokemon_count': 'Numero di Pokémon:', 'label_preview': 'Anteprima', 'label_region': 'Regione Schermo', 'label_region_not_selected': 'Nessuna regione selezionata', 'label_sensitivity': 'Sensibilità', 'label_talents': 'Abilità', 'label_type': 'Tipo', 'label_weight': 'Peso', 'load_short': 'Carica', 'msg_capture_started': 'Cattura automatica avviata', 'msg_no_config': 'Nessuna configurazione di regione trovata', 'msg_no_pokemon': 'Nessun Pokémon rilevato', 'msg_no_region': 'Seleziona prima una regione dello schermo', 'msg_pokemon_not_found': 'Pokémon non trovato nel database', 'msg_region_loaded': 'Configurazione della regione caricata!', 'msg_region_saved': 'Configurazione della regione salvata!', 'no_capture': 'Nessuna cattura', 'save_short': 'Salva', 'search_placeholder': 'Cerca un Pokémon...', 'search_title': 'Ricerca Pokémon', 'status_capturing': 'Catturando...', 'status_error': 'Errore', 'status_language_changed': 'Lingua cambiata', 'status_pokemon_detected': 'Pokémon rilevato', 'status_ready': 'Pronto', 'status_region_selected': 'Regione selezionata', 'status_stopped': 'Cattura fermata', 'tab_capture': 'Cattura Live', 'tab_search': 'Ricerca', 'tooltip_click_details': 'Clicca per vedere i dettagli', 'word_battle': 'Battaglia', 'word_detected': 'rilevato', 'word_history': 'Cronologia'}, 'jp': {'analysis_multiplier': '倍率', 'analysis_title': 'タイプ分析', 'analysis_type': 'タイプ', 'app_title': 'ポケモンアナライザー', 'battle_duo': 'デュオ (2)', 'battle_solo': 'ソロ (1)', 'battle_trio': 'トリオ (3)', 'btn_clear': 'クリア', 'btn_close': 'とじる', 'btn_load_region': '設定を読み込む', 'btn_save_region': '設定を保存', 'btn_search': '検索', 'btn_select_region': '領域を選択', 'btn_single_capture': '単一キャプチャ', 'btn_start_capture': '開始', 'btn_stop_capture': '停止', 'capture_title': 'リアルタイムキャプチャ', 'filter_all_generations': 'すべての世代', 'filter_all_types': 'すべてのタイプ', 'group_analysis': 'タイプ分析', 'group_controls': 'コントロール', 'group_filters': 'フィルター', 'group_history': '履歴', 'group_pokemon': 'ポケモン', 'group_preview': 'プレビュー', 'group_results': '結果', 'group_search': '名前で検索', 'header_immunities': '無効', 'header_resistances': '耐性', 'header_vulnerabilities': 'こうかばつぐん', 'header_weaknesses': '弱点', 'info_form': 'フォーム', 'info_generation': '世代', 'info_number': '番号', 'info_type': 'タイプ', 'label_analyze': '分析:', 'label_confidence': '最小信頼度', 'label_confidence_full': '信頼度:', 'label_consecutive': '連続:', 'label_description': 'せつめい', 'label_filters': 'フィルター', 'label_form': 'フォーム', 'label_generation': '世代', 'label_height': 'たかさ', 'label_hidden': '(かくされた)', 'label_history': '履歴', 'label_interval': '間隔(秒)', 'label_interval_full': '間隔(秒):', 'label_max_pokemon': '最大ポケモン数', 'label_pokemon_count': 'ポケモン数:', 'label_preview': 'プレビュー', 'label_region': '画面領域', 'label_region_not_selected': '領域が選択されていません', 'label_sensitivity': '感度', 'label_talents': 'とくせい', 'label_type': 'タイプ', 'label_weight': 'おもさ', 'load_short': '読み込み', 'msg_capture_started': '自動キャプチャを開始しました', 'msg_no_config': '領域設定が見つかりません', 'msg_no_pokemon': 'ポケモンが検出されませんでした', 'msg_no_region': 'まず画面領域を選択してください', 'msg_pokemon_not_found': 'ポケモンがデータベースに見つかりません', 'msg_region_loaded': '領域設定を読み込みました!', 'msg_region_saved': '領域設定を保存しました!', 'no_capture': 'キャプチャなし', 'save_short': '保存', 'search_placeholder': 'ポケモンを検索...', 'search_title': 'ポケモン検索', 'status_capturing': 'キャプチャ中...', 'status_error': 'エラー', 'status_language_changed': '言語が変更されました', 'status_pokemon_detected': 'ポケモンを検出', 'status_ready': '準備完了', 'status_region_selected': '領域が選択されました', 'status_stopped': 'キャプチャ停止', 'tab_capture': 'ライブキャプチャ', 'tab_search': '検索', 'tooltip_click_details': 'クリックして詳細を表示', 'word_battle': 'バトル', 'word_detected': '検出', 'word_history': '履歴'}}
- set_language(language_code)[source]
Change la langue courante
- Paramètres:
language_code (
str) – Code de langue (“fr”, “en”, “de”, “es”, “it”, “jp”)
- t(key, default=None)[source]
Récupère une traduction pour la clé donnée
- Paramètres:
key (
str) – Clé de traductiondefault (
Optional[str]) – Valeur par défaut si la traduction n’existe pas
- Type renvoyé:
str- Renvoie:
Texte traduit ou valeur par défaut
- translate_type(type_name)[source]
Traduit un nom de type Pokémon dans la langue courante
- Paramètres:
type_name (
str) – Nom du type en anglais (ex: “fire”, “water”, etc.)- Type renvoyé:
str- Renvoie:
Nom du type traduit ou nom original si non trouvé
- format_form_name(pokemon_name, form_name, translated_pokemon_name=None)[source]
Formate le nom d’une forme de manière lisible (ex: “mega-x” -> “Méga-X”) Prend en compte la langue actuelle.
- Paramètres:
pokemon_name (
str) – Nom API du Pokémon (ex: “charizard”) ou Nom affichéform_name (
str) – Nom API de la forme (ex: “charizard-mega-x”)translated_pokemon_name (
Optional[str]) – Nom traduit du Pokémon (ex: “Dracaufeu”). Si None, utilise pokemon_name.
- Type renvoyé:
str- Renvoie:
Nom formaté
- core.translations.t(key, default=None)[source]
Fonction raccourci pour accéder aux traductions
- Paramètres:
key (
str) – Clé de traductiondefault (
Optional[str]) – Valeur par défaut si la traduction n’existe pas
- Type renvoyé:
str- Renvoie:
Texte traduit
- core.translations.set_language(language_code)[source]
Change la langue de l’application
- Paramètres:
language_code (
str) – Code de langue (“fr”, “en”, “de”, “jp”)
- core.translations.get_translator()[source]
Retourne l’instance du gestionnaire de traductions
- Type renvoyé:
Utils (Utilitaires)
Utilitaires pour l’application Pokémon Analyzer
Infrastructure
Ce module contient les couches d’infrastructure (API, OCR, etc.).
API
PokeAPI Service
Service pour l’API PokeAPI Remplace la base de données locale avec des données complètes de l’API
- class infrastructure.api.pokeapi_service.PokeAPIService[source]
Bases :
objectService pour interroger l’API PokeAPI avec cache et traduction française
- BASE_URL = 'https://pokeapi.co/api/v2'
- TYPE_IDS = {'bug': 7, 'dark': 17, 'dragon': 16, 'electric': 13, 'fairy': 18, 'fighting': 2, 'fire': 10, 'flying': 3, 'ghost': 8, 'grass': 12, 'ground': 5, 'ice': 15, 'normal': 1, 'poison': 4, 'psychic': 14, 'rock': 6, 'steel': 9, 'water': 11}
- LANGUAGE_CODES_API = {'de': 6, 'en': 9, 'es': 7, 'fr': 5, 'it': 8, 'jp': 1}
- set_language(language_code)[source]
Change la langue courante de l’API
- Paramètres:
language_code (
str) – Code langue (“fr”, “en”, “de”, “es”, “it”, “jp”)
- get_type_translation(type_name_en, language_code=None)[source]
Récupère la traduction d’un type
- Paramètres:
type_name_en (
str) – Nom du type en anglais (minuscule)language_code (
Optional[str]) – Code de langue (“fr”, “en”, “de”, “jp”). Si None, utilise current_language
- Type renvoyé:
str- Renvoie:
Nom traduit du type
- get_pokemon_by_number(number)[source]
Récupère les informations d’un Pokémon par son numéro
- Paramètres:
number (
int) – Numéro du Pokédex national- Type renvoyé:
Optional[Dict]- Renvoie:
Dictionnaire avec les données du Pokémon ou None
- get_pokemon_forms(pokemon_id)[source]
Récupère les formes alternatives d’un Pokémon
- Paramètres:
pokemon_id (
int) – ID du Pokémon- Renvoie:
has_forms: bool (True si le Pokémon a plusieurs formes)
default_form: str (nom de la forme par défaut)
forms: List[Dict] (liste des formes avec name, url, is_default)
- Type renvoyé:
Dictionnaire avec
- get_pokemon_form_data(form_name)[source]
Récupère les données d’une forme spécifique de Pokémon
- Paramètres:
form_name (
str) – Nom de la forme (ex: « deoxys-attack », « charizard-mega-x »)- Type renvoyé:
Optional[Dict]- Renvoie:
Dictionnaire avec les données de cette forme
- get_pokemon_by_name(name)[source]
Récupère les informations d’un Pokémon par son nom Accepte les noms dans toutes les langues supportées (FR, EN, DE, JP)
- Paramètres:
name (
str) – Nom du Pokémon- Type renvoyé:
Optional[Dict]- Renvoie:
Dictionnaire avec les données du Pokémon ou None
- search_pokemon(query, limit=20)[source]
Recherche des Pokémon par nom partiel (recherche dans le cache uniquement) Pour une recherche complète, utilisez search_all_pokemon
- Paramètres:
query (
str) – Requête de recherchelimit (
int) – Nombre maximum de résultats (défaut: 20)
- Type renvoyé:
List[Dict]- Renvoie:
Liste des Pokémon trouvés
- get_pokemon_by_type(pokemon_type)[source]
Récupère tous les Pokémon d’un type donné Note: Cette méthode fait un appel API pour récupérer la liste
- Paramètres:
pokemon_type (
str) – Type en français- Type renvoyé:
List[Dict]- Renvoie:
Liste des Pokémon de ce type
- get_pokemon_by_generation(generation, limit=20)[source]
Récupère les Pokémon d’une génération
- Paramètres:
generation (
int) – Numéro de génération (1-9)limit (
int) – Nombre maximum de résultats (défaut: 20)
- Type renvoyé:
List[Dict]- Renvoie:
Liste des Pokémon de cette génération (limité)
- get_all_types()[source]
Récupère tous les types disponibles (en français)
- Type renvoyé:
List[str]- Renvoie:
Liste des types
- get_total_count()[source]
Récupère le nombre total de Pokémon disponibles Note: Retourne une estimation basée sur la dernière génération
- Type renvoyé:
int- Renvoie:
Nombre total de Pokémon
- get_all_pokemon_names()[source]
Récupère tous les noms de Pokémon connus (toutes langues confondues) Utile pour l’initialisation de l’OCR
- Type renvoyé:
List[str]- Renvoie:
Liste de tous les noms
- get_generation_ranges()[source]
Récupère les plages de numéros pour chaque génération
- Type renvoyé:
Dict[int,Tuple[int,int]]- Renvoie:
Dictionnaire generation -> (debut, fin)
- get_generation_info()[source]
Récupère les informations sur chaque génération
- Type renvoyé:
Dict[int,Dict[str,str]]- Renvoie:
Dictionnaire avec les infos de génération
- preload_generation(generation, callback=None)[source]
Précharge les données d’une génération dans le cache Utile pour améliorer les performances
- Paramètres:
generation (
int) – Numéro de générationcallback – Fonction appelée pour chaque Pokémon chargé (optionnel)
- property pokemon_data
Propriété pour compatibilité avec l’ancienne PokemonDatabase Retourne le cache actuel
OCR
Tesseract OCR
Module OCR pour la reconnaissance de noms de Pokémon dans les images Utilise Tesseract et OpenCV pour le préprocessing d’images
- class infrastructure.ocr.tesseract_ocr.TesseractOCR(pokemon_names_list=None)[source]
Bases :
objectClasse principale pour la reconnaissance OCR de noms Pokémon
- Paramètres:
pokemon_names_list (
Optional[List[str]])
- __init__(pokemon_names_list=None)[source]
Initialise le module OCR
- Paramètres:
pokemon_names_list (
Optional[List[str]]) – Liste des noms de Pokémon pour la correction
- update_pokemon_names(pokemon_names_list)[source]
Met à jour la liste des noms de Pokémon pour la reconnaissance OCR Utilisé lors du changement de langue
- Paramètres:
pokemon_names_list (
List[str]) – Nouvelle liste des noms de Pokémon
- check_language_availability(lang_code)[source]
Vérifie si le pack de langue est installé
- Paramètres:
lang_code (
str)- Type renvoyé:
bool
- preprocess_image(image_path, method='adaptive')[source]
Préprocesse l’image pour améliorer la reconnaissance OCR
- Paramètres:
image_path (
str) – Chemin vers l’imagemethod (
str) – Méthode de préprocessing (“adaptive”, “threshold”, “enhanced”, “all”)
- Type renvoyé:
ndarray- Renvoie:
Image préprocessée
- enhance_with_pil(image_path)[source]
Améliore l’image avec PIL pour une meilleure reconnaissance
- Paramètres:
image_path (
str)- Type renvoyé:
Image
- extract_text_multiple_methods(image_path)[source]
Extrait le texte avec plusieurs méthodes pour maximiser la réussite
- Type renvoyé:
List[Dict[str,str]]- Renvoie:
Liste des résultats avec méthode utilisée et confiance
- Paramètres:
image_path (
str)
- find_best_pokemon_match(text, max_suggestions=5)[source]
Trouve le meilleur match de nom Pokémon dans le texte
- Type renvoyé:
List[Dict[str,any]]- Renvoie:
Liste des matches avec scores de confiance
- Paramètres:
text (
str)max_suggestions (
int)
- recognize_pokemon(image_path, confidence_threshold=0.6)[source]
Fonction principale pour reconnaître un Pokémon dans une image
- Type renvoyé:
Dict[str,any]- Renvoie:
Dictionnaire avec le résultat de la reconnaissance
- Paramètres:
image_path (
str)confidence_threshold (
float)
- recognize_multiple_pokemon(image_path, max_pokemon=3, confidence_threshold=0.6)[source]
Reconnaît jusqu’à plusieurs Pokémon dans une même image (pour combats duo/trio)
- Paramètres:
image_path (
str) – Chemin de l’imagemax_pokemon (
int) – Nombre maximum de Pokémon à détecter (défaut: 3)confidence_threshold (
float) – Seuil de confiance minimal
- Type renvoyé:
Dict[str,any]- Renvoie:
Dictionnaire avec liste des Pokémon détectés
Screen Capture (Capture d’écran)
Module de capture d’écran en temps réel - Version minimale pour PyQt5
- class infrastructure.ocr.screen_capture.LiveScreenOCR(ocr_module=None, pokemon_analyzer_callback=None)[source]
Bases :
objectGestionnaire de capture d’écran en temps réel
- __init__(ocr_module=None, pokemon_analyzer_callback=None)[source]
Initialise le module de capture
- Paramètres:
ocr_module – Instance du module OCR
pokemon_analyzer_callback – Fonction callback pour les détections
- select_region_interactive()[source]
Obsolète: La sélection se fait maintenant via l’UI (RegionSelector) Cette méthode est gardée pour compatibilité mais ne fait rien.
- Type renvoyé:
bool
- save_region_config(filename='screen_region.json')[source]
Sauvegarde la configuration de région
- Paramètres:
filename (
str)- Type renvoyé:
bool
- load_region_config(filename='screen_region.json')[source]
Charge la configuration de région
- Paramètres:
filename (
str)- Type renvoyé:
bool
- analyze_capture(image, multi_pokemon=True, max_pokemon=2)[source]
Analyse une capture avec OCR
- Paramètres:
image (
Image) – Image à analysermulti_pokemon (
bool) – Si True, essaie de détecter plusieurs Pokémon (défaut: True)max_pokemon (
int) – Nombre maximum de Pokémon à détecter (1-3, défaut: 2)
- Type renvoyé:
Dict
- start_live_capture(interval=2.0, callback=None, sensitivity=1, confidence=0.6)[source]
Démarre la capture en temps réel
- Paramètres:
interval (
float)sensitivity (
int)confidence (
float)
- Type renvoyé:
bool
- set_sensitivity(min_consecutive)[source]
Configure la sensibilité (nombre de détections consécutives)
- Paramètres:
min_consecutive (
int)
- set_confidence_threshold(threshold)[source]
Configure le seuil de confiance OCR
- Paramètres:
threshold (
float)
- set_max_pokemon(max_pokemon)[source]
Configure le nombre maximum de Pokémon à détecter (1-3)
- Paramètres:
max_pokemon (
int)
Services
Ce module contient les services applicatifs.
Analysis Service (Service d’Analyse)
Service d’analyse des Pokémon Gère toute la logique d’analyse des types et des faiblesses
- class services.analysis_service.AnalysisService(type_calculator)[source]
Bases :
objectService pour analyser les types et faiblesses des Pokémon
- __init__(type_calculator)[source]
- Paramètres:
type_calculator – Instance de TypeCalculator pour les calculs d’efficacité
- analyze_pokemon_types(pokemon)[source]
Analyse complète des types d’un Pokémon
- Paramètres:
pokemon (
Pokemon) – Pokémon à analyser- Type renvoyé:
- Renvoie:
TypeAnalysis contenant faiblesses, résistances, immunités et vulnérabilités
- get_damage_multiplier(attack_type, pokemon)[source]
Calcule le multiplicateur de dégâts d’un type contre un Pokémon
- Paramètres:
attack_type (
str) – Type de l’attaquepokemon (
Pokemon) – Pokémon défenseur
- Type renvoyé:
float- Renvoie:
Multiplicateur de dégâts
- format_type_with_multiplier(type_name, pokemon, emoji_func)[source]
Formate un type avec son emoji et multiplicateur
- Paramètres:
type_name (
str) – Nom du typepokemon (
Pokemon) – Pokémon pour calculer le multiplicateuremoji_func – Fonction pour obtenir l’emoji du type
- Renvoie:
« 🔥 Feu (×2) »)
- Type renvoyé:
Chaîne formatée (ex
- generate_text_report(pokemon, analysis)[source]
Génère un rapport textuel d’analyse
- Paramètres:
pokemon (
Pokemon) – Pokémon analyséanalysis (
TypeAnalysis) – Résultat de l’analyse
- Type renvoyé:
str- Renvoie:
Rapport textuel formaté
Capture Service (Service de Capture)
Service de capture d’écran et OCR Gère la capture en temps réel et l’analyse OCR
- class services.capture_service.CaptureService(ocr_module=None)[source]
Bases :
objectService pour gérer la capture d’écran et l’OCR
- CONFIG_FILE = 'screen_region.json'
- set_region(region)[source]
Définit la région de capture
- Paramètres:
region (
CaptureRegion)
- save_region()[source]
Sauvegarde la région de capture dans un fichier
- Type renvoyé:
bool- Renvoie:
True si succès, False sinon
- load_region()[source]
Charge la région de capture depuis le fichier
- Type renvoyé:
bool- Renvoie:
True si succès, False sinon
- select_region_interactive()[source]
Sélectionne interactivement une région d’écran
- Type renvoyé:
bool- Renvoie:
True si succès, False sinon
- start_live_capture(interval, callback, sensitivity=1, confidence=0.6)[source]
Démarre la capture en temps réel
- Paramètres:
interval (
float) – Intervalle entre les captures (secondes)callback (
Callable) – Fonction appelée lors d’une détectionsensitivity (
int) – Sensibilité de détectionconfidence (
float) – Seuil de confiance minimal
- Type renvoyé:
bool- Renvoie:
True si démarré avec succès
- capture_single()[source]
Effectue une capture unique
- Type renvoyé:
Optional[any]- Renvoie:
Image capturée ou None
Presenters (Présentateurs)
Ce module contient les présentateurs qui gèrent la logique de présentation.
Main Presenter (Présentateur Principal)
Presenter principal de l’application Coordonne l’initialisation et la communication entre les composants
UI (Interface Utilisateur)
Ce module contient les composants de l’interface utilisateur.
Main Window (Fenêtre Principale)
Fenêtre principale de l’application Coordonne tous les onglets (Passive View)