from argparse import ArgumentParser
+import itertools
import os.path
+
+from typing import Iterable
+
from bs4 import BeautifulSoup
from bs4.element import Tag
import requests
class Post:
def __init__(self, html: BeautifulSoup) -> None:
self._html = html
+ for eb in self._html.find_all("div", class_="post-edit-box"):
+ eb.decompose()
+ for footer in self._html.find_all("div", class_="post-footer"):
+ footer.decompose()
def text(self) -> Tag:
body = self._html.body
assert isinstance(text, Tag)
return text
+ def replies(self) -> Iterable[Tag]:
+ replies = self._html.find_all("div", class_="post-reply")
+ assert all(isinstance(r, Tag) for r in replies)
+ return replies
+
+ def entries(self) -> Iterable[Tag]:
+ return itertools.chain([self.text()], self.replies())
+
def command_line_parser() -> ArgumentParser:
parser = ArgumentParser(prog='paperdoorknob', description='Print glowfic')