"""יוצר קובץ CSV (נפתח באקסל) עם כל הספרים שב־seforim.db של אוצריא וקישור ישיר לכל אחד.

שימוש:
    python export_book_links.py [נתיב_DB] [נתיב_פלט.csv]

ברירות מחדל: C:\\ProgramData\\otzaria\\books\\seforim.db  ->  otzaria_book_links.csv (בתיקיית הסקריפט)
"""
import csv
import os
import sqlite3
import sys

DEFAULT_DB = r"C:\ProgramData\otzaria\books\seforim.db"
DEFAULT_OUT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "otzaria_book_links.csv")


def main():
    db_path = sys.argv[1] if len(sys.argv) > 1 else DEFAULT_DB
    out_path = sys.argv[2] if len(sys.argv) > 2 else DEFAULT_OUT

    # פתיחה לקריאה בלבד, כדי לא להפריע לאוצריא אם היא פתוחה
    con = sqlite3.connect("file:" + db_path.replace("\\", "/") + "?mode=ro", uri=True)

    cats = {i: (p, t) for i, p, t in con.execute("SELECT id, parentId, title FROM category")}

    def cat_path(cid):
        parts = []
        while cid in cats:
            parent, title = cats[cid]
            parts.append(title)
            cid = parent
        return " / ".join(reversed(parts))

    sources = dict(con.execute("SELECT id, name FROM source"))

    rows = con.execute(
        "SELECT id, title, categoryId, sourceId FROM book ORDER BY categoryId, orderIndex, title"
    ).fetchall()

    # utf-8-sig כדי שאקסל יציג עברית נכון
    with open(out_path, "w", encoding="utf-8-sig", newline="") as f:
        w = csv.writer(f)
        w.writerow(["id", "שם הספר", "קישור", "קטגוריה", "מקור"])
        for book_id, title, cid, sid in rows:
            w.writerow([book_id, title, f"otzaria://open/book/{book_id}", cat_path(cid), sources.get(sid, "")])

    print(f"נכתבו {len(rows)} ספרים אל {out_path}")


if __name__ == "__main__":
    main()
