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
	 Sarah
						Sarah