Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions parselcli/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
from parselcli.embed import PYTHON_SHELLS
from parselcli.prompt import Prompter
from parselcli.render.browser import PlaywrightRenderer
from parselcli.render.http import HttpRenderer, CachedHttpRenderer
from parselcli.render.filesys import FileRenderer
from parselcli.render.http import CachedHttpRenderer, HttpRenderer

CACHE_EXPIRY = 60 * 60 # 1 hour

Expand Down Expand Up @@ -69,7 +70,7 @@ def setup_logging(verbosity: int = 0):
help="preferred embedded shell; default auto resolve in order",
)
def cli(
url,
url: str,
xpath,
initial_input,
embed,
Expand Down Expand Up @@ -104,7 +105,9 @@ def cli(
log.debug(f"using headers: {headers}")

# Establish renderer
if browser or browser_headless:
if not url.startswith(("http", "https")):
renderer_cls = FileRenderer
elif browser or browser_headless:
renderer_cls = PlaywrightRenderer
elif cache:
renderer_cls = CachedHttpRenderer
Expand Down
21 changes: 21 additions & 0 deletions parselcli/render/filesys.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from pathlib import Path

from requests import Response

from parselcli.render import Renderer


class FileRenderer(Renderer):
"""Load HTML from local file system."""

@property
def content(self) -> str:
return self.response.text

def goto(self, url: str, **kwargs) -> Response:
resp = Response()
resp.url = url
resp._content = Path(url).read_bytes()
resp.status_code = 200
self._response = resp
return resp