import tkinter as tk
from tkinter import ttk
import requests
from bs4 import BeautifulSoup

text_na_cisla = {
    "One" : 1,
    "Two" : 2,
    "Three" : 3,
    "Four" : 4,
    "Five" : 5
}

def scrape_books():
    url = 'https://books.toscrape.com/'
    res = requests.get(url)
    stranka = BeautifulSoup(res.text, 'html.parser')
    
    seznam_knih = stranka.find_all("article")
    
    data = []

    for kniha in seznam_knih:
        #nazev = kniha.find("img")["alt"]
        nazev = kniha.div.a.img["alt"]
        cena = kniha.find("p", class_="price_color").get_text(strip = True)
        hodnoceni = kniha.find("p")["class"][1]
        data.append((nazev,cena[1:],text_na_cisla.get(hodnoceni, 0)))
    
    return data

def run_gui():
    def serad():
        for polozka in tree.get_children():
            tree.delete(polozka)
            #print(tree.item(polozka)["values"][0])

    root = tk.Tk()
    root.title("Books to Scrape – Výpis knih")
    root.geometry("700x400")

    tree = ttk.Treeview(root, columns=('Název knihy', 'Cena', 'Hodnocení'), show='headings')
    tree.heading('Název knihy', text='Název knihy', command = serad)
    tree.heading('Cena', text='Cena')
    tree.heading('Hodnocení', text='Hodnocení')
    tree.column('Název knihy', width=500)
    tree.column('Cena', width=100)
    tree.column('Hodnocení', width=100)

    scrollbar = ttk.Scrollbar(root, orient="vertical", command=tree.yview)
    tree.configure(yscrollcommand=scrollbar.set)
    scrollbar.pack(side='right', fill='y')
    tree.pack(expand=True, fill='both')

    def nacti_data():
        for radek in tree.get_children():
            tree.delete(radek)
        for nazev, cena, hodnoceni in scrape_books():
            #print(nazev, cena, hodnoceni)
            tree.insert('', 'end', values=(nazev, cena, hodnoceni))
    def smaz_data():
        for radek in tree.get_children():
            tree.delete(radek)

    btn = ttk.Button(root, text="Načíst knihy", command=nacti_data)
    btn.pack()
    btn = ttk.Button(root, text="Smaž knihy", command=smaz_data)
    btn.pack(pady=10)

    root.mainloop()

run_gui()
