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 : object

Entité 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 : object

Ré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 : object

Résultat complet d’une analyse de Pokémon

Paramètres:
  • pokemon (Pokemon)

  • type_analysis (TypeAnalysis)

  • confidence (float)

  • timestamp (datetime)

  • method (str)

pokemon: Pokemon
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 : object

Ré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
is_valid()[source]
Type renvoyé:

bool

__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 : object

Région de capture d’écran

Paramètres:
  • left (int)

  • top (int)

  • width (int)

  • height (int)

left: int
top: int
width: int
height: int
to_dict()[source]
Type renvoyé:

dict

classmethod from_dict(data)[source]
Paramètres:

data (dict)

Type renvoyé:

CaptureRegion

__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 : object

Calculateur d’efficacité des types Pokémon

__init__()[source]
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]]

format_analysis_report(pokemon_name, pokemon_types)[source]

Génère un rapport d’analyse formaté pour un Pokémon

Paramètres:
  • pokemon_name (str)

  • pokemon_types (List[str])

Type renvoyé:

str

get_type_chart_summary()[source]

Retourne un résumé du tableau des types

Type renvoyé:

str

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 : object

Gestionnaire 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”)

get_current_language()[source]

Retourne le code de la langue courante

Type renvoyé:

str

t(key, default=None)[source]

Récupère une traduction pour la clé donnée

Paramètres:
  • key (str) – Clé de traduction

  • default (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 traduction

  • default (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é:

TranslationManager

core.translations.translate_type(type_name)[source]

Fonction raccourci pour traduire un type Pokémon

Paramètres:

type_name (str) – Nom du type en anglais

Type renvoyé:

str

Renvoie:

Nom du type traduit

core.translations.format_form_name(pokemon_name, form_name, translated_pokemon_name=None)[source]

Fonction raccourci pour formater un nom de forme

Paramètres:
  • pokemon_name (str)

  • form_name (str)

  • translated_pokemon_name (Optional[str])

Type renvoyé:

str

Utils (Utilitaires)

Utilitaires pour l’application Pokémon Analyzer

core.utils.get_resource_path(relative_path)[source]

Obtient le chemin absolu vers une ressource, fonctionne en dev et avec PyInstaller

Paramètres:

relative_path – Chemin relatif depuis src/ (ex: “infrastructure/api/pokemon_names.json”)

Renvoie:

Path absolu vers la ressource

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 : object

Service 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}
__init__()[source]

Initialise le service PokeAPI

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 recherche

  • limit (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ération

  • callback – 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 : object

Classe 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’image

  • method (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)

clean_text(text)[source]

Nettoie le texte extrait par OCR

Paramètres:

text (str)

Type renvoyé:

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’image

  • max_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

batch_recognize(image_paths, confidence_threshold=0.6)[source]

Reconnaît plusieurs images en lot

Paramètres:
  • image_paths (List[str])

  • confidence_threshold (float)

Type renvoyé:

List[Dict[str, any]]

save_debug_images(image_path, output_dir='debug_ocr')[source]

Sauvegarde les images préprocessées pour debug

Paramètres:
  • image_path (str)

  • output_dir (str)

infrastructure.ocr.tesseract_ocr.test_ocr_setup()[source]

Teste si Tesseract est correctement installé

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 : object

Gestionnaire 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

capture_region()[source]

Capture la région sélectionnée

Type renvoyé:

Optional[Image]

analyze_capture(image, multi_pokemon=True, max_pokemon=2)[source]

Analyse une capture avec OCR

Paramètres:
  • image (Image) – Image à analyser

  • multi_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

stop_live_capture()[source]

Arrête la capture en temps réel

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)

enable_mss_capture(enable)[source]

Active/désactive la capture MSS (non utilisé ici)

Paramètres:

enable (bool)

enable_debug_mode(enable)[source]

Active/désactive le mode debug

Paramètres:

enable (bool)

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 : object

Service 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é:

TypeAnalysis

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’attaque

  • pokemon (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 type

  • pokemon (Pokemon) – Pokémon pour calculer le multiplicateur

  • emoji_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:
Type renvoyé:

str

Renvoie:

Rapport textuel formaté

analyze_team_weaknesses(pokemons)[source]

Analyse les faiblesses communes d’une équipe de Pokémon

Paramètres:

pokemons (List[Pokemon]) – Liste des Pokémon à analyser

Type renvoyé:

Dict[str, any]

Renvoie:

Dictionnaire avec faiblesses communes, couverture et recommandations

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 : object

Service pour gérer la capture d’écran et l’OCR

CONFIG_FILE = 'screen_region.json'
__init__(ocr_module=None)[source]
Paramètres:

ocr_module – Module OCR pour la reconnaissance

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étection

  • sensitivity (int) – Sensibilité de détection

  • confidence (float) – Seuil de confiance minimal

Type renvoyé:

bool

Renvoie:

True si démarré avec succès

stop_live_capture()[source]

Arrête la capture en temps réel

capture_single()[source]

Effectue une capture unique

Type renvoyé:

Optional[any]

Renvoie:

Image capturée ou None

analyze_image(image_path, confidence_threshold=0.6)[source]

Analyse une image avec l’OCR

Paramètres:
  • image_path (str) – Chemin de l’image

  • confidence_threshold (float) – Seuil de confiance minimal

Type renvoyé:

OCRResult

Renvoie:

OCRResult avec les résultats

is_capturing()[source]

Vérifie si une capture est en cours

Type renvoyé:

bool

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

class presenters.main_presenter.MainPresenter[source]

Bases : object

Presenter principal

__init__()[source]
run()[source]

Lance l’application

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)

class ui.main_window.MainWindow(*args: Any, **kwargs: Any)[source]

Bases : QMainWindow

Fenêtre principale de l’application

__init__()[source]
change_language(language_name)[source]

Gère le changement de langue depuis l’UI

show_status_message(message, timeout=0)[source]

Affiche un message dans la barre de statut

switch_to_tab(index)[source]

Change l’onglet actif

update_translations()[source]

Met à jour tous les textes traduits de l’interface