79 lines
2.3 KiB
Python
Executable File
79 lines
2.3 KiB
Python
Executable File
#!/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()))
|