def build_imprint(data): with open('_site/imprint.html', 'w') as output: output.write(render_template( template=get_template(data, "imprint.html"), )) print_progress(text="Generate Imprint")
def build_home(data): apps = data.apps sorted_trackers = sorted(apps.values(), key=lambda a: a['overview']['reach'], reverse=True) sorted_trackers_cat = sorted(apps.values(), key=lambda a: a.get('cat', '') or '') for tracker in sorted_trackers: if 'name' not in tracker: tracker['name'] = tracker['overview']['id'] for tracker in sorted_trackers_cat: if 'name' not in tracker: tracker['name'] = tracker['overview']['id'] # most tracked sites by cat most_tracked_sites = tracked_by_category(data.sites, worst=True) # least tracked sites by cat least_tracked_sites = tracked_by_category(data.sites, worst=False) top10 = company_reach(data.companies) header_graph = Markup(overview_bars(top10)) with open('_site/index.html', 'w') as output: output.write( render_template(template=get_template(data, "index.html"), ts=header_graph, tracker_list=sorted_trackers[:20], trackers_list_cat=sorted_trackers_cat[:20], most_tracked_sites=most_tracked_sites, least_tracked_sites=least_tracked_sites)) print_progress(text="Generate home page")
def build_tracker_pages(data): template = get_template(data, name='tracker-page.html', path_to_root='..') for (tracker_id, tracker) in data.trackers.iter(): tracker_page(template, tracker_id, tracker, data) print_progress(text="Generate tracker pages")
def build_explorer(): data = DataSource(populate=False) build_packed_data(data) temp_folder = Path("temp") if not temp_folder.exists(): temp_folder.mkdir() table_to_csv(data.trackers, "temp/trackers.csv") table_to_csv(data.sites, "temp/sites.csv") table_to_csv(data.companies, "temp/companies.csv") table_to_csv(data.sites_trackers, "temp/sites_trackers.csv") month = data.trackers.last_month shutil.make_archive( f"_site/data/wtm-data-{month}", "zip", "temp" ) shutil.rmtree(temp_folder.as_posix(), ignore_errors=True) with open(f"_site/explorer.html", "w") as output: output.write(render_template( template=get_template(data, name="explorer.html"), download_link=f"data/wtm-data-{month}.zip" )) print_progress(text="Generated Exporable Dataset")
def build_blogpost_list(data, blog_posts): with open('_site/blog.html', 'w') as output: output.write( render_template(template=get_template(data, "blog.html"), blog_posts=[p for p in blog_posts if p['publish']])) print_progress(text="Generate blog list")
def build_website_pages_batch(batch): with DataSource(populate=False) as data: template = get_template(data, "website-page.html", path_to_root='..') for rank, site in batch: website_page(template, data.sites.get_datapoint(site), rank + 1, data)
def build_website_pages(data): template = get_template(data, "website-page.html", path_to_root='..') for (rank, site) in enumerate(data.sites.sort_by(metric='popularity', descending=True)): website_page(template, site, rank + 1, data) print_progress(text="Generate website pages")
def build_privacy_policy(data): with open('_site/privacy-policy.html', 'w') as output: output.write(render_template( template=get_template(data, "privacy-policy.html"), )) print_progress(text="Generate Privacy Policy")
def build_company_pages(data): companies = data.companies template = get_template(data, "company-page.html") for company_data in companies.values(): company_page(template, company_data, data) print_progress(text="Generate company pages")
def build_tracker_pages(data): apps = data.apps template = get_template(data, name='tracker-page.html', path_to_root='..') for (aid, app) in apps.items(): tracker_page(template, aid, app, data) print_progress(text="Generate tracker pages")
def build_tracker_page_batch(batch): data = DataSource(populate=False) template = get_template(data, name='tracker-page.html', path_to_root='..') for tracker_id in batch: page_data = tracker_page_data(tracker_id, data.trackers.get_datapoint(tracker_id), data) tracker_page(template, page_data)
def build_trackers_list(data): with open('_site/trackers.html', 'w') as output: output.write( render_template(template=get_template(data, name="trackers.html"), tracker_list=data.trackers.sort_by(metric="reach"), trackers_list_company=data.trackers.sort_by( metric="company_id", descending=False), header_stats=data.trackers.summary_stats())) print_progress(text="Generate tracker list")
def build_website_pages(data): sites = data.sites template = get_template(data, "website-page.html", path_to_root='..') for rank, (site_id, site) in enumerate( sorted(sites.items(), key=lambda s: s[1]['overview']['popularity'], reverse=True)): website_page(template, site_id, rank + 1, data) print_progress(text="Generate website pages")
def build_company_reach_chart_page(data): top100 = company_reach(data.companies, n=100) chart = Markup(overview_bars(top100, highlight=10, custom_height=3000)) template = get_template(data, name='reach-chart-page.html', path_to_root='..') with open('_site/companies/reach-chart.html', 'w') as output: output.write(render_template( path_to_root='..', template=template, chart=chart, )) print_progress(text="Generate company reach chart")
def build_website_list(data): header_numbers = data.sites.summary_stats() sorted_websites = data.sites.sort_by(metric='popularity', descending=True) sorted_websites_cat = data.sites.sort_by(metric='category', descending=True) with open('_site/websites.html', 'w') as output: output.write(render_template( template=get_template(data, "websites.html"), website_list=sorted_websites, website_list_cat=sorted_websites_cat, header_numbers=header_numbers )) print_progress(text="Generate website list")
def build_blogpost_pages(data, blog_posts): template = get_template(data, "blog-page.html", render_markdown=True, path_to_root='..') for blog_post in blog_posts: with open(f'_site/blog/{blog_post.get("filename")}.html', 'w') as output: output.write( render_template(path_to_root='..', template=template, blog_post=blog_post)) print_progress(text="Generate blog posts")
def build_blogpost_pages(data, blog_posts): for blog_post in blog_posts: #TODO: Move template out after footnotes markdown extension does # not save global state template = get_template(data, "blog-page.html", render_markdown=True, path_to_root='..') with open(f'_site/blog/{blog_post.get("filename")}.html', 'w') as output: output.write( render_template(path_to_root='..', template=template, blog_post=blog_post)) print_progress(text="Generate blog posts")
def build_home(data): top10 = company_reach(data.companies) header_graph = Markup(overview_bars(top10)) with open('_site/index.html', 'w') as output: output.write( render_template( template=get_template(data, "index.html"), ts=header_graph, tracker_list=data.trackers.sort_by(metric="reach")[:20], trackers_list_company=data.trackers.sort_by( metric="company_id")[:20], most_tracked_sites=data.sites.sort_by(metric='trackers')[:20], least_tracked_sites=data.sites.sort_by(metric='trackers', descending=False)[:20], websites=data.sites.summary_stats(), tracker_stats=data.trackers.summary_stats(), top10=top10)) print_progress(text="Generate home page")
def build_explorer(data): build_packed_data(data) temp_folder = Path("temp") if not temp_folder.exists(): temp_folder.mkdir() data.trackers.df.to_csv("temp/trackers.csv") data.sites.df.to_csv("temp/sites.csv") data.companies.df.to_csv("temp/companies.csv") data.sites_trackers.df.to_csv("temp/sites_trackers.csv") month = datetime.strftime(max(data.trackers.df.month), '%Y-%m') shutil.make_archive(f"_site/data/wtm-data-{month}", "zip", "temp") shutil.rmtree(temp_folder.as_posix(), ignore_errors=True) with open(f"_site/explorer.html", "w") as output: output.write( render_template(template=get_template(data, name="explorer.html"), download_link=f"data/wtm-data-{month}.zip")) print_progress(text="Generated Exporable Dataset")
def build_trackers_list(data): apps = data.apps sorted_trackers = sorted(apps.values(), key=lambda a: a['overview']['reach'], reverse=True) sorted_trackers_cat = sorted( apps.values(), key=lambda a: data.get_app_name(a['overview']['id']) if ('company_id' not in a or a['company_id'] in [None, "None"]) else a[ 'company_id']) for tracker in sorted_trackers: if 'name' not in tracker: tracker['name'] = tracker['overview']['id'] with open('_site/trackers.html', 'w') as output: output.write( render_template(template=get_template(data, name="trackers.html"), tracker_list=sorted_trackers, trackers_list_cat=sorted_trackers_cat, header_stats=tracker_header_stats(data.apps))) print_progress(text="Generate tracker list")
def build_website_list(data): sites = data.sites tracker_requests, tracker_buckets, https = summary_stats(data.sites) # header stats tracker_values = [] tracker_labels = [] for (k, v) in tracker_buckets.items(): tracker_values.append(v) tracker_labels.append(k) header_numbers = header_stats(data.sites) sorted_websites = sort_by_rank(data.sites) sorted_websites_cat = sort_by_cat(data.sites) # write to file with open('_site/websites.html', 'w') as output: output.write( render_template(template=get_template(data, "websites.html"), website_list=sorted_websites, website_list_cat=sorted_websites_cat, header_numbers=header_numbers)) print_progress(text="Generate website list")