from bs4 import BeautifulSoup import hashlib from bookstack import Bookstack from vcinema_utils import VCinemaUtils def update_viewings_csv(token_id, token_secret, check_existing=True): # Page ID of https://wiki.jacknet.io/books/vcinema/page/csv page_id = 11 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")