From: Scott Worley Date: Fri, 12 Jan 2024 03:00:56 +0000 (-0800) Subject: Move get_title() to Thread X-Git-Url: http://git.scottworley.com/paperdoorknob/commitdiff_plain/21e82200b2887fc4f4f9eff4023f4a73547cacb5?ds=inline;hp=a18519bf16f2983b139cffaa731d3ea8e900f542 Move get_title() to Thread --- diff --git a/glowfic.py b/glowfic.py index 746a7a2..92ae4ab 100644 --- a/glowfic.py +++ b/glowfic.py @@ -59,6 +59,12 @@ class Thread: def __init__(self, dom: BeautifulSoup) -> None: self._dom = dom + def title(self) -> str | None: + span = self._dom.findChild("span", id="post-title") + if not isinstance(span, Tag): + return None + return span.text.strip() + def chunkDOMs(self) -> Iterable[Tag]: def text() -> Tag: body = self._dom.body diff --git a/glowfic_test.py b/glowfic_test.py index ed32945..64da164 100644 --- a/glowfic_test.py +++ b/glowfic_test.py @@ -72,5 +72,20 @@ class TestMakeChunk(unittest.TestCase): PandocTexifier("pandoc").texify(c.character), b'{Keltham}\n') +class TestThread(unittest.TestCase): + + def testTitle(self) -> None: + t = Thread(BeautifulSoup(b''' + +
+ + Teh Story! + +
+
The "post"
+ ''', 'html.parser')) + self.assertEqual(t.title(), 'Teh Story!') + + if __name__ == '__main__': unittest.main() diff --git a/paperdoorknob.py b/paperdoorknob.py index ade0b88..cf50057 100644 --- a/paperdoorknob.py +++ b/paperdoorknob.py @@ -7,7 +7,6 @@ from typing import Any, Iterable from bs4 import BeautifulSoup -from bs4.element import Tag from args import spec_from_commandline_args from glowfic import flatURL, makeChunk, renderChunk, Thread @@ -22,13 +21,6 @@ def ilen(it: Iterable[Any]) -> int: return sum(1 for _ in it) -def get_title(dom: BeautifulSoup) -> str | None: - span = dom.findChild("span", id="post-title") - if not isinstance(span, Tag): - return None - return span.text - - def process(spec: Spec) -> None: spec.texout.write(br'''\documentclass{article} \usepackage{booktabs} @@ -60,7 +52,7 @@ def process(spec: Spec) -> None: thread = Thread(dom) spec.log('Counting chunks...\r') num_chunks = ilen(thread.chunkDOMs()) - title = get_title(dom) or "chunk" + title = thread.title() or "chunk" for i, r in enumerate(thread.chunkDOMs()): percent = 100.0 * i / num_chunks spec.log(f'Processing {title} {i} of {num_chunks} ({percent:.1f}%)\r')