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 +4 -4
- data/README.md +6 -9
- data/digitalfilmtree.gemspec +2 -1
- data/examples/edl_ml_renamer.rb +18 -12
- data/lib/digitalfilmtree/model/clip.rb +42 -0
- data/lib/digitalfilmtree/version.rb +1 -1
- data/lib/digitalfilmtree/vfx/edl_ml_renamer.rb +18 -16
- data/lib/digitalfilmtree.rb +0 -1
- data/spec/lib/digitalfilmtree/vfx/edl_ml_renamer_spec.rb +28 -4
- metadata +17 -12
- data/spec/fixtures/vfx/edl_ml_renamer/V1-0003_A013C007_130724_R2LG.mov +0 -0
- data/spec/fixtures/vfx/edl_ml_renamer/V1-0004_B016C005_130724_R2M9.mov +0 -0
- data/spec/fixtures/vfx/edl_ml_renamer/V1-0005_A013C008_130724_R2LG.mov +0 -0
- data/spec/fixtures/vfx/edl_ml_renamer/test.edl +0 -1
- data/spec/fixtures/vfx/edl_ml_renamer/test.txt +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb78aeb0e3143f61f58203a2273b7b732c466ccd
|
4
|
+
data.tar.gz: 3a764d603c9a5af28750f309fd3e5616c189d98e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
9
|
+
Rename .mov files to mapped name column in Marker List (.txt) by referencing embedded timecode and the EDL (.edl)
|
10
10
|
|
11
|
-
|
11
|
+
#### Dependencies
|
12
|
+
* Mediainfo
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
|
data/digitalfilmtree.gemspec
CHANGED
@@ -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
|
data/examples/edl_ml_renamer.rb
CHANGED
@@ -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
|
-
|
7
|
-
gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
|
7
|
+
include Digitalfilmtree
|
8
8
|
|
9
|
-
|
10
|
-
r =
|
11
|
-
r.folder = PATH
|
9
|
+
r = VFX::EDLMLRenamer.new
|
10
|
+
r.folder = Util.winpath File.expand_path File.dirname __FILE__
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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,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
|
-
|
20
|
-
|
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.
|
30
|
-
|
31
|
-
|
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 =
|
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
|
60
|
-
row = @ml_data.select{|r| r.include?
|
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
|
66
|
-
clip = self.movs.select
|
67
|
-
|
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
|
data/lib/digitalfilmtree.rb
CHANGED
@@ -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
|
14
|
+
let(:originals) { subject.movs }
|
15
|
+
|
15
16
|
before do
|
16
|
-
|
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
|
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.
|
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-
|
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
|
File without changes
|
File without changes
|
File without changes
|
@@ -1 +0,0 @@
|
|
1
|
-
TITLE: NLA TEST SEQUENCE
|