a
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
"""Rich formatting utilities for XHS CLI output.
|
||||
|
||||
Re-exports from formatter_utils (base utilities) and formatter_renderers
|
||||
(rich display functions). This module is the public API surface that
|
||||
commands should import from.
|
||||
"""
|
||||
|
||||
from .formatter_renderers import ( # noqa: F401
|
||||
render_comments,
|
||||
render_creator_notes,
|
||||
render_feed,
|
||||
render_note,
|
||||
render_notifications,
|
||||
render_search_results,
|
||||
render_topics,
|
||||
render_user_info,
|
||||
render_user_posts,
|
||||
render_users,
|
||||
)
|
||||
from .formatter_utils import ( # noqa: F401
|
||||
coerce_int,
|
||||
console,
|
||||
emit_error,
|
||||
error_console,
|
||||
error_payload,
|
||||
format_count,
|
||||
maybe_print_structured,
|
||||
print_error,
|
||||
print_info,
|
||||
print_json,
|
||||
print_success,
|
||||
print_yaml,
|
||||
resolve_output_format,
|
||||
success_payload,
|
||||
)
|
||||
|
||||
# ─── URL parsing ────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
def parse_note_reference(id_or_url: str) -> tuple[str, str, str]:
|
||||
"""Extract note ID, xsec_token, and xsec_source from a URL or plain ID."""
|
||||
if "xiaohongshu.com" in id_or_url:
|
||||
from urllib.parse import parse_qs, urlparse
|
||||
|
||||
parsed = urlparse(id_or_url)
|
||||
parts = parsed.path.rstrip("/").split("/")
|
||||
note_id = parts[-1]
|
||||
qs = parse_qs(parsed.query)
|
||||
xsec_token = qs.get("xsec_token", [""])[0]
|
||||
xsec_source = qs.get("xsec_source", [""])[0]
|
||||
return note_id, xsec_token, xsec_source
|
||||
return id_or_url, "", ""
|
||||
|
||||
|
||||
def parse_note_url(id_or_url: str) -> tuple[str, str]:
|
||||
"""Extract note ID and xsec_token from URL or plain ID.
|
||||
|
||||
Returns (note_id, xsec_token). xsec_token may be empty if not in URL.
|
||||
"""
|
||||
note_id, xsec_token, _xsec_source = parse_note_reference(id_or_url)
|
||||
return note_id, xsec_token
|
||||
|
||||
|
||||
def extract_note_id(id_or_url: str) -> str:
|
||||
"""Extract note ID from URL or return as-is (drops query params)."""
|
||||
note_id, _ = parse_note_url(id_or_url)
|
||||
return note_id
|
||||
Reference in New Issue
Block a user