Skip to content

feat(pixiv): surface user_id + url on listings (id-pairing polish)#1300

Merged
jackwener merged 1 commit intomainfrom
feat/pixiv-listing-id-pairing
May 4, 2026
Merged

feat(pixiv): surface user_id + url on listings (id-pairing polish)#1300
jackwener merged 1 commit intomainfrom
feat/pixiv-listing-id-pairing

Conversation

@jackwener
Copy link
Copy Markdown
Owner

Summary

While doing instagram/facebook/pixiv coverage gap analysis, I found that pixiv listings already extract user_id and construct url per row but drop both from the column list — so opencli pixiv ranking and opencli pixiv search show table output without the IDs that would let an agent chain the result into pixiv user / pixiv illusts / pixiv detail.

This is the same class of bug as PR #1284 / #1285 / #1288 / #1289 / #1291 / #1293 — listing emits the id internally but doesn't surface it. Per the listing↔detail id pairing convention (#1297), the id columns should be visible on listings so they round-trip cleanly.

Changes

Adapter Added columns
pixiv ranking user_id, url
pixiv search user_id, url
pixiv illusts url (user_id is the arg)
pixiv user url

The row objects already contained these fields — only the columns array projection was missing. JSON output (-f json) already exposed them, so existing scripts keep working.

Round-trip examples (after this PR)

# Pick a top-ranked artist from the daily ranking, then explore their work
opencli pixiv ranking --limit 5
# → user_id column visible
opencli pixiv user 11
opencli pixiv illusts 11

# Search → drill down into a single illust
opencli pixiv search "風景" --limit 10
# → illust_id + user_id columns both visible
opencli pixiv detail 12345678

Test plan

  • npx vitest run clis/pixiv — 18/18 pass (existing tests use toMatchObject, unchanged)
  • npx tsx src/build-manifest.ts — 658 entries, columns delta only
  • Doc updated with explicit Output Columns table for all five pixiv commands

@jackwener jackwener force-pushed the feat/pixiv-listing-id-pairing branch from a0bae02 to b69990f Compare May 4, 2026 13:03
While auditing instagram/facebook/pixiv coverage gaps, found that pixiv
listings already extract `user_id` and construct `url` per row but drop
both fields from the table view (`columns` doesn't list them). The data
is in the row object — only the column projection was missing.

Per the listing↔detail id pairing convention (#1297), surface them so:
- `user_id` round-trips from `ranking` / `search` → `user` / `illusts`
- `url` is the canonical share link for every illust / user record

Changes:
- `ranking`: + user_id, + url
- `search`:  + user_id, + url
- `illusts`: + url (user_id is the arg, no need to repeat per row)
- `user`:    + url

No behavior change beyond the table view — JSON output already had these
fields, so existing scripts that consume `-f json` keep working.
@jackwener jackwener force-pushed the feat/pixiv-listing-id-pairing branch from b69990f to 16cacf8 Compare May 4, 2026 13:06
@jackwener jackwener merged commit 2b9af38 into main May 4, 2026
11 checks passed
jackwener added a commit that referenced this pull request May 4, 2026
…(sweep) (#1305)

* feat(youtube/xiaohongshu/xiaoe): surface dropped ids/url on listings (sweep)

Round 8 same silent-column-drop class as #1300/#1301/#1302 — row already
emits the id/url field but `columns` array forgot to project it, so table
view drops it and agent loses the chain into detail commands.

- youtube/feed: rename row.videoId → video_id (snake_case convention),
  add to columns. youtube/video accepts both URL and id, so url-based
  round-trip already worked, but exposing the canonical id removes the
  url-parse step for chained calls.
- xiaohongshu/feed: pipeline map already extracts `id` from the homefeed
  payload, columns now lists it.
- xiaoe/catalog: pipeline map already projects `url`, columns now lists
  it. xiaoe/detail takes a positional url, so this completes the
  round-trip explicitly.

Also fixes one camelCase column violation on youtube/feed (videoId vs the
project's snake_case convention as in twitter `is_retweet`/`created_at`,
douban `subject_id`/`photo_id`, hupu `thread_title`).

CI gate `check:listing-id-pairing` ✓ (34 sites, 77 listings, 10 exempt).
typecheck clean. 114 tests pass for youtube + xiaohongshu.

* fix(youtube): keep feed continuation ids after rename
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant