iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
片刻:AI 选片、热门电影、热门剧集、口碑榜单
Translation pending
MediaJavaScript · CSSGitHub @Liyucheng1997Latest connection check failedOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
看片机器人:豆瓣影视目录与多线路 M3U8 播放,Node.js 与 GitHub Pages 部署
Translation pending
Loading the full README.
Read the full README ↗零依赖的 Node.js 影视聚合站,页面结构、URL 规则与 ikanbot 一致,数据实时取自豆瓣公开接口。
movie.liyucheng.me 运行 Node.js 实时版,不使用快照,搜索和线路直接查询上游。
/opt/apps/movie,systemd 服务 app-movie,监听 127.0.0.1:4358,由 nginx 反向代理并提供 HTTPS。main 且改动 server.js、src/、public/ 或 package.json 时,Deploy Server workflow 先运行测试,再通过受限 SSH 钥匙调用服务器上的 /usr/local/bin/deploy-movie(拉取代码、重启服务、健康检查)。也可在 Actions 中手动运行。MOVIE_DEPLOY_SSH_KEY、MOVIE_DEPLOY_KNOWN_HOSTS。项目只部署服务器实时版。GitHub Pages 静态版不再部署,Deploy GitHub Pages workflow 已删除;构建脚本还保留,需要时可以在本地生成:
npm run snapshot # 本地联网抓取影片资料和线路,写入 snapshots/site.json
npm run snapshot:images # 下载豆瓣海报、预告封面和平台图标,避免防盗链
npm run build:pages # 从快照生成 dist/,不依赖外部接口
npm run preview:pages # http://localhost:4173/358_lab-movie-robot/ 验证静态版
静态版读取构建快照:每个电影/剧集分类的前 12 部影片、口碑榜、豆瓣电影 Top250 前 50 部、影片详情、M3U8 线路与选集;豆瓣图片在构建前下载到 snapshots/images/,避免跨站防盗链。电视直播数据从 snapshots/tv/(或 TV_DATA_DIR)复制,用 npm run tv:update -- --out snapshots/tv 生成。
npm start # 或 node server.js,默认 http://localhost:3000
npm run dev # 修改代码后自动重启
环境变量:PORT(端口)、HOST(监听地址,默认所有网卡)、SITE_NAME(站点名称,默认「片刻」)。需要 Node 18+。
| URL | 说明 |
|---|---|
/ | 首页:搜索与 AI 选片合一的大搜索框 + 为你推荐 + 侧栏继续观看 + 热门电影 / 热门剧集 + 一周口碑榜 |
/foryou.html | 个性化推荐流:无限下拉、「我的口味」兴趣画像、类型偏好、重置 |
/hot/index-movie-{标签}.html、-p-{页}.html | 电影分类(热门、最新、经典、豆瓣高分…豆瓣top250),每页 24 部 |
/hot/index-tv-{标签}.html | 剧集分类(热门、美剧、英剧、韩剧、日剧、国产剧…) |
/billboard.html | 榜单:五大口碑榜 + 豆瓣电影 Top250,标签切换,#榜单ID 直达(如 #movie_top250) |
/search?q=&page= | 搜索(豆瓣移动版搜索接口,每页 20 条,支持片名和演职人员) |
/play/{豆瓣ID} | 详情页:第三方 M3U8 多线路播放、选集、豆瓣官方预告、正版平台、影片信息 |
/api/search?q= | 豆瓣搜索的 JSON 版,供 AI 选片把推荐片名对应到站内条目 |
/api/sources/{豆瓣ID} | 按片名和年份匹配 ikanbot 条目,返回全部有效线路和选集 |
/api/rec/pool | 推荐候选池:全部分类第一页 + 全部榜单,带类型/地区/主创/年代特征,缓存 30 分钟 |
/api/rec/related/{豆瓣ID} | 豆瓣「看过这部的人也喜欢」相关影片,缓存 6 小时 |
/api/danmaku/{豆瓣ID}?ep=&seg= | 弹幕:第 ep 集(从 1 开始)的第 seg 个 5 分钟分段,合并哔哩哔哩、爱奇艺、腾讯视频和本站弹幕;POST 发送本站弹幕 |
/tv.html | 电视直播:按地区 / 类型浏览各国频道,搜索、收藏、最近观看,#地区/频道ID 直达 |
/tv/playlist.m3u、/tv/playlist.txt | 检测可用的全部直播地址,可导入播放器 |
/history.html | 播放历史:进度、线路、观看时间(存在浏览器 localStorage) |
server.js:路由、静态文件、豆瓣图片/视频代理(仅允许 *.doubanio.com,支持 Range 拖动进度)src/douban.js:豆瓣接口封装,带内存缓存(列表 30 分钟、榜单 1 小时)src/views.js:服务端渲染模板(Bootstrap 3)public/:样式、脚本(懒加载、播放历史、预告片切换)、logo首页大搜索框同时负责搜索和 AI 选片:「搜索」「AI 推荐」两个按钮并排,高亮的按钮就是回车执行的那个。输入像片名、人名时高亮搜索(表单原生提交到搜索页);带「想看」「适合」「类似」「来点」等描述词、有标点或超过 16 个字时高亮 AI 推荐;点另一个按钮即切换。AI 推荐由 Claude Opus 5.5(claude-opus-5-5)给出 6 部影片和理由,「换一批」会排除已推荐过的片子。搜索结果页底部的「让 AI 按「关键词」推荐」跳回首页(/?ai=关键词)直接交给 AI。
api.anthropic.com,不经过本站服务器,费用计入访客自己的账号。部分地区需要代理才能连上。public/vendor/anthropic-sdk.mjs(许可证同目录),点推荐时才按需加载。请求使用结构化输出(JSON Schema)、effort: low 以缩短等待,并开启服务端拒答回退(fallbacks: "default")。public/ai.js;更新 SDK 时重新打包:npx esbuild entry.mjs --bundle --format=esm --platform=browser --minify --legal-comments=eof,其中 entry.mjs 为 export { default } from "@anthropic-ai/sdk";。历史记录存在浏览器 localStorage(play_history,最多 100 部),每部影片记下上次的线路(名称和资源站代号)、选集(序号和标题)、播放位置和总时长。
startPosition 直接从该位置加载),并显示「上次看到…」提示和「从头播放」。线路按名称 + 代号匹配,选集先按标题再按序号;上次看完(离结尾不足 30 秒)的剧集接下一集。上次的线路检测失效时换到最快的可用线路,仍接着上次那一集。逻辑在 public/common.js(WatchHistory)和 public/player.js。
详情页播放器右侧是 AI 陪看聊天栏(窄屏为右下角按钮打开的底部抽屉,宽屏可收起,播放器右上角的「AI」按钮也能打开或收起)。宽屏打开时播放页放宽到最宽 1560px,播放器尽量保持原来的大小。全屏按钮让播放器和 AI 陪看整行(#watch-row)一起全屏,AI 栏在右侧并统一用深色。和 AI 选片一样,用访客自己的 API Key 从浏览器直接调用 Claude Opus 5.5,流式输出,effort: low 以保证聊天响应速度,开启服务端拒答回退。
companion_chat_v1,最多 12 部、每部 60 条),每次请求带最近 24 条;风格设置存在 companion_prefs_v1。界面在 public/companion.js,与 AI 选片共用的 Key 弹窗、SDK 加载和错误提示在 public/ai-common.js,弹幕通过 window.danmakuNear() 提供。
参照短视频/视频站的推荐流程,排序在浏览器里完成,行为数据只存在本机 localStorage(rec_state_v1),服务端不保存任何用户数据。
This is the beginning of the README. Read the rest at the original. Read the full README ↗