Skip to content

feat(1688/hupu/douban/linux-do): surface dropped ids on listings (sweep)#1302

Merged
jackwener merged 1 commit intomainfrom
feat/listing-id-sweep-round7
May 4, 2026
Merged

feat(1688/hupu/douban/linux-do): surface dropped ids on listings (sweep)#1302
jackwener merged 1 commit intomainfrom
feat/listing-id-sweep-round7

Conversation

@jackwener
Copy link
Copy Markdown
Owner

Summary

Round 7 — silent-drop sweep across four adapters surfaced by an audit run after PR #1297 (listing↔detail id-pairing convention) shipped. Each row already carries the ids internally — only the columns projection was missing, so the data was visible in -f json but never on the table view.

Adapter Added columns Round-trip win
1688 search item_url, member_id 1688 item <item_url>, 1688 store <member_id>
hupu mentions tid, pid, url hupu detail <tid> (pid for deep link)
douban photos photo_id, subject_id photo_id is the canonical id; subject_id ties photos back to the parent movie
linux-do tags slug linux-do feed --tag <slug>

This is the same bug class as PRs #1284 / #1285 / #1288 / #1289 / #1291 / #1293 / #1300 / #1301 — the row builder extracts the canonical id then drops it from columns. Each fix is one line.

What was NOT changed

Audit also flagged tieba/search, tieba/hot, youtube/feed, xiaohongshu/feed, xiaoe/catalog, plus a few twitter listings (already covered by #1301). On re-verification:

  • tieba/search, tieba/hot — already expose id/url on main; audit was stale.
  • youtube/feed, xiaohongshu/feed, xiaoe/catalog — kept for a follow-up PR; need slightly more thought (rename videoIdvideo_id for snake_case consistency, etc.).

Test plan

Round 7 — silent-drop sweep. Continues the listing→detail id-pairing
work from #1297. Each row was already extracting these ids/urls
internally; only the `columns` projection was missing, so they showed
up in `-f json` but never on the table view.

| Adapter            | Added columns                       |
|--------------------|-------------------------------------|
| `1688 search`      | `item_url`, `member_id`             |
| `hupu mentions`    | `tid`, `pid`, `url`                 |
| `douban photos`    | `photo_id`, `subject_id`            |
| `linux-do tags`    | `slug`                              |

Round-trip wins:
- `1688 search` → `1688 item <item_url>` (item_url is the canonical
  detail.1688.com URL); `1688 search` → `1688 store <member_id>`
- `hupu mentions` → `hupu detail <tid>` (and `pid` for the deep link)
- `douban photos` → tied back to the parent movie via `subject_id`
- `linux-do tags` → `linux-do feed --tag <slug>` (slug is the URL form)

No logic change — only the column array. JSON output unchanged.
Tests: 45/45 pass for the four affected sites.
@jackwener jackwener force-pushed the feat/listing-id-sweep-round7 branch from 14c1379 to d426091 Compare May 4, 2026 13:18
@jackwener jackwener merged commit ac94b75 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
@jackwener jackwener deleted the feat/listing-id-sweep-round7 branch May 4, 2026 14:32
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