把想看的影视,
变成找得到的资源。

TraktoSearch 把豆瓣标记同步、观影清单、影视详情、观看统计和多源资源搜索放进同一个 Android 工具。

完全开源
代码可在 GitHub 查看、审计和贡献。MIT 协议,自由使用。
TraktoSearch 应用主界面截图
01 观影管理WATCH MANAGEMENT

记录感兴趣的影视,
形成自己的观影空间。

从发现一部作品,到标记、同步、记录和回顾。观影管理是一条完整的链路,而不是几个孤立的页面。

发现与片单详情与进度同步与回顾
发现界面截图,展示热门、即将上映和推荐内容
01.1 DISCOVER

把“随便看看”
变成一张有方向的片单。

热门趋势、即将上映、推荐、豆瓣热门和个人观影列表集中在发现入口。电影与剧集可以分开浏览,先找到想看的,再决定加入哪张清单。

  • 热门 / 即将上映 / 推荐 / 豆瓣热门
  • 个人观影列表与电影 / 剧集独立筛选
  • 发现后加入想看,或继续查找资源
01.2 DOUBAN SYNC

豆瓣标记,
带回 TraktoSearch。

登录豆瓣后,把想看和已看带进 TraktoSearch;首次出现的作品由 Trakt 保存为你的观影记录。同步过程中,已经完成的条目会被记住,下次直接继续未完成部分。

  • 豆瓣想看 / 已看导入观影记录
  • 已完成条目记忆,下次继续未完成部分
  • 详情页修改标记、评分、短评并写回豆瓣

怎么分工:Trakt 是用于保存观影记录的同步服务;豆瓣账号负责导入和写回。暂时匹配不到豆瓣条目的作品会进入失败项,手动修正后可以重试。

观影清单界面截图,展示导入后的想看与已看记录
影视详情界面截图,展示评分、评论、演职员和季集信息
01.3 DETAIL

在决定播放之前,
先初步了解。

影视详情把各平台评分、简介、评论、演职员、视频和相关推荐放在一起。电视剧继续下钻到季集与单集观看进度;对于已匹配豆瓣条目的作品,在这里改完标记、评分或短评,就能同步写回豆瓣。

  • 各平台评分、简介、评论、演职员与视频
  • 季集信息与单集观看进度
  • 相关推荐与相似作品
03 PRIVACY

你的数据先留在手机上,
需要时才走出这一步。

TraktoSearch 不接入广告或分析 SDK。平时的观影记录、进度和历史先保存在手机;只有当你登录豆瓣或观影记录同步、查影视信息、搜资源,或主动开启崩溃反馈时,应用才发出完成这件事所需的请求。

留在设备上的

  • 登录凭据与令牌,保存在加密区域
  • 搜索 / 浏览历史与观影记录
  • 片单、评分与观看进度

需要联网的

  • 登录或同步时:Trakt / 豆瓣相关请求
  • 查资料时:TMDB / 豆瓣 / OMDb 请求
  • 搜资源时:只发送影视搜索关键词
  • 主动开启反馈时:发送崩溃日志
查看技术实现

手机本地:令牌、豆瓣凭据和历史使用 EncryptedSharedPreferences;片单、同步记录、评分和进度保存在 SQLCipher 数据库;Android Keystore 保护本地密钥与不可导出的设备私钥。

联网请求:需要上游服务的请求先经过 HTTPS 和网关 JWT 鉴权,客户端不携带 Worker Secret。

服务端:云端失败数据由 Worker 使用服务端密钥透明加密;密钥不随 APK 分发。

LIVE DATA FLOW · 看数据怎么走

数据从手机出发:本地数据留在设备,联网请求经过安全网关。

SECURITY BOUNDARY · 安全边界
本地加密令牌、凭据、历史和数据库分层保护
HTTPS + 网关鉴权设备挑战签名、15 分钟访问令牌、刷新令牌轮换
服务端密钥隔离Worker Secret 与服务端加密,不随 APK 分发

应用禁止明文流量,只信任系统 CA;网关统一返回 HSTS、CSP、nosniff、权限策略与 no-store 等安全响应头。

开源项目,代码可审计 无广告与分析 SDK
04 常见问题QUESTIONS

第一次使用前,
先解释几个问题。

01 为什么需要邀请码?一天大约能容纳多少人?

App 的联网请求会经过 Cloudflare 网关。按目前的缓存策略和 Service Binding 链路,公共服务每天大约可容纳 450~750 名中等强度用户,所以采用邀请码控制规模并留出余量。

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 账号用于保存观影记录,豆瓣账号用于导入和写回豆瓣标记。

EARLY ACCESS 200 个体验名额

先从收件箱拿到邀请码

填写用户名和邮箱。用户名会作为 TraktoSearch 中的朋友名,邮箱验证完成后,邀请码会发送到你的收件箱。

验证链接 30 分钟有效;邀请码发出后 7 天内使用。欢迎把体验、反馈和建议提交到 GitHub