Class: Dvdvrconv::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/dvdvrconv/command.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv) ⇒ Command

Returns a new instance of Command.



7
8
9
10
11
12
13
14
15
16
# File 'lib/dvdvrconv/command.rb', line 7

def initialize(argv)
  @argv = argv
  @options = {}

  config_file = Dvdvrconv::DEFAULT_CONFIG_FILE
  if File.exist?(config_file)
    puts "Read the default config file. => #{config_file}"
    load_config(config_file)
  end
end

Class Method Details

.run(argv) ⇒ Object



3
4
5
# File 'lib/dvdvrconv/command.rb', line 3

def self.run(argv)
  new(argv).execute
end

Instance Method Details

#dvdpathObject



172
173
174
175
176
177
178
# File 'lib/dvdvrconv/command.rb', line 172

def dvdpath
  {
    :vr_mangr_ifo => @options[:vr_mangr_ifo],
    :vr_movie_vro => @options[:vr_movie_vro],
    :dvd_vr_cmd => @options[:dvd_vr_cmd]
  } 
end

#executeObject

For now, this test code returns dummy dvd-vr information.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/dvdvrconv/command.rb', line 19

def execute
  options = Dvdvrconv::Options.parse(@argv)
  dvd = Dvdvrconv::Dvdvr.new

  # Set the path specified in the yaml file.
  if @options[:vr_mangr_ifo]
    dvd.vrdisc.opts_ifo = @options[:vr_mangr_ifo]
  else
    dvd.vrdisc.opts_ifo = dvd.vrdisc.default_opts_ifo
  end

  if @options[:vr_movie_vro]
    dvd.vrdisc.opts_vro = @options[:vr_movie_vro]
  else
    dvd.vrdisc.opts_vro = dvd.vrdisc.default_opts_vro
  end

  if @options[:dvd_vr_cmd]
    dvd.vrdisc.cmd = @options[:dvd_vr_cmd]
  else
    dvd.vrdisc.cmd = dvd.vrdisc.default_cmd
  end

  if options[:opt][:config_file]
    puts "Use config file\n  => #{options[:opt][:config_file]}"
    opt_config_file = options[:opt][:config_file]
    load_config(opt_config_file) if File.exist?(opt_config_file)
    dvd.vrdisc.opts_ifo = @options[:vr_mangr_ifo] if @options[:vr_mangr_ifo]
    dvd.vrdisc.opts_vro = @options[:vr_movie_vro] if @options[:vr_movie_vro]
    dvd.vrdisc.cmd = @options[:dvd_vr_cmd] if @options[:dvd_vr_cmd]
  end

  if @options[:concat_mode].nil?
    dvd.vrdisc.concat_mode = Dvdvrconv::DEFAULT_CONCAT_MODE
  else
    dvd.vrdisc.concat_mode = @options[:concat_mode]
  end

  # View the path of each files
  puts "== Use these paths =="
  puts "  => VR_MANGR.IFO: #{dvd.vrdisc.opts_ifo}"
  puts "  => VR_MOVIE.VRO #{dvd.vrdisc.opts_vro}"
  puts "  => dvd-vr.exe: #{dvd.vrdisc.cmd}"
  puts "== Customize settings =="
  puts "  => use_customize_title: #{@options[:use_customize_title]}"
  puts "  => base_dst_name: #{@options[:base_dst_name]}"
  puts "  => number_list: #{@options[:number_list]}"
  puts "  => concat_mode: #{@options[:concat_mode]}"

  dvd.read_info

  dvd.view_info if options[:opt][:info] || options[:opt].empty?
  exit unless options[:opt][:exec]
  
  # Extract vob files
  dvd.adjust_title
  dvd.vro2vob

  # Change the file name to the title name
  dvd.change_to_title_name
  dvd.rename_vob

  # Concatenate Split titles
  if dvd.vrdisc.concat_mode == true
    puts "== Concatenate Split titles =="
    concat_list = dvd.make_concat_list
    dvd.concat_titles(concat_list)
  end

  # customize title of vob files
  case @options[:use_customize_title]
  when 1
    puts "Specify individual file names."

    if @options[:base_dst_name].class == Array
      base_dst_name = @options[:base_dst_name]
    else
      puts "ERROR: base_dst_name should be an Array. \n  ( => #{@options[:base_dst_name]})"
      exit
    end

    number_list = []
  when 2
    puts "Add sequence number to the file name."

    if @options[:base_dst_name].class == String
      base_dst_name = @options[:base_dst_name]
    else
      puts "ERROR: base_dst_name should be String. \n  ( => #{@options[:base_dst_name]})"
      exit
    end

    number_list = []
  when 3
    puts "Specify sequence numbers individually."

    if @options[:base_dst_name].class == String
      base_dst_name = @options[:base_dst_name]
    else
      puts "ERROR: base_dst_name should be String. \n  ( => #{@options[:base_dst_name]})"
      exit
    end

    if @options[:number_list].class == Array
      number_list = @options[:number_list]
    else
      puts "ERROR: number_list should be an Array."
      exit
    end

  else
    puts "No customize file names"
    base_dst_name = dvd.vrdisc.title.uniq.map { |file| file[0].gsub(/\s/, "_") }
    number_list = []
  end

  dvd.customize_title(base_dst_name, number_list)
  dvd.rename_vob

  # convert vob to mp4
  dvd.vob2mp4
end

#load_config(file) ⇒ Object

load yaml file and store in @options.



143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/dvdvrconv/command.rb', line 143

def load_config(file)
  config = YAML.load(File.read(file)) || {}

  %w(vr_mangr_ifo vr_movie_vro dvd_vr_cmd).each do |key|
    @options[key.to_sym] = nil

    unless config.key?(key)
      puts "[ #{key} ] does not exist in #{file} file."
    else
      if File.exist?(config[key])
        @options[key.to_sym] = config[key]
      else
        puts "File read error. No such file: #{config[key]}"
      end
    end

  end

  @options[:use_customize_title] = config["use_customize_title"] || "no"
  @options[:base_dst_name] = config["base_dst_name"] || []
  @options[:number_list] = config["number_list"] || []

  if config["concat_mode"].nil?
    @options[:concat_mode] = Dvdvrconv::DEFAULT_CONCAT_MODE
  else
    @options[:concat_mode] = config["concat_mode"]  
  end
end