惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
SecWiki News
SecWiki News
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
量子位
M
MIT News - Artificial intelligence
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
TaoSecurity Blog
TaoSecurity Blog
博客园 - 【当耐特】
H
Heimdal Security Blog
腾讯CDC
The Last Watchdog
The Last Watchdog
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
S
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Cybersecurity and Infrastructure Security Agency CISA
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Full Disclosure
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Threatpost
月光博客
月光博客
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
T
Troy Hunt's Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
D
DataBreaches.Net
O
OpenAI News
L
LINUX DO - 最新话题
宝玉的分享
宝玉的分享
小众软件
小众软件
V
Vulnerabilities – Threatpost
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
T
The Exploit Database - CXSecurity.com
Martin Fowler
Martin Fowler
美团技术团队
P
Privacy International News Feed

有意

生活三两事(3) Openwrt的一些小折腾(5) 基于 PVE 的折腾之路(3)之 影音库自动化 基于 PVE 的折腾之路(2)之 安装群晖 基于 PVE 的折腾之路(1)之 Proxmox VE 的安装配置 折腾nas ——TimeMachine(修改) 日常吐槽(1) 初次自己全责的交通事故 Docker 部署 macvlan 网络下的 qBittorrent
基于 PVE 的折腾之路(4)之 影音库云盘自动化
痞子鱼 · 2023-08-01 · via 有意

前言

前文【基于 PVE 的折腾之路(3)之 影音库自动化】实现了本地自动化追剧。但现在阿里云盘的热门以及搭配各种项目也能实现自动化转存追剧,并且通过 nginx 的 njs 模块将 emby 视频播放地址劫持到 OpenList 直链。

本文需要在群晖 Docker 安装 emby 、OpenList、aliyundrive-subscribe、nginx、rclone

完成后基本流程:电视剧有更新 -> aliyundrive-subscribe 自动转存到指定目录 -> 通知 emby 有新视频 -> emby 刮削 -> emby 通过 nginx 直接播放阿里云盘上的视频。

为什么改用 Emby?

之前一直都是用 jellyfin,因为开源免费。但不知为何对于现在的 4k 视频很多无法正常播放,都强制服务端转码。一开始以为是电视型号太旧不支持解码,所以以前下载视频都只能找特定编码的。

偶然一次心血来潮换成 emby 测试一下,竟然除了音频是 TrueHD 7.1 或 Dolby Atmos 7.1 会导致服务器转码,其他 4K HEVC HDR10 或 4K HEVC HDR10+ 都播放很流畅,所以就改用 emby 做服务端。

1、安装 emby

docker run -d \
    --name emby \
    -e PUID=1026 \
    -e PGID=100 \
    -e TZ=Asia/Shanghai \
    -p 8096:8096 \
    -v /volume1/docker/emby:/config \
    -v /volume1/video:/video \
    --restart unless-stopped \
lovechen/embyserver:latest

2、安装 OpenList (openlist 配置教程请看 wiki)

docker run -d \
    --name=openlist \
    --restart=unless-stopped \
    -e PUID=1026 \
    -e PGID=100 \
    -e UMASK=022 \
    -p 5244:5244 \
    -v /volume1/video:/video \
    -v /volume1/docker/openlist:/opt/openlist/data \
openlistteam/openlist:latest

3、安装 aliyundrive-subscribe

docker run -d \
    --restart=unless-stopped \
    --name=subscribe \
    -e PUID=1026 \
    -e PGID=100 \
    -e TZ=Asia/Shanghai \
    -p 19035:19035 \
    -v /volume1/docker/subscribe:/app/conf \
looby/aliyundrive-subscribe:latest

4、安装 nginx (映射文件请在 Wiki 中提前下载)

docker run -d \
    --name=nginx \
    -e PUID=1026 \
    -e PGID=100 \
    -e TZ=Asia/Shanghai \
    -p 8095:80 \
    -v /volume1/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /volume1/docker/nginx/conf.d:/etc/nginx/conf.d \
    -v /volume1/docker/nginx/cache:/var/cache/nginx/emby \
nginx:alpine

配置 openlist

默认用户名admin,密码需要在 控制台日志查看,通过群晖 IP:5244 端口登录进入后台,找到存储这里,点击添加

2023-08-04T00:35:45.png

选择阿里云盘Open

2023-08-04T00:36:29.png

主要配置挂载路径,即在 NAS 本地的路径;还有刷新令牌。

具体配置教程可以看 Wiki

配置 aliyundrive-subscribe

通过群晖 IP:8002 端口登录 subscribe,/volume1/docker/subscribe/config/app.ini 设置好账号密码以及阿里云盘的 token。

2023-08-04T00:36:44.png

具体配置教程可以看 Wiki

2023-08-04T00:36:51.png

roclone 挂载 openlist 到本地

通过 ssh 登录到群晖,获取 root

# 安装 rclone
curl https://rclone.org/install.sh | sudo bash
# 创建 rclone 配置文件文件夹
mkdir /volume1/docker/rclone

# 创建 rclone 配置文件,注意用户名和密码,建议 openlist 创建一个只读的用户用于挂载用途
cat <<EOF >> /volume1/docker/rclone/rclone.conf
[aliyunpan]
type = webdav
url = http://10.0.0.5:5244/dav
vendor = other
user = admin
pass = Hg8GURjFFspmY0UJKImq5NnzhpW5
EOF
# 创建 rclone 挂载文件,注意修改下面挂载参数
cat <<EOF >> /volume1/docker/rclone/rcloned
#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
NAME_BIN="rclone"

NAME="aliyunpan" #和上面的 rclone 文件一致
REMOTE=''  #远程文件夹,网盘里的挂载的一个文件夹,留空为整个网盘
LOCAL='/volume1/video/aliyunpan'  #挂载地址,VPS本地挂载目录
LOG="/volume1/docker/rclone/log.txt"

Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"
Info="${Green_font_prefix}[信息]${Font_color_suffix}"
Error="${Red_font_prefix}[错误]${Font_color_suffix}"
RETVAL=0

check_running(){
    PID="$(ps -C $NAME_BIN -o pid= |head -n1 |grep -o '[0-9]\{1,\}')"
    if [[ ! -z ${PID} ]]; then
        return 0
    else
        return 1
    fi
}
do_start(){
    check_running
    if [[ $? -eq 0 ]]; then
        echo -e "${Info} $NAME_BIN (PID ${PID}) 正在运行..." && exit 0
    else
        fusermount -zuq $LOCAL >/dev/null 2>&1
        mkdir -p $LOCAL
        mkdir -p ${LOG%/*}
        sudo /usr/bin/rclone mount --config /volume1/docker/rclone/rclone.conf $NAME:$REMOTE $LOCAL --umask 000 --default-permissions --allow-non-empty --allow-other --buffer-size 32M --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G > "${LOG}" 2>&1 &
        sleep 2s
        check_running
        if [[ $? -eq 0 ]]; then
            echo -e "${Info} $NAME_BIN 启动成功 !"
        else
            echo -e "${Error} $NAME_BIN 启动失败 !"
        fi
    fi
}
do_stop(){
    check_running
    if [[ $? -eq 0 ]]; then
        kill -9 ${PID}
        RETVAL=$?
        if [[ $RETVAL -eq 0 ]]; then
            echo -e "${Info} $NAME_BIN 停止成功 !"
        else
            echo -e "${Error} $NAME_BIN 停止失败 !"
        fi
    else
        echo -e "${Info} $NAME_BIN 未运行"
        RETVAL=1
    fi
    fusermount -zuq $LOCAL >/dev/null 2>&1
}
do_status(){
    check_running
    if [[ $? -eq 0 ]]; then
        echo -e "${Info} $NAME_BIN (PID $(echo ${PID})) 正在运行..."
    else
        echo -e "${Info} $NAME_BIN 未运行 !"
        RETVAL=1
    fi
}
do_restart(){
    do_stop
    sleep 2s
    do_start
}
case "$1" in
    start|stop|restart|status)
    do_$1
    ;;
    *)
    echo "使用方法: $0 { start | stop | restart | status }"
    RETVAL=1
    ;;
esac
exit $RETVAL
EOF

最后运行 rclone 挂载到本地

# 使用方法: { start | stop | restart | status }
bash /volume1/docker/rclone/rcloned strat

配置 nginx

主要还是配置 emby.js

const embyHost = 'http://172.17.0.1:8096'; //默认emby的地址是宿主机ip
const embyMountPath = '/video';  // rclone 的挂载目录, 例如将阿里云盘挂载到/volume1目录下:  /volume1/video/aliyun,就填写 /video
const alistToken = 'alist-1c14e05d-b222-4307-9db7····'; //openlist token, 在 openlist 后台查看
const alistAddr= 'http://172.17.0.1:5244'; //访问宿主机上5244端口的 openlist 地址
const embyApiKey = 'ab5bbc1f4233saedg2252e95fb53cbc4';  //emb api key, 在后台设置
const alistPublicAddr = 'http://10.0.0.5:5244'; // openlist 公网地址

具体配置教程可以看 Wiki

总结

至此,可以访问群晖IP:8095 端口访问 emby 服务,emby 媒体库也和添加普通本地文件一样步骤,刮削的文件和图片建议放本地,不要放到媒体所在文件夹,以免访问 api 过于频繁。播放速度也不再受制于家里宽带的上传速度,直接在客户端播放阿里云盘上的视频。

结合上篇本地自动化和本文云盘自动化,总存储空间达到了 42 T 左右,不过收藏的还是建议存储在本地,云盘上的只用于追剧,免得哪天又倒闭了。

2023-08-04T00:37:07.png

Nas ProxmoxVE 群晖 Emby Alist