add start of wiki update script
This commit is contained in:
parent
0a53ff3f18
commit
116e858cc2
74
update_wiki.py
Normal file
74
update_wiki.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
from bookstack import Bookstack
|
||||||
|
from update_films_by_country import get_films_by_country, build_page as build_films_by_country_page, FILMS_BY_COUNTRY_PAGE_ID
|
||||||
|
from update_films_by_year import get_films_by_year, build_page as build_films_by_year_page, FILMS_BY_YEAR_PAGE_ID
|
||||||
|
from vcinema_utils import VCinemaUtils
|
||||||
|
from update_viewings_csv import update_viewings_csv
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
from progress.bar import IncrementalBar
|
||||||
|
|
||||||
|
|
||||||
|
def update_wiki(token_id, token_secret, update_csv=False, update_films_by_year=True, update_films_by_country=True):
|
||||||
|
if update_csv:
|
||||||
|
print("Updating CSV")
|
||||||
|
update_viewings_csv(token_id, token_secret)
|
||||||
|
|
||||||
|
print("Getting viewings")
|
||||||
|
viewings = VCinemaUtils.get_vcinema_viewings(token_id, token_secret)
|
||||||
|
|
||||||
|
data_fields = []
|
||||||
|
if update_films_by_year:
|
||||||
|
data_fields.append("year")
|
||||||
|
|
||||||
|
if update_films_by_country:
|
||||||
|
data_fields.append("countries")
|
||||||
|
|
||||||
|
viewing_count = len(viewings)
|
||||||
|
with IncrementalBar('Retrieving movie data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) as bar:
|
||||||
|
VCinemaUtils.add_imdb_data_to_viewings(viewings, data_fields, bar)
|
||||||
|
|
||||||
|
update_page_count = 0
|
||||||
|
if update_films_by_year:
|
||||||
|
update_page_count += 1
|
||||||
|
if update_films_by_country:
|
||||||
|
update_page_count += 1
|
||||||
|
|
||||||
|
with IncrementalBar('Processing viewing data', max=update_page_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) as bar:
|
||||||
|
if update_films_by_year:
|
||||||
|
films_by_year = get_films_by_year(viewings)
|
||||||
|
bar.next()
|
||||||
|
if update_films_by_country:
|
||||||
|
films_by_country = get_films_by_country(viewings)
|
||||||
|
bar.next()
|
||||||
|
|
||||||
|
bar.finish()
|
||||||
|
|
||||||
|
with IncrementalBar('Generating pages', max=update_page_count, check_tty=False) as bar:
|
||||||
|
if update_films_by_year:
|
||||||
|
films_by_year_page = build_films_by_year_page(films_by_year)
|
||||||
|
bar.next()
|
||||||
|
if update_films_by_country:
|
||||||
|
films_by_country_page = build_films_by_country_page(films_by_country)
|
||||||
|
bar.next()
|
||||||
|
|
||||||
|
bar.finish()
|
||||||
|
|
||||||
|
with IncrementalBar('Updating pages', max=update_page_count, check_tty=False) as bar:
|
||||||
|
if update_films_by_year:
|
||||||
|
Bookstack.update_page(VCinemaUtils.JACKNET_WIKI_URL, token_id, token_secret, FILMS_BY_YEAR_PAGE_ID, films_by_year_page)
|
||||||
|
bar.next()
|
||||||
|
if update_films_by_country:
|
||||||
|
Bookstack.update_page(VCinemaUtils.JACKNET_WIKI_URL, token_id, token_secret, FILMS_BY_COUNTRY_PAGE_ID, films_by_country_page)
|
||||||
|
bar.next()
|
||||||
|
|
||||||
|
bar.finish()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(description='Update wiki pages.')
|
||||||
|
parser.add_argument('token_id', help='API token ID.')
|
||||||
|
parser.add_argument('token_secret', help='API token secret.')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
update_wiki(args.token_id, args.token_secret)
|
@ -9,15 +9,15 @@ from bookstack import Bookstack
|
|||||||
|
|
||||||
JACKNET_WIKI_URL = "https://wiki.jacknet.io"
|
JACKNET_WIKI_URL = "https://wiki.jacknet.io"
|
||||||
|
|
||||||
|
# Page ID of https://wiki.jacknet.io/books/vcinema/page/csv
|
||||||
|
CSV_PAGE_ID = 11
|
||||||
|
|
||||||
def get_viewings_csv_attachment_id(token_id, token_secret):
|
def get_viewings_csv_attachment_id(token_id, token_secret):
|
||||||
attachments = Bookstack.get_attachments(JACKNET_WIKI_URL, token_id, token_secret)
|
attachments = Bookstack.get_attachments(JACKNET_WIKI_URL, token_id, token_secret)
|
||||||
|
|
||||||
# Page ID of "https://wiki.jacknet.io/books/vcinema/page/csv"
|
|
||||||
page_id = 11
|
|
||||||
viewings_csv_file_name = "vcinema.csv"
|
viewings_csv_file_name = "vcinema.csv"
|
||||||
|
|
||||||
return next((x['id'] for x in attachments if x['uploaded_to'] == page_id and x['name'] == viewings_csv_file_name), None)
|
return next((x['id'] for x in attachments if x['uploaded_to'] == CSV_PAGE_ID and x['name'] == viewings_csv_file_name), None)
|
||||||
|
|
||||||
|
|
||||||
def get_vcinema_viewings(token_id, token_secret, viewings_csv=None, combine_repeat_viewings=True):
|
def get_vcinema_viewings(token_id, token_secret, viewings_csv=None, combine_repeat_viewings=True):
|
||||||
@ -63,13 +63,13 @@ def increment_progressbar(bar, _):
|
|||||||
|
|
||||||
def add_imdb_data_to_viewings(viewings, field_names, progressbar=None):
|
def add_imdb_data_to_viewings(viewings, field_names, progressbar=None):
|
||||||
with ThreadPoolExecutor(4) as executor:
|
with ThreadPoolExecutor(4) as executor:
|
||||||
future_to_url = {executor.submit(IMDbUtils.get_movie, viewing['imdb_id']) for viewing in viewings}
|
future_imdb_tasks = {executor.submit(IMDbUtils.get_movie, viewing['imdb_id']) for viewing in viewings}
|
||||||
|
|
||||||
if progressbar is not None:
|
if progressbar is not None:
|
||||||
for this_future in future_to_url:
|
for this_future in future_imdb_tasks:
|
||||||
this_future.add_done_callback(functools.partial(increment_progressbar, progressbar))
|
this_future.add_done_callback(functools.partial(increment_progressbar, progressbar))
|
||||||
|
|
||||||
for future in as_completed(future_to_url):
|
for future in as_completed(future_imdb_tasks):
|
||||||
imdb_data = future.result()
|
imdb_data = future.result()
|
||||||
|
|
||||||
for viewing in viewings:
|
for viewing in viewings:
|
||||||
@ -78,6 +78,9 @@ def add_imdb_data_to_viewings(viewings, field_names, progressbar=None):
|
|||||||
if field_name in imdb_data:
|
if field_name in imdb_data:
|
||||||
viewing[field_name] = imdb_data[field_name]
|
viewing[field_name] = imdb_data[field_name]
|
||||||
|
|
||||||
|
if progressbar is not None:
|
||||||
|
progressbar.finish()
|
||||||
|
|
||||||
|
|
||||||
def filter_viewings(viewings, filter_field, progressbar=None):
|
def filter_viewings(viewings, filter_field, progressbar=None):
|
||||||
viewings_filtered = {}
|
viewings_filtered = {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user