# Ajout de la fonctionnalité de suivi des pages "France" sans catégorie ## Description Cette fonctionnalité permet de suivre les pages du wiki OpenStreetMap commençant par "France" qui n'ont pas de catégorie (pages sans issues). Ces pages sont identifiées à partir de la liste des "DeadendPages" du wiki OSM. La fonctionnalité suggère également des catégories pour ces pages et suit leur évolution lorsqu'elles sont catégorisées. ## Modifications apportées ### 1. Ajout de constantes dans `wiki_compare.py` ```python WIKI_DEADEND_PAGES_URL = "https://wiki.openstreetmap.org/w/index.php?title=Special:DeadendPages&limit=500&offset=1000" DEADEND_PAGES_FILE = "deadend_pages.json" ``` ### 2. Ajout de la fonction `suggest_categories` dans `wiki_compare.py` Cette fonction analyse le titre et le contenu d'une page pour suggérer des catégories pertinentes : ```python def suggest_categories(page_title, page_url): """ Suggest categories for an uncategorized page based on its title and content Args: page_title (str): Title of the page page_url (str): URL of the page Returns: list: List of suggested categories """ # Logique de suggestion de catégories basée sur le titre et le contenu de la page ``` ### 3. Ajout de la fonction `fetch_deadend_pages` dans `wiki_compare.py` Cette fonction récupère les pages commençant par "France" depuis la liste des DeadendPages : ```python def fetch_deadend_pages(): """ Fetch pages starting with "France" from the DeadendPages list Returns: list: List of dictionaries containing page information """ # Logique de récupération des pages depuis la liste des DeadendPages # Filtrage des pages commençant par "France" # Suggestion de catégories pour chaque page ``` ### 4. Modification de la fonction `main` dans `wiki_compare.py` Ajout d'une section pour traiter les pages sans catégorie et suivre leur évolution : ```python # Fetch pages starting with "France" from the DeadendPages list deadend_pages = fetch_deadend_pages() if deadend_pages: # Load existing deadend pages data to compare with history existing_data = load_json_data(DEADEND_PAGES_FILE) # Initialize history if it doesn't exist if 'history' not in existing_data: existing_data['history'] = {} # Get the most recent history entry sorted_timestamps = sorted(existing_data.get('history', {}).keys()) previous_pages = [] if sorted_timestamps: latest_timestamp = sorted_timestamps[-1] previous_pages = existing_data['history'][latest_timestamp].get('pages', []) # Find pages that were in the previous list but are no longer in the current list previous_urls = [page['url'] for page in previous_pages] current_urls = [page['url'] for page in deadend_pages] categorized_pages = [] for url in previous_urls: if url not in current_urls: # Find the page in previous_pages for page in previous_pages: if page['url'] == url: # This page is no longer in the DeadendPages list, which means it has been categorized categorized_pages.append(page) break # Create a timestamp for the current data current_timestamp = datetime.now().isoformat() # Create the history entry history_entry = { 'pages': deadend_pages, 'categorized_pages': categorized_pages } # Add the entry to history with timestamp as key existing_data['history'][current_timestamp] = history_entry # Update the current data existing_data['pages'] = deadend_pages existing_data['categorized_pages'] = categorized_pages existing_data['last_updated'] = current_timestamp # Save the updated data save_to_json(existing_data, DEADEND_PAGES_FILE) ``` ### 5. Modification du contrôleur `WikiController.php` Ajout du chargement des données des pages sans catégorie : ```php // Load deadend pages (pages starting with "France" from the DeadendPages list) $deadendPages = []; $categorizedPages = []; $deadendPagesFile = $this->getParameter('kernel.project_dir') . '/wiki_compare/deadend_pages.json'; if (file_exists($deadendPagesFile)) { $deadendPagesData = json_decode(file_get_contents($deadendPagesFile), true); if (isset($deadendPagesData['pages']) && is_array($deadendPagesData['pages'])) { $deadendPages = $deadendPagesData['pages']; } if (isset($deadendPagesData['categorized_pages']) && is_array($deadendPagesData['categorized_pages'])) { $categorizedPages = $deadendPagesData['categorized_pages']; } } ``` Ajout des données à la vue : ```php return $this->render('admin/wiki.html.twig', [ // Autres données... 'deadend_pages' => $deadendPages, 'categorized_pages' => $categorizedPages ]); ``` ### 6. Ajout de sections dans le template `admin/wiki.html.twig` Ajout d'une section pour afficher les pages sans catégorie : ```twig {% if deadend_pages is defined and deadend_pages|length > 0 %}
Ces pages wiki commençant par "France" n'ont pas de catégorie. Vous pouvez contribuer en ajoutant des catégories à ces pages.
Ces pages wiki commençant par "France" ont été récemment catégorisées et ne sont plus dans la liste des pages sans catégorie.