diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fcb152 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +out diff --git a/generate.py b/generate.py new file mode 100755 index 0000000..0f0ba2e --- /dev/null +++ b/generate.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +from pathlib import Path +import sys + +source = Path(sys.argv[1]) +source_videos = source / "videos" + +out_tags = {} +out_videos = {} + +for video in source_videos.iterdir(): + if video.is_dir(): + slug = video.name + + if slug not in out_videos: + out_videos[slug] = { + "tags": [], + } + + tagfile = video / "tags" + if not tagfile.is_dir(): + with tagfile.open() as tags: + for tag in tags.readlines(): + tag = tag.strip() + out_videos[slug]["tags"].append(tag) + if tag not in out_tags: + out_tags[tag] = { + "videos": [], + "count_videos": None, + } + out_tags[tag]["videos"].append(slug) + +for tag in out_tags: + out_tags[tag]["count_videos"] = len(out_tags[tag]["videos"]) + +print(out_tags) + +from jinja2 import Environment, FileSystemLoader, select_autoescape +env = Environment( + loader=FileSystemLoader('./templates'), + autoescape=select_autoescape(['html']) +) + +from datetime import datetime +import random + +# Output +# Create output dir +out_dir = Path("./out") +out_dir.mkdir(parents=True, exist_ok=True) + +# Create main page +templ = env.get_template('index.html') +templ.stream(featured_tags=random.sample(list(out_tags), 6), out_tags=out_tags, out_videos=out_videos).dump(str((out_dir / "index.html").resolve())) + +# Create about pages +out_dir_about = out_dir / "about" +out_dir_about.mkdir(parents=True, exist_ok=True) + +# Create about page +templ = env.get_template('about.html') +templ.stream(last_update=datetime.now().strftime("%Y-%m-%d %H:%M:%S")).dump(str((out_dir_about / "index.html").resolve())) + + +# Create tag pages +out_dir_tag = out_dir / "tag" +out_dir_tag.mkdir(parents=True, exist_ok=True) + +# Create tag page +templ = env.get_template('tags.html') +templ.stream(sorted_tags=sorted(out_tags), out_tags=out_tags, out_videos=out_videos).dump(str((out_dir_tag / "index.html").resolve())) + +templ = env.get_template('tag.html') +for tag, tag_obj in out_tags.items(): + out_dir_tag_this = out_dir_tag / tag + out_dir_tag_this.mkdir(parents=True, exist_ok=True) + templ.stream(tag=tag, slugs=tag_obj["videos"], out_tags=out_tags, out_videos=out_videos).dump(str((out_dir_tag_this / "index.html").resolve())) diff --git a/templates/about.html b/templates/about.html new file mode 100644 index 0000000..1994392 --- /dev/null +++ b/templates/about.html @@ -0,0 +1,50 @@ +{% extends "base.html" %} + +{% block header %} +
mediaCCCcollection tries to curate videos of media.ccc.de by tagging them.
++ {% for video_tag in out_videos[slug].tags %}{{ video_tag }}{% endfor %} +
+ watch +