This commit is contained in:
2026-04-03 12:46:33 +02:00
parent a300158d53
commit 9f0e7b422f
6 changed files with 154 additions and 185 deletions
+3
View File
@@ -1,3 +1,6 @@
**/.git
.manager/*
!.manager/.gitkeep
cache/
files/*.log
View File
+14 -3
View File
@@ -60,10 +60,21 @@ icc/ # ICC 色彩配置文件
## 更新流程
1. 在 mpv 中按 `M` 触发 manager.lua观察控制台输出确认无 `FAILED` 条目
2. 更新完成后删除 manager 在子目录留下的嵌套 `.git`(否则 `git add` 会失败
1. 在 mpv 中按 `M` 触发 manager.lua观察控制台输出确认无 `FAILED` 条目。可能会有其他报错如 `[manager] Fehler: externes Repository manager existiert bereits.`,这是正常的。只需要确保不出现全大写的 `FAILED` 即可。
2. manager.lua 在 dest 目录产生的嵌套 `.git` 目录迁移到仓库内的 `.manager/`(避免根仓库误判为 submodule幂等可重复执行
```bash
find -L ~/.config/mpv -mindepth 2 -name .git -type d | sort -r | xargs rm -rf
REPO=$(git -C ~/.config/mpv rev-parse --show-toplevel)
GITSTORE="$REPO/.manager"
mkdir -p "$GITSTORE"
find -L ~/.config/mpv -mindepth 2 -name .git -type d | while read gitdir; do
dest="${gitdir%/.git}"
rel="${dest#$REPO/}"
name=$(echo "$rel" | tr '/' '-')
mv "$gitdir" "$GITSTORE/$name"
depth=$(echo "$rel" | tr -cd '/' | wc -c)
ups=$(printf '../%.0s' $(seq 1 $((depth + 1))))
echo "gitdir: ${ups}.manager/$name" > "$dest/.git"
done
```
3. 重启 mpv检查控制台有无 `unknown key` 或脚本加载失败的警告
4. 若有 `unknown key` 警告,说明对应脚本的配置项发生变化,找 `script-opts/` 下同名 `.conf` 对照脚本源码更新
+118 -118
View File
@@ -1,120 +1,120 @@
[
{
"git": "https://github.com/po5/mpv_manager",
"branch": "main",
"whitelist": "manager%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/po5/evafast",
"branch": "rewrite",
"whitelist": "%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/stax76/mpv-scripts",
"branch": "main",
"whitelist": "delete_current_file%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/mpv-scripts",
"branch": "main",
"blacklist": "license|%.md$|drcbox%.lua$|.-%-list%.lua$|mpv-torrserver.lua",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/mpv-playlistmanager",
"branch": "dev",
"whitelist": "playlistmanager%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/mpv-sub-assrt",
"whitelist": "%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/chapterskip",
"branch": "dev",
"whitelist": "%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/Eisa01_mpv-scripts",
"branch": "dev",
"whitelist": "undoredo%.lua$|simplehistory%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/autosubsync-mpv",
"branch": "v0.33_CM",
"whitelist": "readme%.md$|%.lua$",
"dest": "~~/scripts/autosubsync"
},
{
"git": "https://github.com/christoph-heinrich/mpv-quality-menu",
"whitelist": "quality%-menu%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/tomasklaen/uosc",
"branch": "main",
"whitelist": "src/uosc/",
"dest": "~~/scripts/uosc"
},
{
"git": "https://github.com/Tony15246/uosc_danmaku",
"branch": "main",
"blacklist": "^%.",
"dest": "~~/scripts/uosc_danmaku"
},
{
"git": "https://github.com/CogentRedTester/mpv-sub-select",
"whitelist": "sub%-select%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/CogentRedTester/mpv-scripts",
"whitelist": "cycle%-commands%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://gist.github.com/igv/8a77e4eb8276753b54bb94c1c50c317e",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://gist.github.com/igv/a015fc885d5c22e6891820ad89555637",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://gist.github.com/igv/2364ffa6e81540f29cb7ab4c9bc05b6b",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://gist.github.com/igv/36508af3ffc84410fe39761d6969be10",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://github.com/Artoriuz/glsl-joint-bilateral",
"branch": "main",
"whitelist": "jointbilateral%.glsl$",
"dest": "~~/shaders/other"
},
{
"git": "https://github.com/Artoriuz/glsl-pixel-clipper",
"branch": "main",
"whitelist": "%.glsl$",
"dest": "~~/shaders/other"
},
{
"git": "https://github.com/bloc97/Anime4K",
"whitelist": "%.md$|%.glsl$",
"blacklist": "tensorflow",
"dest": "~~/shaders/Anime4K"
}
{
"git": "https://github.com/po5/mpv_manager",
"branch": "master",
"whitelist": "manager%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/po5/evafast",
"branch": "rewrite",
"whitelist": "%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/stax76/mpv-scripts",
"branch": "main",
"whitelist": "delete_current_file%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/mpv-scripts",
"branch": "main",
"blacklist": "license|%.md$|drcbox%.lua$|.-%-list%.lua$|mpv-torrserver.lua",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/mpv-playlistmanager",
"branch": "dev",
"whitelist": "playlistmanager%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/mpv-sub-assrt",
"whitelist": "%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/chapterskip",
"branch": "dev",
"whitelist": "%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/Eisa01_mpv-scripts",
"branch": "dev",
"whitelist": "undoredo%.lua$|simplehistory%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/dyphire/autosubsync-mpv",
"branch": "v0.33_CM",
"whitelist": "readme%.md$|%.lua$",
"dest": "~~/scripts/autosubsync"
},
{
"git": "https://github.com/christoph-heinrich/mpv-quality-menu",
"whitelist": "quality%-menu%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/tomasklaen/uosc",
"branch": "main",
"whitelist": "src/uosc/",
"dest": "~~/scripts/uosc"
},
{
"git": "https://github.com/Tony15246/uosc_danmaku",
"branch": "main",
"blacklist": "^%.|^\"",
"dest": "~~/scripts/uosc_danmaku"
},
{
"git": "https://github.com/CogentRedTester/mpv-sub-select",
"whitelist": "sub%-select%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://github.com/CogentRedTester/mpv-scripts",
"whitelist": "cycle%-commands%.lua$",
"dest": "~~/scripts"
},
{
"git": "https://gist.github.com/igv/8a77e4eb8276753b54bb94c1c50c317e",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://gist.github.com/igv/a015fc885d5c22e6891820ad89555637",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://gist.github.com/igv/2364ffa6e81540f29cb7ab4c9bc05b6b",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://gist.github.com/igv/36508af3ffc84410fe39761d6969be10",
"whitelist": "%.glsl$",
"dest": "~~/shaders/igv"
},
{
"git": "https://github.com/Artoriuz/glsl-joint-bilateral",
"branch": "main",
"whitelist": "jointbilateral%.glsl$",
"dest": "~~/shaders/other"
},
{
"git": "https://github.com/Artoriuz/glsl-pixel-clipper",
"branch": "main",
"whitelist": "%.glsl$",
"dest": "~~/shaders/other"
},
{
"git": "https://github.com/bloc97/Anime4K",
"whitelist": "%.md$|%.glsl$",
"blacklist": "tensorflow",
"dest": "~~/shaders/Anime4K"
}
]
+18 -63
View File
@@ -1,4 +1,3 @@
local msg = require "mp.msg"
local utils = require "mp.utils"
local legacy = mp.command_native_async == nil
local config = {}
@@ -45,55 +44,22 @@ function apply_defaults(info)
return info
end
local function build_directory_string(dir, repo)
local str = ""
local contents = utils.readdir(dir)
if not contents then return msg.error("could not access local repo:", repo) end
for _, item in ipairs(contents) do
local path = dir..'/'..item
if utils.file_info(path).is_dir then
if item ~= ".git" then str = str..'/'..build_directory_string(path, repo)..'\n' end
else
str = str..(path:sub(repo:len()+2))..'\n'
end
end
return str
end
local function get_file_list(info)
if not info.local_repo then
return run({"git", "-C", info.edist, "ls-tree", "-r", "--name-only", "remotes/manager/"..info.branch}).stdout
else
return build_directory_string(info.local_repo, info.local_repo)
end
end
function update(info)
info = apply_defaults(info)
if not info then return false end
local base = nil
info.edist = string.match(mp.command_native({"expand-path", info.dest}), "(.-)[/\\]?$")
mkdir(info.edist)
local e_dest = string.match(mp.command_native({"expand-path", info.dest}), "(.-)[/\\]?$")
mkdir(e_dest)
local files = {}
if info.local_repo then
info.local_repo = mp.command_native({"expand-path", info.local_repo})
if not utils.file_info(info.local_repo) then
info.local_repo = false
msg.warn("local repo not found - falling back to git")
end
end
if not info.local_repo then
run({"git", "-C", info.edist, "remote", "add", "manager", info.git})
run({"git", "-C", info.edist, "remote", "set-url", "manager", info.git})
run({"git", "-C", info.edist, "fetch", "manager", info.branch})
end
for file in string.gmatch(get_file_list(info), "[^\r\n]+") do
run({"git", "-C", e_dest, "remote", "add", "manager", info.git})
run({"git", "-C", e_dest, "remote", "set-url", "manager", info.git})
run({"git", "-C", e_dest, "fetch", "manager", info.branch})
for file in string.gmatch(run({"git", "-C", e_dest, "ls-tree", "-r", "--name-only", "remotes/manager/"..info.branch}).stdout, "[^\r\n]+") do
local l_file = string.lower(file)
if info.whitelist == "" or match(l_file, info.whitelist) then
if info.blacklist == "" or not match(l_file, info.blacklist) then
@@ -107,29 +73,20 @@ function update(info)
end
end
end
if base == nil then return false end
if base ~= "" then base = base.."/" end
if next(files) == nil then
print("no files matching patterns")
else
for _, file in ipairs(files) do
local based = string.sub(file, string.len(base)+1)
local p_based = parent(based)
if p_based and not info.flatten_folders then mkdir(info.edist.."/"..p_based) end
local c = ""
if info.local_repo then
local source = io.open(info.local_repo..'/'..file)
c = source:read("*a")
source:close()
else
c = string.match(run({"git", "-C", info.edist, "--no-pager", "show", "remotes/manager/"..info.branch..":"..file}).stdout, "(.-)[\r\n]?$")
end
local f = io.open(info.edist.."/"..(info.flatten_folders and file:match("[^/]+$") or based), "w")
if p_based and not info.flatten_folders then mkdir(e_dest.."/"..p_based) end
local c = string.match(run({"git", "-C", e_dest, "--no-pager", "show", "remotes/manager/"..info.branch..":"..file}).stdout, "(.-)[\r\n]?$")
local f = io.open(e_dest.."/"..(info.flatten_folders and file:match("[^/]+$") or based), "w")
f:write(c)
f:close()
end
@@ -150,10 +107,8 @@ function update_all()
end
for i, info in ipairs(config) do
print("updating", (info.git:match("([^/]+)%.git$") or info.git).."...")
if not update(info) then msg.error("FAILED") end
print("update"..i, update(info))
end
print("all files updated")
end
mp.add_key_binding(nil, "manager-update-all", update_all)
mp.add_key_binding(nil, "manager-update-all", update_all)
+1 -1
View File
@@ -754,7 +754,7 @@ fallback_server
想要使用此选项请在mpv配置文件夹下的 `script-opts`中创建 `uosc_danmaku.conf`文件并自定义如下内容:
```
fallback_server= https://api.danmu.icu
fallback_server=https://api.danmu.icu
```
</details>