-from bs4.element import Tag
-import requests
-import requests_cache
-from xdg_base_dirs import xdg_cache_home
-
-
-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 body
- text = body.find_next("div", class_="post-post")
- 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')
- parser.add_argument(
- '--cache_path',
- metavar='PATH',
- help='Where to keep the http cache (instead of %(default)s)',
- default=os.path.join(xdg_cache_home(), "paperdoorknob"))
- parser.add_argument(
- '--timeout',
- help='How long to wait for HTTP requests, in seconds',
- default=30)
- parser.add_argument('url', help='URL to retrieve')
- return parser
-