【发布时间】:2010-12-26 04:39:28
【问题描述】:
我正在尝试使用程序从未加密的 DVD 中提取字幕,以便单独保存它们。我知道有些程序可以做到这一点(我发现这个页面例如:http://www.bunkus.org/dvdripping4linux/en/separate/subtitles.html),但我希望能够通过库调用或类似的东西来做到这一点(libdvdread 或 libdvdnav 是否支持这个),最好使用红宝石。
【问题讨论】:
我正在尝试使用程序从未加密的 DVD 中提取字幕,以便单独保存它们。我知道有些程序可以做到这一点(我发现这个页面例如:http://www.bunkus.org/dvdripping4linux/en/separate/subtitles.html),但我希望能够通过库调用或类似的东西来做到这一点(libdvdread 或 libdvdnav 是否支持这个),最好使用红宝石。
【问题讨论】:
我不知道有哪个图书馆可以做到这一点。
在 ruby 中,您可以调用程序。例如,要获取目录列表,您可以这样做
files= `ls "#{dir}"`.to_a
反引号变体为您提供被调用程序的标准输出。
要知道文件是否存在
system("ls \"#{file}\"")
system 变体告诉你被调用程序的返回值是否为0。
使用这两种方法,您几乎可以对非交互程序执行任何操作。 http://www.bunkus.org/dvdripping4linux/en/separate/subtitles.html 中描述的程序应该适合这种控制。
小心转义你给外部程序的参数。如果参数是"; rm -rf *; ls ".,可能会发生不希望的事情。
【讨论】:
system("ls", file) 以避免注入攻击。