之前有个百视通R3300L机顶盒安装了armbian,因为性能孱弱,只能做些简单的任务,所以做一个聚合媒体影院,要求不高的话,体验也是不错的。

1、确定你的机顶盒安装了docker和portainer。

2、准备工作:

#建立文件夹

mkdir -p docker/donggua/cache/images

建一个空的数据库文件

touch docker/donggua/cache.db
nano docker/donggua/db.json
#复制以下内容进去,ctrl+O保持,ctrl+X退出
{
  "sites": [
    {
      "key": "haohua",
      "name": "豪华资源",
      "api": "https://hhzyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "kuaiche",
      "name": "快车资源",
      "api": "https://caiji.kuaichezy.org/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "yingshigongchang",
      "name": "影视工厂",
      "api": "https://cj.lziapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "yayazy_duck",
      "name": "鸭鸭资源",
      "api": "https://cj.yayazy.net/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "bubugao",
      "name": "步步高资源",
      "api": "https://api.yparse.com/api/json",
      "active": true
    },
    {
      "key": "hongniu",
      "name": "红牛资源",
      "api": "https://www.hongniuzy2.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "niuniu",
      "name": "牛牛点播",
      "api": "https://api.niuniuzy.me/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "xinlang",
      "name": "新浪点播",
      "api": "https://api.xinlangapi.com/xinlangapi.php/provide/vod/",
      "active": true
    },
    {
      "key": "guangsu",
      "name": "光速资源",
      "api": "https://api.guangsuapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "yayazy_duck2",
      "name": "丫丫点播",
      "api": "https://cj.yayazy.net/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "uku",
      "name": "U酷资源",
      "api": "https://api.ukuapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "ckzy",
      "name": "CK资源",
      "api": "https://ckzy.me/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "zyku_1080",
      "name": "1080资源库",
      "api": "https://api.1080zyku.com/inc/api_mac10.php/",
      "active": true
    },
    {
      "key": "piaoling",
      "name": "飘零资源",
      "api": "https://p2100.net/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "shandian",
      "name": "閃電资源",
      "api": "https://sdzyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "jinying",
      "name": "金鹰资源",
      "api": "https://jyzyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "huya",
      "name": "虎牙资源",
      "api": "https://www.huyaapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "suoni",
      "name": "索尼资源",
      "api": "https://suoniapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "subo",
      "name": "速播资源",
      "api": "https://subocaiji.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "wolong2",
      "name": "卧龙资源2",
      "api": "https://collect.wolongzyw.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "maotai",
      "name": "茅台资源",
      "api": "https://caiji.maotaizy.cc/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "liangzi",
      "name": "量子资源站",
      "api": "https://cj.lziapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "ikun",
      "name": "iKun资源",
      "api": "https://ikunzyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "wangwang",
      "name": "旺旺短剧",
      "api": "https://wwzy.tv/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "wujin",
      "name": "无尽资源",
      "api": "https://api.wujinapi.me/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "baiduyun",
      "name": "百度云资源",
      "api": "https://api.apibdzy.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "yinghua",
      "name": "樱花资源",
      "api": "https://m3u8.apiyhzy.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "zuida",
      "name": "最大资源",
      "api": "https://api.zuidapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "modu",
      "name": "魔都资源",
      "api": "https://www.mdzyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "mozhuo",
      "name": "魔爪资源",
      "api": "https://mozhuazy.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "douban",
      "name": "豆瓣资源",
      "api": "https://dbzy.tv/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "wolong",
      "name": "卧龙资源",
      "api": "https://wolongzyw.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "zy360",
      "name": "360资源",
      "api": "https://360zy.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "tianya",
      "name": "天涯资源",
      "api": "https://tyyszy.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "baofeng",
      "name": "暴风资源",
      "api": "https://bfzyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "dytt",
      "name": "电影天堂资源",
      "api": "https://caiji.dyttzyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "ruyi",
      "name": "如意资源",
      "api": "http://cj.rycjapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "jisu",
      "name": "极速资源",
      "api": "https://jszyapi.com/api.php/provide/vod/",
      "active": true
    },
    {
      "key": "feifan",
      "name": "非凡影视",
      "api": "http://ffzy5.tv/api.php/provide/vod/",
      "active": true
    }
  ]
}

3、很多博主都是按照dongguaTV的官方代码修改一下就运行的,这样导致很多问题,特别是刮削问题。

他们用类似以下的代码:

services:
  donggua-tv:
    image: ghcr.io/ednovas/dongguatv:latest
    container_name: donggua-tv
    ports:
      - "3000:3000" # 冒号左侧自行更改
    environment:
      - TMDB_API_KEY=1234567890abcdefghijklmn # 替换成你的TMDB的密钥
      - ACCESS_PASSWORD=123456 # 自行更改
      - CACHE_TYPE=sqlite
     # - TMDB_PROXY_URL=https://tmdb-proxy.your-name.workers.dev
    volumes:
      - ./docker/donggua/db.json:/app/db.json # 存储所有的采集源配置信息
      - ./docker/donggua/cache.db:/app/cache.db # 数据库文件
      - ./docker/donggua/cache/images:/app/public/cache/images 
    restart: always

以上代码应用中有一些痛点:
a、在ghcr.io拉取镜像比较慢,应该用ghcr.nju.edu.cn加速。

b、虽然代码里设定了TMDB的刮削配置,但是由于TMDB网站受到DNS污染,导致并不能顺利刮削。

c、有博主搞了nginx代理的方案,有点麻烦,不适合小白,而且多了个docker nginx的容器,本来机顶盒1G内存已经捉襟见肘了,没必要浪费资源。

所以我针对以上痛点做了一些改良。

4、改良方案一:
利用portainner的stack创建容器,这个方案在x86 amd64架构是可行的。但是在armbian bullseye运行会导致hosts不完整,不知什么原因,希望有大神解释一下。

注意:由于不需要用TMDB的代理,所以注释了以下两行

 # - TMDB_API_KEY=1234567890abcdefghijklmn # 替换成你TMDB的密钥:

 # - TMDB_PROXY_URL=https://tmdb-proxy.your-name.workers.dev

而且密码需要根据实际情况修改:

 - ACCESS_PASSWORD=123456 # 自行更改

正式代码如下:

services:
  donggua-tv:
    image: ghcr.nju.edu.cn/ednovas/dongguatv:latest
    container_name: donggua-tv
    ports:
      - "3000:3000" # 冒号左侧自行更改
    environment:
     # - TMDB_API_KEY=1234567890abcdefghijklmn # 替换成你TMDB的密钥
      - ACCESS_PASSWORD=123456 # 自行更改
      - CACHE_TYPE=sqlite
     # - TMDB_PROXY_URL=https://tmdb-proxy.your-name.workers.dev
    volumes:
      - ./docker/donggua/db.json:/app/db.json # 存储所有的采集源配置信息
      - ./docker/donggua/cache.db:/app/cache.db # 数据库文件
      - ./docker/donggua/cache/images:/app/public/cache/images
    extra_hosts:
      - "api.tmdb.org:18.161.111.105"
      - "api.tmdb.org:18.161.111.115"
      - "api.tmdb.org:18.161.111.96"
      - "api.themoviedb.org:3.160.188.44"
      - "api.themoviedb.org:3.160.188.68"
      - "api.themoviedb.org:3.160.188.49"
      - "api.themoviedb.org:3.160.188.33"
    restart: always

注意:该方案在armbian bullseye不通过。

5、改良方案二:
推荐该方案
直接运行以下代码:

docker run -p 3000:3000 \
	--name dongguatv \
	--restart always \
	-v ~/docker/donggua/db.json:/app/db.json \
	-v ~/docker/donggua/cache.db:/app/cache.db \
	-v ~/docker/donggua/cache/images:/app/public/cache/images \
	#-e TMDB_API_KEY=1234567890abcdefghijklmn \
	-e ACCESS_PASSWORD=123456 \
	--add-host='api.tmdb.org:18.161.111.105' \
	--add-host='api.tmdb.org:18.161.111.122' \
	--add-host='api.tmdb.org:18.161.111.115' \
	--add-host='api.tmdb.org:18.161.111.96' \
	--add-host='api.themoviedb.org:3.160.188.44' \
	--add-host='api.themoviedb.org:3.160.188.68' \
	--add-host='api.themoviedb.org:3.160.188.49' \
	--add-host='api.themoviedb.org:3.160.188.33' \
-d ghcr.nju.edu.cn/ednovas/dongguatv:latest

该方案在armbian bullseye下通过。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐