SuperAPI AI 工具集

trakt

通用与其它

查看项目

更新于 10-16 09:25

技能介绍

Trakt 媒体发现

用途

该技能用于查看当前正在被观看的内容、广泛流行的内容以及受到期待的内容。它是一个只读的发现界面,不是目录元数据服务。

设置与认证

在 Trakt OAuth 应用处注册应用,并导出其 Client ID:

export TRAKT_CLIENT_ID="YOUR_TRAKT_CLIENT_ID"

每个请求都必须发送 trakt-api-key: <client id>,并同时携带必需的配套请求头 trakt-api-version: 2,以及 JSON 内容类型和描述性的 User-Agent。公开发现端点使用 key 请求头,而不是 Authorization: Bearer。OAuth bearer token 用于标记为 OAuth-required 的端点,或用于用户范围的列表、历史、收藏、watchlist 和变更操作;bearer token 不能替代 key/version 这一对请求头。

主要命令

全部六个发现命令都接受 --page N 与 --limit N;两者默认值分别为 1 和 10,并会被转发到 API 的查询字符串中。

Trending:最近 24 小时内被观看的内容

trakt movie trending --limit 20 trakt tv trending --limit 20 --page 2 --json

Trending 响应会把每个媒体对象包裹在 movie 或 show 中,并包含 watchers 计数。

Popular:广泛的流行度排名

trakt movie popular --limit 25 --json trakt tv popular --page 2 --limit 25

Popular 是基于评分百分比和评分数量的排名,不是个性化推荐。

Anticipated:即将到来的关注度

trakt movie anticipated --page 3 --limit 10 trakt tv anticipated --limit 10 --json

Anticipated 反映的是列表出现情况和即将到来的兴趣,并不等同于发行日历。

全局标志可以出现在资源之前或之后:--json、--dry-run、--quiet 和 --verbose。

管道配方

将 Trending 交给另一个工具

运行 trakt --json movie trending --limit 20。

解包 .movie,保留 .watchers 作为观看信号。

将可用的 .movie.ids.tmdb 或 .movie.ids.imdb 传给下游工具;不要假设缺失的 ID 可以被合成。

trakt --json movie trending --limit 20 | jq '.movies[] | {title: (.movie.title // .title), year: (.movie.year // null), watchers: (.watchers // null), ids: (.movie.ids // .ids)}'

比较发现信号

获取 trending、popular 和 anticipated 的对应页面(例如每个都取 --page 1),然后在合并前为每个数据集打上标签。Trending 是近期观看,popular 是广泛排名,anticipated 是即将到来的兴趣。

翻页直到 anticipated 信息流结束

循环 --page,从 JSON 输出中读取 pagination.page_count 以确定停止页,并在某页返回空项时提前中断:

for p in $(seq 1 "$(trakt --json movie anticipated --page 1 --limit 100 | jq -r '.pagination.page_count')"); do trakt --json movie anticipated --page "$p" --limit 100 | jq --arg p "$p" '{page: ($p|tonumber), pagination: .pagination, movies: [.movies[] | {title: (.movie.title // .title), year: (.movie.year // null)}]}' done

将每页输出保留为带标签的 NDJSON;之后再合并。遇到 429 时,等待 Retry-After 结束后再继续循环。

JSON 与分页

--json 会输出一个对象,其中包含 movies 或 shows 数组(trending 条目保留其包裹结构),以及一个 pagination 对象,其键与 API 的 X-Pagination-* 响应头对应:page、limit、page_count、item_count。当响应头存在时,分页键为整数;当响应头缺失时,该对象为空 {},因此像 .pagination.page_count // 1 这样的 jq 表达式可以安全降级。当响应头存在时,人类可读输出会追加一行 Page N of M,否则保持静默。为兼容性,API 默认 page 为 1、limit 为 10;为可复现的自动化,应显式设置两者,并在 page_count 处停止,而不是假设短页就是结尾。

已知注意事项

请求头必须成对:只发送 trakt-api-key 而不发送 trakt-api-version: 2(或反之)可能导致 invalid-request/认证类失败。捆绑脚本会在每次实时请求时注入两者。

401 与 403:401 通常表示需要 OAuth 或授权无效;403 表示应用 key 无效或未获批准。不要盲目重试这两种情况。

速率限制:遇到 429 时,遵守 Retry-After 并检查 X-Ratelimit。使用有界重试;瞬时的 502/503/504 响应可以用退避方式重试。

OAuth 刷新:访问令牌有效期为七天,刷新令牌为一次性使用。成功刷新后替换已存储的刷新令牌;invalid_grant 需要重新授权。

Trakt 不是 TMDb:Trakt ID 和发现排名不是 TMDb 元数据。使用 tmdb 技能获取演职员、图片、提供商元数据和目录增强信息。

Trending 结构:在读取 title/ID 之前先读取 .movie 或 .show,同时保留 watchers。

分页按每次调用计算:一次 CLI 调用只获取一页(--page);应循环调用并读取 pagination.page_count,而不是期望脚本自行跟随链接。

何时使用

使用 Trakt 获取当前观看信号、广泛流行度、即将到来的兴趣,以及可输入媒体工作流的标识符。

何时不使用

不要使用此 CLI 读取或更新个人历史、watchlist、收藏或列表。它既不实现这些命令,也不实现 OAuth;提供 token 也不会启用它们。应说明该限制,并使用 Trakt 网站或另行实现的、经过认证的客户端进行个人操作。不要编造 CLI 命令,也不要声称所请求的更新已成功。使用 tmdb 获取目录元数据、演职员、图片和提供商可用性。

参考文件

文件 | 主题

references/auth-and-request-contract.md | 必需请求头、OAuth 边界、错误和速率限制

references/discovery-endpoints.md | 端点语义、过滤器、响应结构和分页

references/recipes-and-operations.md | 管道、jq 规范化和操作处理

可用脚本与前置条件

scripts/trakt 是一个可执行的 Python CLI,仅使用标准库和 requests。

--dry-run 无需 Client ID 即可工作,且从不执行网络 I/O。

实时发现需要 TRAKT_CLIENT_ID;测试仅使用 mock。