import argparse from bs4 import BeautifulSoup import hashlib from bookstack import Bookstack from vcinema_utils import VCinemaUtils def update_viewings_csv_file_from_page(token_id, token_secret): # Page ID of https://wiki.jacknet.io/books/vcinema/page/csv page_id = 11 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') 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 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("done") else: print("file already up to date") if __name__ == '__main__': parser = argparse.ArgumentParser(description='Update the vcinema.csv file with data from the CSV wiki page.') parser.add_argument('token_id', help='API token ID.') parser.add_argument('token_secret', help='API token secret.') args = parser.parse_args() update_viewings_csv_file_from_page(args.token_id, args.token_secret)