From ee435e6fd0de9d8d36f6d9dd4a8ad22c01c01e67 Mon Sep 17 00:00:00 2001 From: ZJP Monitor Date: Tue, 29 Jul 2025 00:02:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E4=BB=B6:=20rclonem?= =?UTF-8?q?ount.sh,=20runembysim.sh,=20nginx/conf.d/emby.conf,=20nginx/con?= =?UTF-8?q?f.d/externalUrl.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nginx/conf.d/emby.conf | 1 + nginx/conf.d/externalUrl.js | 17 +++++++++++++---- rclonemount.sh | 1 + runembysim.sh | 23 ++++++++++++++++++----- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/nginx/conf.d/emby.conf b/nginx/conf.d/emby.conf index c7faf8d..f5316fe 100644 --- a/nginx/conf.d/emby.conf +++ b/nginx/conf.d/emby.conf @@ -36,6 +36,7 @@ server{ # 使用 JavaScript 模块处理响应 #js_body_filter rewritePlaybackInfo; + js_header_filter addExternalUrl.HeaderFilter; } location ~* /videos/(\d+)/original { diff --git a/nginx/conf.d/externalUrl.js b/nginx/conf.d/externalUrl.js index 759b186..e632335 100644 --- a/nginx/conf.d/externalUrl.js +++ b/nginx/conf.d/externalUrl.js @@ -213,9 +213,10 @@ const redirectUrl = (r) => { r.return(302, link); } const rewritePlaybackInfo = async (r, data, flags) => { +//const rewritePlaybackInfo = (r) => { // 获取响应体 - //let body = r.responseText; - r.error("Original response body: " + r.responseText); + //let data = r.responseText; + //r.error("Original response body: " + r.responseText); if (flags.last === false) { oriData += data; r.error(`flags.last: ${flags.last} , data.length: ${data.length}`); @@ -244,14 +245,22 @@ const rewritePlaybackInfo = async (r, data, flags) => { } // 返回修改后的 JSON -// r.return(200, JSON.stringify(data)); + //r.return(200, JSON.stringify(data)); // } catch (e) { // // 如果 JSON 解析失败,返回原始响应并记录错误 // r.warn('Failed to parse JSON: ' + e); // r.return(200, body); // } -// r.error(`addUrldata.length: ${JSON.stringify(data).length}`) +// r.error(`addUrldata.length: ${JSON.stringify(data).length}`); + // + // Remove Content-Length header + delete r.headersOut['Content-Length']; + + // Set Transfer-Encoding to chunked + r.headersOut['Transfer-Encoding'] = 'chunked'; + r.sendBuffer(JSON.stringify(data), flags); + //r.sendBuffer(JSON.stringify(data)); r.done(); } function cacheRedirect(r) { diff --git a/rclonemount.sh b/rclonemount.sh index c212651..04d0c75 100644 --- a/rclonemount.sh +++ b/rclonemount.sh @@ -19,6 +19,7 @@ progdir=$(pwd) num=$(mount |grep "/external"|wc -l) if [ $num -lt 1 ]; then mkdir -p external >/dev/null 2>&1 + mkdir -p emby.external >/dev/null 2>&1 mount -o bind,shared emby.external external echo "mount emby.external to external to mark shared" fi diff --git a/runembysim.sh b/runembysim.sh index 6b4f8a8..656d33e 100644 --- a/runembysim.sh +++ b/runembysim.sh @@ -20,10 +20,10 @@ progdir=$(pwd) SCRIPT_NAME=$(basename "$0") # 检查是否有相同的脚本在运行(排除当前进程) -if pgrep -f "$SCRIPT_NAME" | grep -v "$$" > /dev/null; then - echo "脚本已在运行,退出..." - exit 1 -fi +#if pgrep -f "$SCRIPT_NAME" | grep -v "$$" > /dev/null; then +# echo "脚本已在运行,退出..." +# exit 1 +#fi mkdir -p emby.tmp emby.cache >/dev/null 2>&1 chmod 777 emby.tmp emby.cache @@ -34,6 +34,7 @@ chmod 777 emby.tmp emby.cache num=$(mount |grep "/external"|wc -l) if [ $num -lt 1 ]; then mkdir external >/dev/null 2>&1 + mkdir emby.external >/dev/null 2>&1 mount -o bind,shared emby.external external echo "mount emby.external to external to mark shared" fi @@ -102,10 +103,22 @@ if [ $? -eq 0 ]; then sed -i -e "s|- .*external:/external|- ${progdir}/external:/external|g" docker-compose.yml sed -i -e "s|- .*emby.tmp:/tmp|- ${progdir}/emby.tmp:/tmp|g" docker-compose.yml sed -i -e "s|- .*emby.cache:/cache|- ${progdir}/emby.cache:/cache|g" docker-compose.yml + docker stop embyUrl-nginx docker stop embysim docker-compose down docker-compose up -d else + docker stop embyUrl-nginx + docker rm embyUrl-nginx + docker run -d \ + --name embyUrl-nginx \ + -v $progdir/nginx/nginx.conf:/etc/nginx/nginx.conf \ + -v $progdir/nginx/conf.d:/etc/nginx/conf.d \ + -v $progdir/emby.tmp:/tmp \ + -p 8096:80 \ + --restart on-failure \ + nginx:alpine + docker stop embysim docker rm embysim docker run -d \ @@ -116,7 +129,7 @@ else -v $progdir/emby.tmp:/tmp \ -v $progdir/emby.cache:/cache \ --device /dev/dri:/dev/dri \ - -p 8096:8096 \ + -p 8097:8096 \ -p 8920:8920 \ --env UID=1000 \ --env GID=100 \