cemantle_solver/selenium_cemantle_wordcheck.py
2026-02-02 09:53:18 +01:00

43 lines
1.6 KiB
Python

import re
import requests
def get_puzzle_number():
url = "https://cemantle.certitudes.org/"
headers = {
"User-Agent": "Mozilla/5.0",
}
resp = requests.get(url, headers=headers, timeout=10)
if resp.status_code == 200:
m = re.search(r'data-puzzle-number="(\d+)"', resp.text)
if m:
return m.group(1)
raise Exception("Impossible de récupérer le numéro du puzzle")
def check_words_api(wordlist_path, output_path, max_words=None):
puzzle_number = get_puzzle_number()
url = f"https://cemantle.certitudes.org/score?n={puzzle_number}"
headers = {
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Mozilla/5.0",
"Origin": "https://cemantle.certitudes.org",
"Referer": "https://cemantle.certitudes.org/",
}
with open(wordlist_path, 'r', encoding='utf-8') as fin:
words = [w.strip() for w in fin if w.strip()]
if max_words:
words = words[:max_words]
with open(output_path, 'w', encoding='utf-8') as fout:
for idx, word in enumerate(words):
data = f"word={word}".encode("utf-8")
try:
resp = requests.post(url, headers=headers, data=data, timeout=10)
js = resp.json()
if "s" in js:
fout.write(word + '\n')
print(f"Valide: {word}")
except Exception as e:
print(f"Erreur pour {word}: {e}")
print(f"Tri terminé. Les mots valides sont dans {output_path}")
if __name__ == "__main__":
check_words_api("english_words.txt", "cemantle_valid_english_words.txt")