fix: nettoyage agressif des liens team avec regex multiligne

- Utilisation d'une regex multiligne pour supprimer tous les blocs <li> contenant des liens /team
- Nettoyage manuel en fallback si la regex ne capture pas tout
- Suppression de tous les formats: /team, /team/, /team.html

Cela devrait éliminer définitivement les doublons de liens Équipe
This commit is contained in:
syoul
2025-12-09 12:11:34 +01:00
parent a1a5849dd4
commit c4aada1caa

View File

@@ -240,52 +240,61 @@ try:
# ÉTAPE 1: Supprimer TOUS les liens Équipe existants (même s'il n'y en a qu'un)
print("🧹 Nettoyage de tous les liens Équipe existants...")
lines = content.splitlines(keepends=True)
# APPROCHE AGRESSIVE: Supprimer tous les blocs <li> contenant un lien vers /team
# Utiliser une regex multiligne pour détecter et supprimer les blocs complets
team_link_block_pattern = r'<li[^>]*>.*?<Link[^>]*href=["\']/?team(/|\.html)?["\'][^>]*>.*?</Link>.*?</li>'
content_cleaned = re.sub(team_link_block_pattern, '', content, flags=re.DOTALL | re.IGNORECASE)
# Compter combien de liens ont été supprimés
remaining_before = len(re.findall(r'href=["\']/?team(/|\.html)?["\']', content))
remaining_after = len(re.findall(r'href=["\']/?team(/|\.html)?["\']', content_cleaned))
team_links_removed = remaining_before - remaining_after
if team_links_removed > 0:
print(f"✅ {team_links_removed} lien(s) Équipe supprimé(s) (regex multiligne)")
elif remaining_after > 0:
print(f"⚠️ {remaining_after} lien(s) Équipe encore présent(s) après nettoyage regex, nettoyage manuel...")
# Nettoyage manuel ligne par ligne si la regex n'a pas tout capturé
lines = content_cleaned.splitlines(keepends=True)
if lines and not lines[-1].endswith('\n'):
lines[-1] = lines[-1] + '\n'
new_lines = []
skip_team_link = False
team_links_removed = 0
manual_removed = 0
i = 0
while i < len(lines):
line = lines[i]
# Détecter le début d'un lien Équipe (inclut /team, /team/, /team.html)
# Utiliser une regex pour détecter tous les formats possibles
# Détecter le début d'un lien Équipe
team_link_match = re.search(r'href=["\']/?team(/|\.html)?["\']|href=\{["\']/?team', line)
if team_link_match and not skip_team_link:
skip_team_link = True
team_links_removed += 1
# Ignorer cette ligne et les lignes suivantes jusqu'à </li>
manual_removed += 1
i += 1
continue
# Si on est dans un bloc Équipe à supprimer, ignorer jusqu'à </li>
if skip_team_link:
# Vérifier si on a atteint la fin du <li>
if '</li>' in line:
skip_team_link = False
# Vérifier aussi si on trouve un nouveau <li> sans avoir fermé le précédent (cas mal formaté)
elif '<li' in line and '</li>' not in line:
# On est dans un nouveau <li>, donc le précédent était mal formaté, continuer
pass
i += 1
continue
new_lines.append(line)
i += 1
if team_links_removed > 0:
print(f"✅ {team_links_removed} lien(s) Équipe supprimé(s)")
# ÉTAPE 2: Ajouter un seul lien Équipe au bon endroit
if manual_removed > 0:
content_cleaned = ''.join(new_lines)
print(f"✅ {manual_removed} lien(s) Équipe supplémentaire(s) supprimé(s) (nettoyage manuel)")
lines = content_cleaned.splitlines(keepends=True)
if lines and not lines[-1].endswith('\n'):
lines[-1] = lines[-1] + '\n'
# ÉTAPE 2: Ajouter un seul lien Équipe au bon endroit
insert_idx = -1
for i, line in enumerate(lines):
if 'href="/overview"' in line: