refactor script to take progress bar as arg

This commit is contained in:
Sarah 2022-02-27 15:34:06 +00:00
parent 91883e0133
commit 6d3530bae9
2 changed files with 28 additions and 34 deletions

View File

@ -7,22 +7,18 @@ from bookstack import Bookstack
from vcinema_utils import VCinemaUtils
def build_table(films_by_year):
def build_table(films_by_year, progressbar=None):
films_by_year_sorted = OrderedDict(sorted(films_by_year.items(), key=lambda t: t[0], reverse=True))
page_table = "| Year | Films |\n| - | - |\n"
sys.stdout.write("\rGenerating table")
sys.stdout.flush()
for year in films_by_year_sorted.keys():
page_table += str(year) + " | "
page_table += "<br>".join("[{}](https://www.imdb.com/title/tt{}/)".format(film['title'], film['imdb_id']) for film in films_by_year_sorted[year])
page_table += "\n"
viewing_count = len(films_by_year_sorted)
with Bar('Generating table', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining') as bar:
for year in films_by_year_sorted.keys():
page_table += str(year) + " | "
page_table += "<br>".join("[{}](https://www.imdb.com/title/tt{}/)".format(film['title'], film['imdb_id']) for film in films_by_year_sorted[year])
page_table += "\n"
bar.next()
if progressbar is not None:
progressbar.next()
return page_table
@ -35,9 +31,12 @@ def update_films_by_year_page(token_id, token_secret):
with Bar('Retrieving movie data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining') as bar:
VCinemaUtils.add_imdb_data_to_viewings(viewings, ['year'], bar)
viewings_by_year = VCinemaUtils.filter_viewings(viewings, 'year')
with Bar('Processing viewing data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining') as bar:
viewings_by_year = VCinemaUtils.filter_viewings(viewings, 'year', bar)
film_by_year_table = build_table(viewings_by_year)
year_count = len(viewings_by_year)
with Bar('Generating table', max=year_count, suffix='%(percent).1f%% - %(eta)ds remaining') as bar:
film_by_year_table = build_table(viewings_by_year, bar)
# Page ID of https://wiki.jacknet.io/books/vcinema/page/films-by-release-year
page_id = 24

View File

@ -72,30 +72,25 @@ def add_imdb_data_to_viewings(viewings, field_names, progressbar=None):
viewing[field_name] = imdb_data[field_name]
def filter_viewings(viewings, filter_field):
sys.stdout.write("\rProcessing viewing data")
sys.stdout.flush()
def filter_viewings(viewings, filter_field, progressbar=None):
viewings_filtered = {}
viewing_count = len(viewings)
with Bar('Processing viewing data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining') as bar:
for viewing in viewings:
if filter_field in viewing:
viewing_field = viewing[filter_field]
if isinstance(viewing_field, list):
for fve in list(viewing_field):
if fve in viewings_filtered.keys():
viewings_filtered[fve] += [viewing]
else:
viewings_filtered[fve] = [viewing]
else:
if viewing_field in viewings_filtered.keys():
viewings_filtered[viewing_field] += [viewing]
for viewing in viewings:
if filter_field in viewing:
viewing_field = viewing[filter_field]
if isinstance(viewing_field, list):
for fve in list(viewing_field):
if fve in viewings_filtered.keys():
viewings_filtered[fve] += [viewing]
else:
viewings_filtered[viewing_field] = [viewing]
bar.next()
viewings_filtered[fve] = [viewing]
else:
if viewing_field in viewings_filtered.keys():
viewings_filtered[viewing_field] += [viewing]
else:
viewings_filtered[viewing_field] = [viewing]
if progressbar is not None:
progressbar.next()
return viewings_filtered