Files
ordinaceprojekt/SběrDatRůzné/DailyCalcudoku/tisk_calcudoku.py
T
Vladimir Buzalka 77d12c68d7 notebookvb
2026-05-09 08:29:35 +02:00

59 lines
1.7 KiB
Python

"""
Vybere 2 calcudoku z MySQL a vygeneruje PDF.
Použití: python tisk_calcudoku.py [YYYY-MM-DD] [obtiznost1] [obtiznost2]
Výchozí: dnešní datum, 5x5 a 6x6.
"""
import json
import sys
from datetime import date
from pathlib import Path
sys.stdout.reconfigure(encoding="utf-8")
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "Knihovny"))
sys.path.insert(0, str(Path(__file__).parent))
from mysql_db import connect_mysql
from vykresli_calcudoku import generate_pdf
PUZZLE_DATE = sys.argv[1] if len(sys.argv) > 1 else date.today().isoformat()
DIFFICULTIES = sys.argv[2:4] if len(sys.argv) > 3 else ["5x5", "6x6"]
OUTPUT = Path(__file__).parent.parent / f"calcudoku_{PUZZLE_DATE}.pdf"
def main():
conn = connect_mysql(database="puzzle")
cur = conn.cursor()
placeholders = ", ".join(["%s"] * len(DIFFICULTIES))
cur.execute(
f"SELECT difficulty, puzzle, solution, extra FROM puzzles "
f"WHERE game_type='calcudoku' AND puzzle_date=%s AND difficulty IN ({placeholders}) "
f"ORDER BY FIELD(difficulty, {placeholders})",
[PUZZLE_DATE] + DIFFICULTIES + DIFFICULTIES,
)
rows = cur.fetchall()
cur.close()
conn.close()
if not rows:
print(f"Žádná calcudoku pro {PUZZLE_DATE} / {DIFFICULTIES}")
return
puzzles = []
for difficulty, cages_str, solution_str, extra_json in rows:
extra = json.loads(extra_json)
puzzles.append({
"difficulty": difficulty,
"cages_str": cages_str,
"solution_str": solution_str,
"grid_size": extra["grid_size"],
"puzzle_date": PUZZLE_DATE,
})
generate_pdf(puzzles, OUTPUT)
print(f"PDF uloženo: {OUTPUT}")
if __name__ == "__main__":
main()