43 lines
1.6 KiB
Python
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")
|