From 01c8970e3a059c60f49725a1f63415ce8b1b5729 Mon Sep 17 00:00:00 2001 From: Markil 3 Date: Mon, 28 Jul 2025 16:18:00 -0600 Subject: [PATCH] Initial commit for XKCD and Existential Comics --- Lucida Sans Bold.ttf | Bin 0 -> 52868 bytes Lucida Sans.ttf | Bin 0 -> 64608 bytes download.sh | 9 ++ existential_comics.py | 262 ++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 5 + xkcd.py | 207 +++++++++++++++++++++++++++++++++ 6 files changed, 483 insertions(+) create mode 100644 Lucida Sans Bold.ttf create mode 100644 Lucida Sans.ttf create mode 100755 download.sh create mode 100755 existential_comics.py create mode 100755 requirements.txt create mode 100755 xkcd.py diff --git a/Lucida Sans Bold.ttf b/Lucida Sans Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f1209b70e4780c4c94d59e2b2e078b9248a56aa2 GIT binary patch literal 52868 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 datetime.date(2023, 11, 13): + safe = (self.date - datetime.date(2023, 11, 12)).days + else: + safe = (self.date - datetime.date(2013, 11, 11)).days + safe = str(safe) + safe_box = title_font.getbbox(safe) + safe_box = (safe_box[2] - safe_box[0], safe_box[3] - safe_box[1]) + url_box = caption_font.getbbox(self.url) + url_box = (url_box[2] - url_box[0], url_box[3] - url_box[1]) + date_box = caption_font.getbbox(self.date.isoformat()) + date_box = (date_box[2] - date_box[0], date_box[3] - date_box[1]) + + caption = "\n".join(self.caption).split("\n") + try: + wrapped_caption = [] + for line in caption: + if line: + wrapped_caption.extend(textwrap.wrap(line.strip(), width=(f_size[0] - 20) / caption_size)) + else: + wrapped_caption.append(line.strip()) + caption = wrapped_caption + cap_max = max([cap_box[2] - cap_box[0] for cap_box in [caption_font.getbbox(cap_line) for cap_line in caption]]) + caption_box = (cap_max, caption_size * len(caption)) + caption = "\n".join(caption) + except Exception as e: + logging.exception("Unable to get caption bounding box", exc_info=e) + caption_box = caption_font.getbbox(caption) + caption_box = (caption_box[2] - caption_box[0], caption_box[3] - caption_box[1]) + + header_path = self.get_header_path(base_path) + header = Image.open(header_path) + f_img = Image.new("RGBA", f_size, (255, 255, 255, 255)) + f_img.paste(header, (0, 20)) + + safety_path = self.get_safety_path(base_path) + safety = Image.open(safety_path) + f_img.paste(safety, (20, 230)) + + draw = ImageDraw.Draw(f_img) + draw.text(((f_size[0] - title_box[0]) // 2, 250), self.title, (0, 0, 0), font=title_font) + draw.text((70 + safe_box[0] // 2, 240 + safe_box[1] // 2), safe, (0, 0, 0), font=title_font) + draw.text(((f_size[0] - url_box[0]) // 2, 300), self.url, (0, 0, 0), align="center", font=caption_font) + draw.text((f_size[0] - date_box[0] - 10, 250), self.date.isoformat(), (0, 0, 0), align="right", font=caption_font) + f_img.save(self.get_image_path(base_path, 0)) + + l_img = Image.new("RGBA", f_size, (255, 255, 255, 255)) + draw = ImageDraw.Draw(l_img) + draw.rounded_rectangle(((f_size[0] - caption_box[0]) // 2 - 10, 10, (f_size[0] + caption_box[0]) // 2 + 10, 100 + caption_box[1]), 20, (200, 200, 200), (0, 0, 0), 2) + draw.multiline_text(((f_size[0] - caption_box[0]) / 2, 20), caption, fill=(0, 0, 0), align="center", font=caption_font) + l_img.save(self.get_image_path(base_path, len(self.image_url) + 1)) + + def package_data(self, base_path: Path): + """ + Compresses all the data into a cbz file and removes the source files + """ + with ZipFile(self.get_package_path(base_path), 'w') as comic_zip: + img_url = urlparse(self.image_url[0]) + img_name = Path(img_url.path.split('/')[-1]) + image_path = self.get_image_path(base_path, 0) + for i in range(len(self.image_url) + 2): + image_path = self.get_image_path(base_path, i) + comic_zip.write(image_path, img_name.stem + "-" + str(i) + img_name.suffix) + if self.get_metadata_path(base_path).exists(): + comic_zip.write(self.get_metadata_path(base_path), "info.0.json") + for i in range(len(self.image_url) + 2): + self.get_image_path(base_path, i).unlink() + self.get_metadata_path(base_path).unlink(missing_ok=True) + + +def setup_args(): + parser = argparse.ArgumentParser( + prog='existential_comics', + description='Downloads the entire Existential Comics collection') + + parser.add_argument('-o', '--output', type=Path, default=Path(), help="The directory to dump the files to.") + parser.add_argument('-w', '--wait', type=int, default=0, help="How many seconds to wait between each request") + parser.add_argument('-t', '--threads', type=int, default=10, help="How many download threads will run at once") + parser.add_argument('-s', '--start', type=int, default=0, help="The comic index to start at. A zero will be interpreted as using up to the first comic.") + parser.add_argument('-e', '--end', type=int, default=0, help="The comic index to end at. A zero will be interpreted as using up to the last comic.") + parser.add_argument('-l', '--latest', action='store_true', help="If set, only the latest comic will be downloaded") + parser.add_argument('-p', '--plain', action='store_true', help="If set, only the raw image will be downloaded, and titles, caption, etc. will not be added.") + + return parser + +def setup_logging(): + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) + + ch = logging.StreamHandler() + ch.setLevel(logging.INFO) + formatter = logging.Formatter('%(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + ch = logging.handlers.RotatingFileHandler("gutenberg_download.log", encoding='utf-8') + ch.setLevel(logging.DEBUG) + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + ch.doRollover() + logger.addHandler(ch) + +def load_strip(base_path, index, plain, thread_limit): + + with thread_limit: + strip = ComicStrip(index) + if not strip.get_image_path(base_path).exists() and not strip.get_package_path(base_path).exists(): + strip.load_data() + strip.download_data(base_path) + if not plain: + strip.transform_data(base_path) + strip.package_data(base_path) + +if __name__ == "__main__": + setup_logging() + parser = setup_args() + + args = parser.parse_args() + base_path = args.output + + if not base_path.is_dir(): + base_path.mkdir(parents=True) + + logging.info("Beginning parsing") + latest = ComicStrip("") + latest.load_data() + logging.info("There are %d comics", latest.index) + if args.latest: + r = range(latest.index, latest.index + 1) + else: + start = args.start or 1 + end = args.end or latest.index + r = range(end, start - 1, -1) + + threads = [] + thread_limit = threading.BoundedSemaphore(value=args.threads) + + for index in r: + t = threading.Thread(name=str(index), target=load_strip, args=(base_path, index, args.plain, thread_limit)) + threads.append(t) + t.start() + + for t in threads: + t.join() diff --git a/requirements.txt b/requirements.txt new file mode 100755 index 0000000..3f00347 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +requests +beautifulsoup4 +lxml +pillow +libraqm diff --git a/xkcd.py b/xkcd.py new file mode 100755 index 0000000..fe6e227 --- /dev/null +++ b/xkcd.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2025 Markil 3 + +import logging +import logging.handlers +import argparse +import datetime +import threading +import time +import textwrap +from zipfile import ZipFile +from urllib.parse import urlparse + +from pathlib import Path + +import requests +from PIL import Image, ImageDraw, ImageFont +from bs4 import BeautifulSoup + +class ComicStrip: + """ + A comic strip object represents a single XKCD strip. + """ + def __init__(self, index): + """ + Creates a comic strop object. + """ + self.index = index + self.url = f"https://xkcd.com/{index}" + self.data_url = f"{self.url}/info.0.json" + self.title = None + self.image_url = None + self.caption = None + self.transcript = None + + def get_metadata_path(self, base_path: Path): + return Path(base_path, f"{self.index}.json") + + def get_image_path(self, base_path: Path): + return Path(base_path, f"{self.index}.png") + + def get_package_path(self, base_path: Path): + return Path(base_path, f"{self.index}.cbz") + + def load_data(self): + logging.info("Loading data for comic %s from %s", self.index, self.url) + result = requests.get(self.data_url) + result.raise_for_status() + self.data = result.json() + self.date = datetime.date(int(self.data["year"]), int(self.data["month"]), int(self.data["day"])) + self.image_url = self.data["img"] + self.title = self.data["title"] + self.caption = self.data["alt"] + self.transcript = self.data["transcript"] + + + def download_data(self, base_path: Path): + """ + Downloads the raw image data. + """ + if self.image_url: + image_path = self.get_image_path(base_path) + if not image_path.exists(): + with open(image_path, 'wb') as image_stream: + result = requests.get(self.image_url) + result.raise_for_status() + image_stream.write(result.content) + metadata_path = self.get_metadata_path(base_path) + if not metadata_path.exists(): + with open(metadata_path, 'wb') as meta_stream: + result = requests.get(self.data_url) + result.raise_for_status() + meta_stream.write(result.content) + + def transform_data(self, base_path: Path): + """ + Takes the raw image data from #download_data and transforms it to add a title, captions, etc. This function is not idempotent. + """ + image_path = self.get_image_path(base_path) + if image_path.exists(): + f_width = 780 + title_size = 21 + caption_size = 12 + title_font = ImageFont.truetype(Path(Path(__file__).parent, "Lucida Sans Bold.ttf"), title_size, layout_engine=ImageFont.Layout.RAQM) + title_box = title_font.getbbox(self.title) + title_box = (title_box[2] - title_box[0], title_box[3] - title_box[1]) + + caption_font = ImageFont.truetype(Path(Path(__file__).parent, "Lucida Sans.ttf"), caption_size) + caption = self.caption + try: + caption = textwrap.wrap(caption, width=(f_width - 20) / caption_size) + cap_max = max([cap_box[2] - cap_box[0] for cap_box in [caption_font.getbbox(cap_line) for cap_line in caption]]) + caption_box = (cap_max, caption_size * len(caption)) + caption = "\n".join(caption) + except Exception as e: + logging.exception("Unable to get caption bounding box", exc_info=e) + caption_box = caption_font.getbbox(caption) + caption_box = (caption_box[2] - caption_box[0], caption_box[3] - caption_box[1]) + url_box = caption_font.getbbox(self.url) + url_box = (url_box[2] - url_box[0], url_box[3] - url_box[1]) + date_box = caption_font.getbbox(self.date.isoformat()) + date_box = (date_box[2] - date_box[0], date_box[3] - date_box[1]) + img = Image.open(image_path) + f_img = Image.new("RGBA", (f_width, img.size[1] + caption_box[1] + title_box[1] + 40), (255, 255, 255, 255)) + f_img.paste(img, ((f_width - img.size[0]) // 2, title_box[1] + 20)) + + draw = ImageDraw.Draw(f_img) + + draw.text(((f_width - title_box[0]) / 2, 2), self.title.upper(), (0, 0, 0), font=title_font, features=["c2sc", "smcp"]) + draw.multiline_text(((f_width - caption_box[0]) / 2, img.size[1] + title_box[1] + 22), caption, fill=(0, 0, 0), align="center", font=caption_font) + draw.text((10, f_img.size[1] - url_box[1] - 10), self.url, (0, 0, 0), align="left", font=caption_font) + draw.text((f_width - date_box[0] - 10, f_img.size[1] - date_box[1] - 10), self.date.isoformat(), (0, 0, 0), align="right", font=caption_font) + f_img.save(image_path) + + def package_data(self, base_path: Path): + """ + Compresses all the data into a cbz file and removes the source files + """ + with ZipFile(self.get_package_path(base_path), 'w') as comic_zip: + img_url = urlparse(self.image_url) + comic_zip.write(self.get_image_path(base_path), img_url.path.split('/')[-1]) + if self.get_metadata_path(base_path).exists(): + comic_zip.write(self.get_metadata_path(base_path), "info.0.json") + self.get_image_path(base_path).unlink() + self.get_metadata_path(base_path).unlink(missing_ok=True) + + +def setup_args(): + parser = argparse.ArgumentParser( + prog='xkcd', + description='Downloads the entire XKCD collection') + + parser.add_argument('-o', '--output', type=Path, default=Path(), help="The directory to dump the files to.") + parser.add_argument('-w', '--wait', type=int, default=0, help="How many seconds to wait between each request") + parser.add_argument('-t', '--threads', type=int, default=10, help="How many download threads will run at once") + parser.add_argument('-s', '--start', type=int, default=0, help="The comic index to start at. A zero will be interpreted as using up to the first comic.") + parser.add_argument('-e', '--end', type=int, default=0, help="The comic index to end at. A zero will be interpreted as using up to the last comic.") + parser.add_argument('-l', '--latest', action='store_true', help="If set, only the latest comic will be downloaded") + parser.add_argument('-p', '--plain', action='store_true', help="If set, only the raw image will be downloaded, and titles, caption, etc. will not be added.") + + return parser + +def setup_logging(): + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) + + ch = logging.StreamHandler() + ch.setLevel(logging.INFO) + formatter = logging.Formatter('%(levelname)s - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + + ch = logging.handlers.RotatingFileHandler("gutenberg_download.log", encoding='utf-8') + ch.setLevel(logging.DEBUG) + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + ch.setFormatter(formatter) + ch.doRollover() + logger.addHandler(ch) + +def load_strip(base_path, index, plain, thread_limit): + """ + Threading function for downloading XKCD strips. + + Arguments: + + """ + with thread_limit: + strip = ComicStrip(index) + if not strip.get_image_path(base_path).exists() and not strip.get_package_path(base_path).exists(): + strip.load_data() + strip.download_data(base_path) + if not plain: + strip.transform_data(base_path) + strip.package_data(base_path) + +if __name__ == "__main__": + setup_logging() + parser = setup_args() + + args = parser.parse_args() + base_path = args.output + + if not base_path.is_dir(): + base_path.mkdir(parents=True) + + logging.info("Beginning parsing") + latest = ComicStrip("") + latest.load_data() + logging.info("There are %d comics", latest.data["num"]) + if args.latest: + r = range(latest.data["num"], latest.data["num"] + 1) + else: + start = args.start or 1 + end = args.end or latest.data["num"] + r = range(end, start - 1, -1) + + threads = [] + thread_limit = threading.BoundedSemaphore(value=args.threads) + + for index in r: + t = threading.Thread(name=str(index), target=load_strip, args=(base_path, index, args.plain, thread_limit)) + threads.append(t) + t.start() + + for t in threads: + t.join()