我正在尝试运行一个由DHH共享的Ruby脚本(链接如下),以将一些Leica相机配置文件转换为.dcp M10相机配置文件。
我只是不确定如何运行它。我知道它需要在终端中运行,但仅此而已。
我在桌面上的一个文件夹里有所有的Leica Q相机配置文件...这次又是什么?
我已经下载了脚本注释中提到的DCP tool。
这里有一个指向GitHub存储库的链接:https://gist.github.com/dhh/d3c8cf9309b662047257b7e583c3f595#file-dcp-converter-rb-L8
我知道这可能是非常基本的,但任何帮助都会非常感谢!
下面是实际的脚本:
#!/usr/bin/env ruby
# Requires that you have ./bin/dcpTool from https://sourceforge.net/projects/dcptool/
require 'rubygems'
require 'bundler/setup'
require 'nokogiri'
input_camera_model = ARGV[0] || "LEICA Q (Typ 116)"
output_camera_model = ARGV[1] || "LEICA M10"
input_dir = ARGV[2] || "./input"
output_dir = ARGV[3] || "./output"
def convert_profile_name(profile_name, input_camera_model, output_camera_model)
File.basename(profile_name.gsub(/#{input_camera_model.gsub(/\(/, "\\(").gsub(/\)/, "\\)")}/, output_camera_model), ".dcp")
end
def replace_camera_model(xml_profile_filename, output_camera_model)
profile_doc = Nokogiri::XML(File.read(xml_profile_filename))
profile_doc.xpath('//UniqueCameraModelRestriction').first.content = output_camera_model
File.open(xml_profile_filename, "w+") { |file| file.write(profile_doc.to_xml) }
end
Dir.entries(input_dir).reject { |file| file =~ /^(\.|\.\.)$/ }.each do |existing_profile|
converted_profile = convert_profile_name(existing_profile, input_camera_model, output_camera_model)
existing_dcp_filename = File.join(input_dir, existing_profile)
xml_filename = "#{File.join(output_dir, converted_profile)}.xml"
decompile_command = "./bin/dcpTool -d '#{existing_dcp_filename}' '#{xml_filename}'"
puts "Decompiling #{existing_dcp_filename} into XML"
`#{decompile_command}`
puts "Replacing camera model: #{input_camera_model} -> #{output_camera_model}"
replace_camera_model(xml_filename, output_camera_model)
converted_dcp_filename = "#{File.join(output_dir, converted_profile)}.dcp"
recompile_command = "./bin/dcpTool -c '#{xml_filename}' '#{converted_dcp_filename}'"
puts "Recompiling XML into #{converted_dcp_filename}"
`#{recompile_command}`
File.delete(xml_filename)
puts
end```发布于 2020-05-16 02:13:34
最简单的方法:
ruby dcp-converter.rb.注意:您可能必须先运行gem install bundler nokogiri。
如果您的模型与所示模型不同,则可能需要传递额外的参数,例如ruby dcp-converter.rb "LEICA Q (Typ 202)"
参数顺序为ruby dcp-converter.rb [input_model] [output_model] [input_directory] [output_directory]
默认值为
116)"
类型:
https://stackoverflow.com/questions/61825479
复制相似问题