from bs4 import BeautifulSoup
import hashlib

from bookstack import Bookstack
from vcinema_utils import VCinemaUtils

# Page ID of https://wiki.jacknet.io/books/vcinema/page/csv
PAGE_ID = 11


def update_viewings_csv(token_id, token_secret, check_existing=True):
    print("Retrieving viewings page")
    html_page = Bookstack.get_page_html(VCinemaUtils.JACKNET_WIKI_URL, token_id, token_secret, PAGE_ID)

    soup = BeautifulSoup(html_page, 'html.parser')
    csv_data = soup.find("code").text.strip().encode('utf-8')

    if check_existing:
        print("Retrieving existing file")
        existing_attachment_id = VCinemaUtils.get_viewings_csv_attachment_id(token_id, token_secret)
        attachment = Bookstack.get_attachment(VCinemaUtils.JACKNET_WIKI_URL, token_id, token_secret, existing_attachment_id)
        existing_attachment_hash = hashlib.md5(attachment).hexdigest()
        page_hash = hashlib.md5(csv_data).hexdigest()

    if not check_existing or page_hash != existing_attachment_hash:
        print("Updating file")
        # bookstack update file via api doesn't work
        Bookstack.post_attachment(VCinemaUtils.JACKNET_WIKI_URL, token_id, token_secret, "vcinema.csv", csv_data, PAGE_ID)
        Bookstack.delete_attachment(VCinemaUtils.JACKNET_WIKI_URL, token_id, token_secret, existing_attachment_id)
        print("File updated")
    else:
        print("File already up-to-date")
