打开 Web 页面输入一个片名(电影或剧名,甚至"诺兰讲原子弹那部"这种模糊描述),飞影 就自动帮你搜到、生成 .strm、进媒体库,点开秒播、边看边缓存、剧集自动追更。(也支持在 Telegram 收藏夹发片名,效果一样。)
把「TG 资源发现 → 智能匹配 → 缓存流播 → 飞牛/Emby 入库」全流程做成了一个自托管的小软件,一个 Docker 容器搞定。
- 🔎 多种资源源:TG 频道直传视频 / 搜索 bot(如极搜)/ 深链令牌 bot(如 Youxiu_bot,自动翻页收全集)/ 多源兜底
- 🧠 AI 智能匹配(deepseek):从一堆杂乱结果里挑出正确的正片,解析集数,自然语言片名理解,排除盗名/预告/花絮等无关结果
- 🎬 电影 & 剧集自动分类:电影进电影库、剧集进剧集库;分段电影做成上下集顺序播
- ⚡ 缓存流播:秒开、多连接预取、看过的本地秒回、滚动预取下一集、LRU 自动淘汰
- 📺 自动追更:入库的剧自动追,定时查新集、只补新增、更新发到你的 TG 收藏夹
- 🔒 内置网络代理:填一个 vmess/vless 链接即可连接 Telegram,内置 xray
- 🛠 Web 配置/状态页 + 进程内自愈看门狗
- TG 账户(手机号,用来登录/搜索/拉流)
- 一个资源机器人 bot(如
Youxiu_bot、极搜 bot,或你自己的影视频道)。⚠️ 务必填机器人/自有频道,不要填公开群组——往公开群反复发片名容易被 TG 反垃圾系统误判,导致账号被禁言 - 一种连 Telegram 的方式(三选一:vmess://或vless:// 链接→内置 xray;现成的常驻代理→填
socks5://ip:port;网络本身能直连 TG(旁路由/透明代理/海外)→什么都不填) - 一个 deepseek API key(AI 匹配;留空则退化为正则匹配)
- 两个媒体文件夹(剧集库 + 电影库,挂进容器,媒体服务器指向它们)
镜像已发布在 Docker Hub(mn4940128/feiying,amd64),连源码都不用 clone,写个 compose 就能跑:
# docker-compose.yml
services:
feiying:
image: mn4940128/feiying:latest # 官方镜像,docker compose 直接拉
container_name: feiying
restart: unless-stopped
user: "1000:1001" # ← 你媒体服务器用户的 uid:gid(飞牛 admin 一般是1000:1001,`id 用户名` 查)
ports:
- "8080:8080" # Web 配置/状态页
- "8890:8890" # 缓存流服务(媒体库 .strm 指向这里)
volumes:
- ./data:/data # config/session/缓存(想放大盘就把它指到大盘)
- /path/to/your/tv:/media/tv # ← 剧集库目录
- /path/to/your/movies:/media/movies # ← 电影库目录docker compose up -d
# 浏览器打开 http://<主机IP>:8080首次配置(Web 面板):
- 先填 vmess/vless 链接 → 保存(代理起来才能连 TG)
- 登录:填手机号 → 发送验证码 → 手机 Telegram 收码 → 填码登录(有两步验证就填密码)
- 填资源 bot(机器人,别填公开群)、deepseek key、stream_base(见下),保存
- 媒体服务器里建两个库:电视剧 →
/media/tv挂载对应的宿主目录,电影 →/media/movies对应目录 - 收藏夹发片名(或 Web 里输入)→ 入库 → 媒体库刷新即可观看
- stream_base:媒体服务器访问缓存流服务的地址,必须是
http://<主机局域网IP>:8890,否则 .strm 指不到本机。 - user (uid:gid):容器以你媒体服务器用户的身份写文件,写出的
.strm媒体服务器才读得到。飞牛 admin 一般1000:1001。 - 预取并发:默认 4,别调高于 5 —— 会触发 TG flood-wait 限流反而降速。
- 缓存放大盘:
./data里含缓存,想放大盘就把 data 卷指到大盘目录。 - update_interval_hours:追更检查间隔,默认 12 小时。
- 本软件用你的号独立登录生成自己的 session = 多设备,和你手机/其它设备并存,不互踢。
- 别把同一份 session 复制到两台同时跑(会互踢/风控)。一实例一账号。
- 资源源只用机器人 bot 或自有频道,不要用公开群组。往公开群反复发片名,容易被 TG 反垃圾判定为广告号,出现「您已被禁止在公开群组中发言」。中招了给 @SpamBot 发
/start查询/申诉,首次限制一般 1~3 天自动解除;被限制期间私聊 bot 通常不受影响。
镜像不含任何隐私——session、deepseek key、节点、cookie 全在你挂载的 ./data 卷里,不在镜像内。公开镜像是安全的。
app/
main.py 入口(uvicorn+telethon+流服务+看门狗+追更 同一事件循环)
config.py 配置读写 state.py 共享状态 service.py 生命周期编排
proxy.py vmess/vless→xray tg.py 登录(send_code/sign_in/2FA)
ai.py deepseek 匹配/判定(正则兜底) finder.py 多源搜索(discover/materialize)
cache_server.py 块缓存流播(预取/环形/滚动/LRU) strm.py 生成 .strm
control.py 收藏夹监听→入库 follows.py 追更列表 updater.py 定时追更
watchdog.py 进程内自愈 web/ FastAPI 配置/状态页
Python 3.12 · telethon+cryptg · FastAPI/uvicorn · 内置 xray · deepseek(OpenAI 兼容 API)
- 本项目仅为一个自托管的工具,本身不提供、不存储、不分发任何影视资源。所有资源均来自用户自行配置的 Telegram 频道/群/bot,与本项目无关。
- 本项目不提供任何代理节点/服务。vmess/vless 链接需用户自行准备,内置的 xray 仅用于以用户自备的节点连接 Telegram,请在所在国家/地区法律法规允许的范围内使用。
- 请勿将本工具用于任何侵犯他人版权或违反当地法律的用途。使用者需自行承担因使用本工具产生的一切责任。
- 本项目按 MIT 协议以「现状」提供,作者不对任何使用后果负责。
MIT