コード例 #1
0
ファイル: home.py プロジェクト: ghostery/whotracks.me
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")
コード例 #2
0
ファイル: home.py プロジェクト: valerymamontov/whotracks.me
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")
コード例 #3
0
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")
コード例 #4
0
ファイル: explorer.py プロジェクト: xbl3/whotracks.me
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")
コード例 #5
0
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")
コード例 #6
0
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)
コード例 #7
0
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")
コード例 #8
0
ファイル: home.py プロジェクト: ghostery/whotracks.me
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")
コード例 #9
0
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")
コード例 #10
0
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")
コード例 #11
0
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)
コード例 #12
0
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")
コード例 #13
0
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")
コード例 #14
0
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")
コード例 #15
0
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")
コード例 #16
0
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")
コード例 #17
0
ファイル: blog.py プロジェクト: birdsarah/whotracks.me
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")
コード例 #18
0
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")
コード例 #19
0
ファイル: explorer.py プロジェクト: birdsarah/whotracks.me
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")
コード例 #20
0
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")
コード例 #21
0
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")