digitalfilmtree 0.0.5 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 83bf81173f76ca7aca351a01dcebf7d49d62ea33
4
- data.tar.gz: 197b192ebe198df2355082158c95f2d9e44d78bf
3
+ metadata.gz: eb78aeb0e3143f61f58203a2273b7b732c466ccd
4
+ data.tar.gz: 3a764d603c9a5af28750f309fd3e5616c189d98e
5
5
  SHA512:
6
- metadata.gz: abdfa1d8c95bbfadc6d0d30fe485fc4c5477b1bb2fedb40c02fcc25c46bd1a575635c614ce08cafaa1b7f70f5ef23eefd71416473a0725a3c9f86212654dd804
7
- data.tar.gz: c08d08e78fe085e937faf92f01e4d13172823abf0784e45d0c63de18d23153379baedb4f6595d3d10844dd61656990df08611e10270dbeb359a8b5b0215aad99
6
+ metadata.gz: 97687090f7ce28b698113624638d7d6316f96e54dce62cfc09f6c58fed3080ebe8ae4733ba126d8617d201c9474a1de063b6c28b4fb5de65dc92d675ee48b976
7
+ data.tar.gz: 54e3e2081d1605268d992d75ad5a6bb3be990e5b0949b646e03d29be9ffaeed3367d242155e053499b93bef250571d244cb0cd6acccf57f1c92506c6857d24b6
data/README.md CHANGED
@@ -6,17 +6,14 @@ Assorted libraries for our post production worklow
6
6
 
7
7
  ### Digitalfilmtree::VFX::EDLMLRenamer
8
8
 
9
- Renames .mov files per EDL (.edl) and Marker List (.txt)
9
+ Rename .mov files to mapped name column in Marker List (.txt) by referencing embedded timecode and the EDL (.edl)
10
10
 
11
- ### Example
11
+ #### Dependencies
12
+ * Mediainfo
12
13
 
13
- ```ruby
14
- require 'digitalfilmtree/vfx/edl_ml_renamer'
15
- r = Digitalfilmtree::VFX::EDLMLRenamer.new
16
- r.folder = "folder/with/files"
17
- r.execute
18
- ```
19
-
14
+ #### Platforms
15
+ * Mac OS X Snow Leopard or newer
16
+ * Windows 7 64-bit or newer
20
17
 
21
18
  ## Installation
22
19
 
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/DFTi/digitalfilmtree"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `git ls-files`.split($/).reject{|i| i.match(/spec\/fixtures/) }
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
@@ -24,5 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "guard-rspec"
25
25
  spec.add_development_dependency "simplecov"
26
26
 
27
+ spec.add_runtime_dependency "digitalfilmtree-util"
27
28
  spec.add_runtime_dependency "edl", "~> 0.1.3"
28
29
  end
@@ -2,19 +2,25 @@
2
2
  # This script will run the EDL ML Renamer from wherever it is executed
3
3
 
4
4
  require 'rubygems'
5
+ require 'digitalfilmtree/vfx/edl_ml_renamer'
5
6
 
6
- PATH = File.expand_path(File.dirname(__FILE__)).
7
- gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
7
+ include Digitalfilmtree
8
8
 
9
- require 'digitalfilmtree/vfx/edl_ml_renamer'
10
- r = Digitalfilmtree::VFX::EDLMLRenamer.new
11
- r.folder = PATH
9
+ r = VFX::EDLMLRenamer.new
10
+ r.folder = Util.winpath File.expand_path File.dirname __FILE__
12
11
 
13
- if r.ready?
14
- STDOUT.puts "Do you want me to rename?"
15
- else
16
- STDOUT.puts "Not ready. Are you missing .txt, .edl, and/or .mov files?"
12
+ begin
13
+ Util::Mediainfo.autoconfigure
14
+ if r.ready?
15
+ r.execute # to do a dry-run, use r.execute(:dry_run => true)
16
+ else
17
+ puts "Not ready. Are you missing .txt, .edl, and/or .mov files?"
18
+ puts "I expect these files to exist in the same directory"
19
+ end
20
+ rescue Exception => ex
21
+ puts "Failed. Reason: #{ex.message}"
22
+ ensure
23
+ puts "Renamed #{r.count} files"
24
+ puts "Press enter to quit"
25
+ gets
17
26
  end
18
- STDIN.gets
19
-
20
- r.execute
@@ -0,0 +1,42 @@
1
+ require 'digitalfilmtree/util/mediainfo'
2
+
3
+ module Digitalfilmtree
4
+ module Model
5
+ class Clip
6
+ include Util::Mediainfo
7
+
8
+ attr_reader :path
9
+
10
+ def initialize path
11
+ @renamed = false
12
+ @path = path
13
+ end
14
+
15
+ def basename
16
+ File.basename(self.path)
17
+ end
18
+
19
+ def rename_to name, options
20
+ new_path = self.path.gsub(self.basename, name)
21
+ unless options[:dry_run]
22
+ FileUtils.mv self.path, new_path
23
+ end
24
+ puts "Renamed #{self.basename} to #{File.basename(new_path)}"
25
+ @path = new_path
26
+ @renamed = true
27
+ end
28
+
29
+ def renamed?
30
+ @renamed
31
+ end
32
+
33
+ def exists?
34
+ File.exists? self.path
35
+ end
36
+
37
+ def start_timecode
38
+ @start_timecode ||= mediainfo(self.path, :start_timecode)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  module Digitalfilmtree
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -1,3 +1,4 @@
1
+ require 'digitalfilmtree/model/clip'
1
2
  require 'fileutils'
2
3
  require 'edl'
3
4
 
@@ -11,27 +12,26 @@ module Digitalfilmtree
11
12
  @folder = path
12
13
  self.ml = self.glob(".txt").first
13
14
  self.edl = self.glob(".edl").first
14
- self.movs = self.glob(".mov")
15
+ self.movs = self.glob(".mov").map do |path|
16
+ Digitalfilmtree::Model::Clip.new(path)
17
+ end
15
18
  end
16
19
 
17
20
  def ready?
18
21
  self.ml && File.exists?(self.ml) &&
19
- self.edl && File.exists?(self.edl) &&
20
- self.movs.size >= 1
22
+ self.edl && File.exists?(self.edl) &&
23
+ self.movs.size >= 1
21
24
  end
22
25
 
23
- def execute
26
+ def execute options={}
24
27
  raise "Not Ready" unless ready?
25
28
  parse_marker_list
26
29
  get_marker_list_name_column
27
30
  @count = 0
28
31
  EDL::Parser.new.parse(File.open(self.edl)).each do |e|
29
- find_clip(e.reel) do |path|
30
- timeline_tc_in = e.rec_start_tc.to_s
31
- get_vfx_name(timeline_tc_in) do |vfx_name|
32
- new_path = path.gsub(File.basename(path), "#{vfx_name}.mov")
33
- FileUtils.mv path, new_path
34
- puts "Renamed #{File.basename(path)} to #{File.basename(new_path)}"
32
+ find_clip(e.src_start_tc.to_s) do |clip|
33
+ get_vfx_name(e.rec_start_tc.to_s) do |vfx_name|
34
+ clip.rename_to("#{vfx_name}.mov", options)
35
35
  @count += 1
36
36
  end
37
37
  end
@@ -51,20 +51,22 @@ module Digitalfilmtree
51
51
  row.each_with_index do |e,i|
52
52
  puts "#{i}) #{e}"
53
53
  end
54
- self.ml_name_column = STDIN.gets.strip.to_i
54
+ self.ml_name_column = gets.strip.to_i
55
55
  end
56
56
  end
57
57
  end
58
58
 
59
- def get_vfx_name timeline_tc_in, &block
60
- row = @ml_data.select{|r| r.include? timeline_tc_in }
59
+ def get_vfx_name timecode, &block
60
+ row = @ml_data.select{|r| r.include? timecode }
61
61
  name = row.flatten[self.ml_name_column]
62
62
  block.call(name) if name
63
63
  end
64
64
 
65
- def find_clip reel, &block
66
- clip = self.movs.select{|i|i.match(/#{reel}/)}.first
67
- block.call(clip) if clip && File.exists?(clip)
65
+ def find_clip timecode, &block
66
+ clip = self.movs.select do |i|
67
+ i.start_timecode == timecode
68
+ end.first
69
+ block.call(clip) if clip && clip.exists?
68
70
  end
69
71
 
70
72
  def parse_marker_list
@@ -1,5 +1,4 @@
1
1
  require "digitalfilmtree/version"
2
2
 
3
3
  module Digitalfilmtree
4
- # Your code goes here...
5
4
  end
@@ -11,25 +11,49 @@ describe Digitalfilmtree::VFX::EDLMLRenamer do
11
11
 
12
12
  context "required files exist" do
13
13
  let(:target) { fixture('vfx/edl_ml_renamer') }
14
- let(:originals) { subject.movs.map{|i| Pathname.new(i)} }
14
+ let(:originals) { subject.movs }
15
+
15
16
  before do
16
- STDIN.stub(:gets).and_return "0"
17
+ @output = []
18
+ Digitalfilmtree::Util::Mediainfo.autoconfigure
19
+ subject.stub(:gets).and_return "0"
20
+ subject.stub(:puts) {|a| @output << a }
17
21
  subject.folder = target.path
22
+ originals.each do |clip|
23
+ clip.stub(:puts) do |*args|
24
+ args.each {|a| @output << a }
25
+ end
26
+ clip.should_not be_renamed
27
+ end
18
28
  end
29
+
19
30
  shared_examples_for 'rename' do
20
31
  it "renames .mov files in the folder" do
21
- originals.each {|i| i.should exist }
22
32
  subject.execute
23
- originals.each {|i| i.should_not exist }
33
+ originals.each do |i|
34
+ i.should be_renamed
35
+ i.should exist
36
+ end
37
+ @output[-3..-1].should eq [
38
+ "Renamed V1-0003_A013C007_130724_R2LG.mov to NLA098_01_02.mov",
39
+ "Renamed V1-0004_B016C005_130724_R2M9.mov to NLA098_01_03.mov",
40
+ "Renamed V1-0005_A013C008_130724_R2LG.mov to NLA098_01_04.mov"]
24
41
  end
25
42
  end
43
+
26
44
  context 'name column is not defined' do
27
45
  it_behaves_like 'rename'
46
+ it "requests the marker list name column" do
47
+ subject.execute
48
+ @output[0].should match /enter the number mapping/
49
+ end
28
50
  end
51
+
29
52
  context 'name column is predefined' do
30
53
  before { subject.ml_name_column = 0 }
31
54
  it_behaves_like 'rename'
32
55
  end
56
+
33
57
  after { target.clean.reset }
34
58
  end
35
59
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: digitalfilmtree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keyvan Fatehi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-27 00:00:00.000000000 Z
11
+ date: 2013-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: digitalfilmtree-util
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: edl
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -110,13 +124,9 @@ files:
110
124
  - digitalfilmtree.gemspec
111
125
  - examples/edl_ml_renamer.rb
112
126
  - lib/digitalfilmtree.rb
127
+ - lib/digitalfilmtree/model/clip.rb
113
128
  - lib/digitalfilmtree/version.rb
114
129
  - lib/digitalfilmtree/vfx/edl_ml_renamer.rb
115
- - spec/fixtures/vfx/edl_ml_renamer/V1-0003_A013C007_130724_R2LG.mov
116
- - spec/fixtures/vfx/edl_ml_renamer/V1-0004_B016C005_130724_R2M9.mov
117
- - spec/fixtures/vfx/edl_ml_renamer/V1-0005_A013C008_130724_R2LG.mov
118
- - spec/fixtures/vfx/edl_ml_renamer/test.edl
119
- - spec/fixtures/vfx/edl_ml_renamer/test.txt
120
130
  - spec/lib/digitalfilmtree/vfx/edl_ml_renamer_spec.rb
121
131
  - spec/spec_helper.rb
122
132
  homepage: https://github.com/DFTi/digitalfilmtree
@@ -144,10 +154,5 @@ signing_key:
144
154
  specification_version: 4
145
155
  summary: Assorted libraries for DigitalFilm Tree post workflow
146
156
  test_files:
147
- - spec/fixtures/vfx/edl_ml_renamer/V1-0003_A013C007_130724_R2LG.mov
148
- - spec/fixtures/vfx/edl_ml_renamer/V1-0004_B016C005_130724_R2M9.mov
149
- - spec/fixtures/vfx/edl_ml_renamer/V1-0005_A013C008_130724_R2LG.mov
150
- - spec/fixtures/vfx/edl_ml_renamer/test.edl
151
- - spec/fixtures/vfx/edl_ml_renamer/test.txt
152
157
  - spec/lib/digitalfilmtree/vfx/edl_ml_renamer_spec.rb
153
158
  - spec/spec_helper.rb
@@ -1 +0,0 @@
1
- TITLE: NLA TEST SEQUENCE
@@ -1,5 +0,0 @@
1
- NLA098_RC_01 01:00:10:04 TC1 magenta
2
- NLA098_01_01 01:00:38:07 TC1 magenta
3
- NLA098_01_02 01:00:48:02 TC1 magenta
4
- NLA098_01_03 01:00:49:23 TC1 magenta
5
- NLA098_01_04 01:00:52:15 TC1 magenta