You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写mpv脚本:按艺术家元标签创建文件夹整理媒体库

实现mpv按艺术家元标签自动整理媒体文件

核心思路

用mpv的Lua脚本读取媒体文件的艺术家元标签,自动构建目标路径、创建文件夹并完成文件复制,替换原来固定路径的快捷键操作。


1. 编写Lua脚本(tag-organizer.lua)

创建一个名为tag-organizer.lua的脚本文件,放到mpv的scripts目录(Windows下通常是%APPDATA%\mpv\scripts,macOS/Linux是~/.config/mpv/scripts):

-- tag-organizer.lua
-- 替换为你的媒体库根目录
local target_root = "D:\\Media\\Music"

function organize_by_artist()
    -- 获取当前播放文件的路径和文件名
    local current_path = mp.get_property("path")
    local filename = mp.get_property("filename")
    if not current_path or not filename then
        mp.osd_message("无法获取文件信息", 3)
        return
    end

    -- 获取艺术家元标签,无标签则用默认值
    local artist = mp.get_property("metadata/by-key/artist") or "Unknown Artist"
    -- 替换艺术家名称中的非法路径字符(避免创建文件夹失败)
    artist = string.gsub(artist, "[/\\:*?\"<>|]", "_")

    -- 构建目标路径
    local target_dir = target_root .. "\\" .. artist
    local target_path = target_dir .. "\\" .. filename

    -- 创建目标文件夹(忽略已存在的错误)
    os.execute('mkdir "' .. target_dir .. '" 2>nul')

    -- 执行复制命令
    local copy_cmd = 'copy "' .. current_path .. '" "' .. target_path .. '"'
    local success = os.execute(copy_cmd)

    -- 显示操作结果
    if success then
        mp.osd_message("已整理至: " .. target_path, 3)
    else
        mp.osd_message("整理失败,请检查权限或路径", 3)
    end
end

-- 注册自定义脚本命令,供快捷键调用
mp.register_script_message("organize-by-artist", organize_by_artist)

2. 修改input.conf快捷键

打开mpv的input.conf文件,把原来的ctrl+m快捷键配置替换为:

ctrl+m script-message organize-by-artist

注意事项

  • 跨平台适配:如果是Linux/macOS用户,需要修改脚本中的命令:
    • 把mkdir "' .. target_dir .. '" 2>nul改成mkdir -p "' .. target_dir .. '"
    • 把copy命令改成cp
    • 路径分隔符\\换成/,比如target_root = "/home/yourname/Media/Music"
  • 特殊字符处理:脚本会自动将艺术家名称中的/、\、:、*、?、"、<、>、|等非法字符替换为下划线,避免路径错误
  • 无标签文件:没有艺术家标签的文件会被归类到Unknown Artist文件夹

内容的提问来源于stack exchange,提问作者Bora Savkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:03:26