我想为VLC编写一个非常简单的插件,当播放,暂停或停止播放媒体时发出Web请求。它与扰码插件非常相似。
我看到VLC支持插件和扩展(它们是非常简单的Lua脚本),但是我还没有找到有关如何执行此操作的任何信息。
我想我需要编写一个注册一些回调的插件-是吗?关于如何实现此目标的任何想法吗?解决这个问题似乎是一场艰巨的战斗。我可以使用Python吗?
我在Windows上使用VLC 2.2.1。
这里是一个简单的Lua插件,可识别播放/暂停/停止事件:
function descriptor()
return {
title = "VLC Dummy Extension",
capabilities = { "playing-listener" }
}
end
function activate()
end
function deactivate()
end
function meta_changed()
end
function playing_changed()
vlc.msg.dbg("[Dummy] Status: " .. vlc.playlist.status())
end
注意:
activate()
,deactivate()
,meta_changed()
。您不需要包括它们,但是VLC会在调试日志中填充无用的“找不到功能”消息。playing-listener
,则VLC会期望playing-listener
钩子并在适当的时候调用它(即使代码注释说该钩子名称为“ status_changed”)。playing_changed()
返回“已停止”,“正在播放”,“已暂停”或“未知”。运行:
vlc.playlist.status()
中:vlc.playlist.status()
(Windows)或extensions folder(Linux)。%APPDATA%\vlc\lua\extensions\
将被调用。~/.local/share/vlc/lua/extensions/
调用),请打开工具>消息(Ctrl + M),设置要调试的级别并通过“ lua”进行过滤。[播放新项目时要执行的操作:
activate()
添加到插件的功能。vlc.msg
。input-listener
获取当前项目(名称,URI,元数据等)。>>input_changed()
,这意味着您必须为套接字编程。幸运的是,默认情况下VLC附带的扩展名vlc.input.item()
具有用于vlc.input.item()
的实用程序方法。我们可以偷那些。在此示例中,我只是发送一个裸线程GET:
vlc.net
如果我不在乎重定向或读取响应,则
vlc.net
比vlsub的版本简单得多:
vlsub
[您有两个选择:编写一个lua模块(请查看MSN通知插件以获取示例代码)或编写一个C插件(类似于您已经找到的scrobbler)。