记录感兴趣的影视,
形成自己的观影空间。
从发现一部作品,到标记、同步、记录和回顾。观影管理是一条完整的链路,而不是几个孤立的页面。
从片名出发,
找到可用资源。
输入片名,汇总多个搜索源,再按资源类型筛选,直接进入详情查看。
从片名开始,
少一点来回切换。
直接搜索电影和剧集,结果来自 PanSou、PanHub、ZReso 与自定义搜索源。详情页会并行使用中文片名与原片名搜索,PanHub 插件 / 频道和自定义搜索源也可配置。资源结果集中呈现,可以直接打开资源,或长按复制链接;磁力链接还会尝试交给系统应用处理。
- PanSou / PanHub / ZReso / 自定义搜索源
- 夸克、百度、阿里、迅雷、UC、115、磁力筛选
- 中文 / 英文片名并行搜索,结果合并、去重、排序并短期缓存
- 资源页按搜索源与网盘类型筛选,详情页可开启“仅显示高相关”
把“随便看看”
变成一张有方向的片单。
热门趋势、即将上映、推荐、豆瓣热门和个人观影列表集中在发现入口。电影与剧集可以分开浏览,先找到想看的,再决定加入哪张清单。
- 热门 / 即将上映 / 推荐 / 豆瓣热门
- 个人观影列表与电影 / 剧集独立筛选
- 发现后加入想看,或继续查找资源
豆瓣标记,
带回 TraktoSearch。
登录豆瓣后,把想看和已看带进 TraktoSearch;首次出现的作品由 Trakt 保存为你的观影记录。同步过程中,已经完成的条目会被记住,下次直接继续未完成部分。
- 豆瓣想看 / 已看导入观影记录
- 已完成条目记忆,下次继续未完成部分
- 详情页修改标记、评分、短评并写回豆瓣
怎么分工:Trakt 是用于保存观影记录的同步服务;豆瓣账号负责导入和写回。暂时匹配不到豆瓣条目的作品会进入失败项,手动修正后可以重试。
在决定播放之前,
先初步了解。
影视详情把各平台评分、简介、评论、演职员、视频和相关推荐放在一起。电视剧继续下钻到季集与单集观看进度;对于已匹配豆瓣条目的作品,在这里改完标记、评分或短评,就能同步写回豆瓣。
- 各平台评分、简介、评论、演职员与视频
- 季集信息与单集观看进度
- 相关推荐与相似作品
你的数据先留在手机上,
需要时才走出这一步。
TraktoSearch 不接入广告或分析 SDK。平时的观影记录、进度和历史先保存在手机;只有当你登录豆瓣或观影记录同步、查影视信息、搜资源,或主动开启崩溃反馈时,应用才发出完成这件事所需的请求。
留在设备上的
- ✓ 登录凭据与令牌,保存在加密区域
- ✓ 搜索 / 浏览历史与观影记录
- ✓ 片单、评分与观看进度
需要联网的
- ✓ 登录或同步时:Trakt / 豆瓣相关请求
- ✓ 查资料时:TMDB / 豆瓣 / OMDb 请求
- ✓ 搜资源时:只发送影视搜索关键词
- ✓ 主动开启反馈时:发送崩溃日志
查看技术实现
手机本地:令牌、豆瓣凭据和历史使用 EncryptedSharedPreferences;片单、同步记录、评分和进度保存在 SQLCipher 数据库;Android Keystore 保护本地密钥与不可导出的设备私钥。
联网请求:需要上游服务的请求先经过 HTTPS 和网关 JWT 鉴权,客户端不携带 Worker Secret。
服务端:云端失败数据由 Worker 使用服务端密钥透明加密;密钥不随 APK 分发。
数据从手机出发:本地数据留在设备,联网请求经过安全网关。
从手机出发,沿着数据包看一遍:导入豆瓣标记、保存观影记录、从详情页写回豆瓣,以及其他联网请求分别怎么走。你可以等待动画播放,也可以点选某条流程单独查看。
片单、进度和历史先留在手机,不需要联网。
应用禁止明文流量,只信任系统 CA;网关统一返回 HSTS、CSP、nosniff、权限策略与 no-store 等安全响应头。
第一次使用前,
先解释几个问题。
01 为什么需要邀请码?一天大约能容纳多少人?
App 的联网请求会经过 Cloudflare 网关。按目前的缓存策略和 Service Binding 链路,公共服务每天大约可容纳 450~750 名中等强度用户,所以采用邀请码控制规模并留出余量。
这个数字是估算值:按一个人每天浏览发现页、观影记录、影视详情和人物详情,偶尔搜索资源或同步记录,约 80~150 次 App API 请求;频繁同步或连续查找资源时会更高。保留约 30% 的余量后,按每天 10 万次的免费额度计算,先按中等强度用户控制在约 450~750 人/天。
按 Cloudflare 的外部入口计数,一次 App API 请求先进入 Pages 网关,随后通过 Service Binding 调用 auth-worker;缓存未命中时,再由它通过 Service Binding 调用 douban-movie-api,或请求 Trakt、TMDB、OMDb 等上游服务。Service Binding 不会额外增加公网入口请求。
flowchart LR
app["Android App<br/>入口:1 次"] -- "公网入口:1 次" --> gateway["tracktosearch-gateway<br/>Pages 网关"]
gateway -- "Service Binding<br/>+0 次公网请求" --> auth["auth-worker<br/>鉴权 / 请求代理"]
gateway -- "Service Binding<br/>+0 次公网请求" --> feedback["feedback-worker<br/>用户主动反馈"]
auth -- "Service Binding<br/>+0 次公网请求" --> douban["douban-movie-api Worker"]
auth -- "上游 fetch" --> upstream["Trakt / TMDB / OMDb /<br/>GitHub 等"]
admin["app-config Pages Function<br/>管理 / 崩溃日志"] -. "Service Binding<br/>+0 次公网请求" .-> auth
admin -. "Service Binding<br/>+0 次公网请求" .-> feedback
classDef app fill:#d95532,color:#fff,stroke:#a83e27,stroke-width:1.5px;
classDef gateway fill:#e9e2d4,color:#1d1c19,stroke:#a83e27,stroke-width:1.5px;
classDef worker fill:#f6f2e9,color:#1d1c19,stroke:#c9c0b2;
classDef output fill:#efe6db,color:#6d685f,stroke:#c9c0b2;
class app app;
class gateway gateway;
class auth,feedback,admin worker;
class douban,upstream output;
02 Trakt 是什么?在 App 里有什么用?
Trakt 可以理解为一个专门记录“看过什么、想看什么”的影视服务。它不是视频网站,也不是资源下载站,而是帮你保存观影记录、评分、短评、观看进度,并提供推荐和影视资料。
在 TraktoSearch 里,Trakt 主要负责保存观影空间:你可以把豆瓣想看、已看、评分和短评导入进来,也可以在 App 里更新标记、评分或短评,再同步写回已经匹配的豆瓣条目。第一次听说 Trakt 也没关系,App 会把它当作背后的观影记录服务来用。
03 为什么要开源?
一方面,希望把一个真实可用的 Android 项目放回开源社区:代码可以被阅读、讨论、改进,也方便中文用户和开发者一起补齐体验。
另一方面,邀请码机制意味着服务不适合无限扩大。开源就是另一种“把选择交给你”:如果公共网关名额有限,你也可以研究代码、自己部署或继续开发属于自己的版本。
04 是什么促使开发者做这样一款 App?
开发者原本习惯用豆瓣发现感兴趣的影视、标记想看,再慢慢建立自己的片单。但豆瓣通常只会跳转到国内有版权的平台;想找更多可用资源时,还要自己打开搜索工具,在多个 App 之间来回切换。
所以才有了 TraktoSearch:把豆瓣已有标记带进观影记录,再从影视详情页集中查看资料、相关推荐和资源搜索入口。至于胡彦斌都开始用 Vibe Coding 做“彦火”、边开发边修 bug 这件事,只能说给了开发者一点“那我也试试”的勇气。两者没有合作或背书关系,纯属开发者的玩笑式灵感。
05 开发这样一个 App,花费是多少?
如果只使用国产大模型,并把开发过程控制在 Trae 每周提供的免费对话额度内,AI 工具的现金成本可以接近 0。真正需要另外计算的,是域名、第三方 API、Cloudflare 超出免费额度后的费用,以及开发者投入的时间。
所以“接近 0 成本”指的是工具支出,不代表部署、服务和维护永远没有成本。
06 Vibe Coding 过程中,主要用了哪些模型?
前期框架搭建、主功能开发和 UI 界面设计,几乎都使用国产大模型:按开发者的对话使用记录粗略估算,约 80% 来自 GLM-5.1 / GLM-5.2,约 20% 来自 GLM-5V-Turbo。
这个比例是对对话使用量的估算,不是代码行数,也不是精确成本核算。后期的 UI 润色、后台部署和视觉问题,主要交给 GPT 处理。
开始使用 TraktoSearch
下载 APK 后,在 Android 设备上完成安装。由于应用未上架应用商店且未经备案,部分手机的安全检查可能会提示风险,安装前可能需要暂时关闭安全检测。Trakt 账号用于保存观影记录,豆瓣账号用于导入和写回豆瓣标记。
先从收件箱拿到邀请码
填写用户名和邮箱。用户名会作为 TraktoSearch 中的朋友名,邮箱验证完成后,邀请码会发送到你的收件箱。