Command-line reader for NodeSeek forum threads that outputs Markdown or JSON
Project description
nodeseek-cli
A command-line reader for NodeSeek forum threads.
NodeSeek serves each thread as fully server-rendered HTML, so nodeseek-cli fetches a post URL
(no API key, no login) and converts it to Markdown, or to structured JSON with --json. It handles
pagination, quoted replies, images, code blocks, tables, and NodeSeek's "magic tab" benchmark
widgets.
Install / run
Run without installing (recommended):
uvx nodeseek-cli 355740
Or install:
uv tool install nodeseek-cli # global CLI: `nodeseek` and `nodeseek-cli`
pip install nodeseek-cli # into current environment
Usage
nodeseek <post> [options]
<post> bare id (355740), slug (post-355740-1), or full URL
-p, --page N fetch only page N (overrides page in the URL)
-a, --all fetch every page of the thread and merge
-j, --json emit structured JSON instead of markdown
--ansi keep ANSI colour codes inside code blocks (default: strip)
-V, --version print version
-h, --help show help
By default only one page is fetched (the page in the URL/slug, or page 1). The markdown
header shows page X/N and a footer tells you how to reach the next page or the whole thread.
Examples
nodeseek 355740 # first page as markdown
nodeseek post-250906-2 # a specific page
nodeseek 250906 --all # whole thread, merged
nodeseek 250906 --all --json | jq '.comments[].author'
nodeseek https://www.nodeseek.com/post-355740-1 --ansi
Formatting notes
- Stickers are meaningless out of context and render as
[Sticker]. - Images render as markdown
with absolute URLs. - Replies are detected from the leading
@user #Nmarker and shown as aReply to @user #Nline (and areply_toobject in JSON); the marker is stripped from the body. - Magic tab widgets (hardware/network benchmark reports, etc.) expand into one titled code
block per tab. ANSI colour is reconstructed from NodeSeek's
data-ansicodeencoding and stripped by default (keep it with--ansi).
Library API
from nodeseek_cli import fetch_post, to_markdown, to_json
post = fetch_post("250906", all_pages=True) # -> nodeseek_cli.models.Post
print(post.title, post.pages, len(post.comments))
for c in post.comments:
print(c.floor, c.author, c.reply_to)
print(to_markdown(post))
print(to_json(post))
Parse already-downloaded HTML offline:
from nodeseek_cli import parse_page
title, max_page, comments = parse_page(html, ansi=False)
Errors
fetch_post / fetch_page raise PostNotFound (404), RateLimited (429), or the base
NodeSeekError. parse_target raises ValueError on an unparseable reference.
Development
uv sync --extra dev
uv run pytest # offline tests against saved fixtures
uv run nodeseek 355740 # run the CLI from source
Linting and formatting use ruff, wired up through prek (a drop-in pre-commit runner):
uv run ruff format . # format
uv run ruff check . # lint
uv run prek install # install the git pre-commit hook
uv run prek run --all-files
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nodeseek_cli-0.1.0.tar.gz.
File metadata
- Download URL: nodeseek_cli-0.1.0.tar.gz
- Upload date:
- Size: 40.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a89e403234bad8b55de6922cebde8db8cc37808c37ed4079c983e3ddf2aa7ff6
|
|
| MD5 |
f4e7a6d1c8ee81c046d9a3c4a910cdcf
|
|
| BLAKE2b-256 |
2716cd06d5b6c9a44eef9aac49021ff8008db1e0a84d80feeedfdef0b9008220
|
File details
Details for the file nodeseek_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nodeseek_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e41feb84a04b1802fe050bc63a46968da5573eafc6076c29426930d71e7af51a
|
|
| MD5 |
e3e4474fb8f51c83a6cf3d6d10277777
|
|
| BLAKE2b-256 |
c4c23054e25d4c7ff0db87aa8a30785581c6b5fc22707835100fcb27fb46416f
|