digitalfilmtree 0.0.5 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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