From 6d3530bae9c6061d4ec69cb09b0ab4799e4fafa7 Mon Sep 17 00:00:00 2001 From: Sarah Date: Sun, 27 Feb 2022 15:34:06 +0000 Subject: [PATCH] refactor script to take progress bar as arg --- update_films_by_year_page.py | 25 ++++++++++++----------- vcinema_utils/VCinemaUtils.py | 37 +++++++++++++++-------------------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/update_films_by_year_page.py b/update_films_by_year_page.py index cc75829..fc425b6 100644 --- a/update_films_by_year_page.py +++ b/update_films_by_year_page.py @@ -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 += "
".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 += "
".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 diff --git a/vcinema_utils/VCinemaUtils.py b/vcinema_utils/VCinemaUtils.py index 4570189..1d5060f 100644 --- a/vcinema_utils/VCinemaUtils.py +++ b/vcinema_utils/VCinemaUtils.py @@ -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