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,51 +240,60 @@ try:
# ÉTAPE 1: Supprimer TOUS les liens Équipe existants (même s'il n'y en a qu'un) # É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...") print("🧹 Nettoyage de tous les liens Équipe existants...")
lines = content.splitlines(keepends=True)
if lines and not lines[-1].endswith('\n'):
lines[-1] = lines[-1] + '\n'
new_lines = [] # APPROCHE AGRESSIVE: Supprimer tous les blocs <li> contenant un lien vers /team
skip_team_link = False # Utiliser une regex multiligne pour détecter et supprimer les blocs complets
team_links_removed = 0 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)
i = 0 # Compter combien de liens ont été supprimés
while i < len(lines): remaining_before = len(re.findall(r'href=["\']/?team(/|\.html)?["\']', content))
line = lines[i] remaining_after = len(re.findall(r'href=["\']/?team(/|\.html)?["\']', content_cleaned))
team_links_removed = remaining_before - remaining_after
# Détecter le début d'un lien Équipe (inclut /team, /team/, /team.html)
# Utiliser une regex pour détecter tous les formats possibles
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>
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: if team_links_removed > 0:
print(f"✅ {team_links_removed} lien(s) Équipe supprimé(s)") 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
manual_removed = 0
i = 0
while i < len(lines):
line = lines[i]
# 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
manual_removed += 1
i += 1
continue
if skip_team_link:
if '</li>' in line:
skip_team_link = False
i += 1
continue
new_lines.append(line)
i += 1
if manual_removed > 0:
content_cleaned = ''.join(new_lines)
print(f"✅ {manual_removed} lien(s) Équipe supplémentaire(s) supprimé(s) (nettoyage manuel)")
# ÉTAPE 2: Ajouter un seul lien Équipe au bon endroit
content_cleaned = ''.join(new_lines)
lines = content_cleaned.splitlines(keepends=True) lines = content_cleaned.splitlines(keepends=True)
if lines and not lines[-1].endswith('\n'): if lines and not lines[-1].endswith('\n'):
lines[-1] = lines[-1] + '\n' lines[-1] = lines[-1] + '\n'
# ÉTAPE 2: Ajouter un seul lien Équipe au bon endroit
insert_idx = -1 insert_idx = -1
for i, line in enumerate(lines): for i, line in enumerate(lines):