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" | ||||
| 
 | ||||
| # 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): | ||||
|     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" | ||||
| 
 | ||||
|     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): | ||||
| @ -63,13 +63,13 @@ def increment_progressbar(bar, _): | ||||
| 
 | ||||
| def add_imdb_data_to_viewings(viewings, field_names, progressbar=None): | ||||
|     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: | ||||
|             for this_future in future_to_url: | ||||
|             for this_future in future_imdb_tasks: | ||||
|                 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() | ||||
| 
 | ||||
|             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: | ||||
|                             viewing[field_name] = imdb_data[field_name] | ||||
| 
 | ||||
|         if progressbar is not None: | ||||
|             progressbar.finish() | ||||
| 
 | ||||
| 
 | ||||
| def filter_viewings(viewings, filter_field, progressbar=None): | ||||
|     viewings_filtered = {} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Sarah
						Sarah