mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-16 23:01:06 +02:00
Comments load over a signed /api/comment/list XHR that TikTok serves to anonymous sessions once the comments panel is opened (unlike profile-video and general-search feeds), so this is a reliable verb. Given video URLs it returns CommentItems (text, author, likes, reply counts; replies carry repliesToId), deduped per video, capped, and degraded to an ErrorItem for empty/withheld videos or a bad_url ErrorItem for non-video inputs. Generalizes the browser capture over a pluggable interaction step so the comments flow (open panel, scroll the panel to paginate) reuses the same warm+capture scaffolding as listing/user-search. Billed per comment on a new TIKTOK_COMMENT meter (TIKTOK_MICROS_PER_COMMENT, matching the per-comment market), surfaced on the chat subagent alongside tiktok.scrape/user_search.
23 lines
854 B
Python
23 lines
854 B
Python
"""``tiktok.comments`` capability registration (billed per comment; see config
|
|
``TIKTOK_MICROS_PER_COMMENT``)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from app.capabilities.core import BillingUnit, Capability, register_capability
|
|
from app.capabilities.tiktok.comments.executor import build_comments_executor
|
|
from app.capabilities.tiktok.comments.schemas import CommentsInput, CommentsOutput
|
|
|
|
TIKTOK_COMMENTS = Capability(
|
|
name="tiktok.comments",
|
|
description=(
|
|
"Scrape the public comments of TikTok videos. Provide video URLs; "
|
|
"returns comment text, author, likes, and reply counts."
|
|
),
|
|
input_schema=CommentsInput,
|
|
output_schema=CommentsOutput,
|
|
executor=build_comments_executor(),
|
|
billing_unit=BillingUnit.TIKTOK_COMMENT,
|
|
docs_url="/docs/connectors/native/tiktok",
|
|
)
|
|
|
|
register_capability(TIKTOK_COMMENTS)
|