add scripts

probably dont actually work
This commit is contained in:
Sarah 2022-03-09 20:15:21 +00:00
parent 07ad435936
commit 5f09c1917d
2 changed files with 147 additions and 5 deletions

View File

@ -0,0 +1,140 @@
import argparse
import base64
from collections import Counter, OrderedDict
import os
from progress.bar import Bar
from wand.image import Image
import worldmap
from bookstack import Bookstack
from vcinema_utils import VCinemaUtils
FLAGS = {
"Australia": "🇦🇺",
"Belgium": "🇧🇪",
"Canada": "🇨🇦",
"China": "🇨🇳",
"Czech Republic": "🇨🇿",
"Czechia": "🇨🇿",
"France": "🇫🇷",
"Germany": "🇩🇪",
"Hong Kong": "🇭🇰",
"Hong Kong SAR China": "🇭🇰",
"Italy": "🇮🇹",
"Israel": "🇮🇱",
"Japan": "🇯🇵",
"Luxembourg": "🇱🇺",
"Mexico": "🇲🇽",
"New Zealand": "🇳🇿",
"Nigeria": "🇳🇬",
"North Korea": "🇰🇵",
"Philippines": "🇵🇭",
"Russia": "🇷🇺",
"Spain": "🇪🇸",
"South Africa": "🇿🇦",
"South Korea": "🇰🇷",
"Taiwan": "🇹🇼",
"Thailand": "🇹🇭",
"Turkey": "🇹🇷",
"Uganda": "🇺🇬",
"United Kingdom": "🇬🇧",
"United States": "🇺🇸",
"West Germany": "⬅️🇩🇪",
}
def build_table(fby, bar):
fby_sorted = OrderedDict(sorted(fby.items(), key=lambda t: t[0]))
table = "<table>"
table += "<thead><tr><th>Country</th><th>Films</th></tr>"
table += "<tbody>"
for country in fby_sorted.keys():
row = "<tr>"
row += "<td>"
row += "{} {}".format(str(country), FLAGS[country])
row += "</td>"
row += "<td>"
row += "<br>".join(["<a href=\"{}\">{}</a>".format(film['imdb_id'], film['title']) for film in fby_sorted[country]])
row += "</td>"
row += "</tr>"
table += row
bar.next()
table += "</tbody>"
table += "</table>"
return table
def draw_map(counter, file_name="vcinema_map.svg"):
countries = [k for k, v in counter.items()]
counts = [len(v) for _, v in counter.items()]
max_count = max(counts)
opacity = [0.5 + (x / (float(max_count))/2.0) for x in counts]
worldmap.plot(countries, cmap=["#ff0000"], opacity=opacity, filename=file_name, verbose=False)
with Image(filename=file_name, width=1000, height=655) as i:
png_data = i.make_blob("png")
os.remove(file_name)
return png_data
def update_page(map_png, table, wiki_url, token_id, token_secret):
page_id = 34
encoded = base64.b64encode(map_png).decode("utf-8")
image_html = "<img src=\"data:image/png;base64,{}\" />".format(encoded)
page_contents = image_html + table
Bookstack.update_page(wiki_url, token_id, token_secret, page_id, html=page_contents)
def update_films_by_country_page(token_id, token_secret):
print("Retrieving VCinema viewings")
viewings = VCinemaUtils.get_vcinema_viewings(token_id, token_secret)
viewing_count = len(viewings)
with Bar('Retrieving movie data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) as bar:
VCinemaUtils.add_imdb_data_to_viewings(viewings, ['countries'], bar)
with Bar('Processing viewing data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) as bar:
viewings_by_country = VCinemaUtils.filter_viewings(viewings, 'countries', bar)
country_count = len(viewings_by_country.keys())
with Bar('Generating table', max=country_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) as bar:
film_by_country_table = build_table(viewings_by_country, bar)
country_counter = Counter(viewings_by_country)
png_data = draw_map(country_counter)
update_page(png_data, film_by_country_table, VCinemaUtils.JACKNET_WIKI_URL, token_id, token_secret)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Update page displaying VCinema films sorted by country.')
parser.add_argument('token_id', help='API token ID.')
parser.add_argument('token_secret', help='API token secret.')
args = parser.parse_args()
update_films_by_country_page(args.token_id, args.token_secret)

View File

@ -2,7 +2,6 @@ import argparse
from collections import OrderedDict
from progress.bar import Bar
from bookstack import Bookstack
from vcinema_utils import VCinemaUtils
@ -19,6 +18,9 @@ def build_table(films_by_year, progressbar=None):
if progressbar is not None:
progressbar.next()
if progressbar is not None:
progressbar.finish()
return page_table
@ -27,14 +29,14 @@ def update_films_by_year_page(token_id, token_secret):
viewings = VCinemaUtils.get_vcinema_viewings(token_id, token_secret)
viewing_count = len(viewings)
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)
with Bar('Retrieving movie data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) as bar:
VCinemaUtils.add_imdb_data_to_viewings(viewings, bar)
with Bar('Processing viewing data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining') as bar:
with Bar('Processing viewing data', max=viewing_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) as bar:
viewings_by_year = VCinemaUtils.filter_viewings(viewings, 'year', bar)
year_count = len(viewings_by_year)
with Bar('Generating table', max=year_count, suffix='%(percent).1f%% - %(eta)ds remaining') as bar:
with Bar('Generating table', max=year_count, suffix='%(percent).1f%% - %(eta)ds remaining', check_tty=False) 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