youpy-scissor 0.0.6 → 0.0.7
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.
- data/README.rdoc +3 -0
- data/Rakefile +2 -2
- data/data/silence.mp3 +0 -0
- data/lib/scissor.rb +56 -1
- metadata +3 -2
data/README.rdoc
CHANGED
@@ -38,6 +38,9 @@ utility to chop mp3 files
|
|
38
38
|
# split
|
39
39
|
(Scissor.new('sequence.mp3') / 16).first.to_file('split.mp3')
|
40
40
|
|
41
|
+
# replace first 10 seconds with 30 seconds of silence
|
42
|
+
foo.replace(0, 10, Scissor.silence(30)).to_file('replace.mp3')
|
43
|
+
|
41
44
|
== Copyright
|
42
45
|
|
43
46
|
Author:: youpy <youpy@buycheapviagraonlinenow.com>
|
data/Rakefile
CHANGED
@@ -17,7 +17,7 @@ DESCRIPTION = "utility to chop mp3 files"
|
|
17
17
|
RUBYFORGE_PROJECT = "scissor"
|
18
18
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
19
19
|
BIN_FILES = %w( )
|
20
|
-
VERS = "0.0.
|
20
|
+
VERS = "0.0.7"
|
21
21
|
|
22
22
|
REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
23
23
|
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
@@ -61,7 +61,7 @@ spec = Gem::Specification.new do |s|
|
|
61
61
|
#s.required_ruby_version = '>= 1.8.2'
|
62
62
|
|
63
63
|
s.files = %w(README.rdoc ChangeLog Rakefile) +
|
64
|
-
Dir.glob("{bin,doc,test,lib,templates,generator,extras,website,script}/**/*") +
|
64
|
+
Dir.glob("{bin,doc,test,lib,data,templates,generator,extras,website,script}/**/*") +
|
65
65
|
Dir.glob("ext/**/*.{h,c,rb}") +
|
66
66
|
Dir.glob("examples/**/*.rb") +
|
67
67
|
Dir.glob("tools/*.rb")
|
data/data/silence.mp3
ADDED
Binary file
|
data/lib/scissor.rb
CHANGED
@@ -9,6 +9,7 @@ class Scissor
|
|
9
9
|
class CommandFailed < Error; end
|
10
10
|
class FileExists < Error; end
|
11
11
|
class EmptyFragment < Error; end
|
12
|
+
class OutOfDuration < Error; end
|
12
13
|
|
13
14
|
attr_reader :fragments
|
14
15
|
|
@@ -34,7 +35,11 @@ class Scissor
|
|
34
35
|
end
|
35
36
|
|
36
37
|
def slice(start, length)
|
37
|
-
|
38
|
+
if start + length > duration
|
39
|
+
raise OutOfDuration
|
40
|
+
end
|
41
|
+
|
42
|
+
new_mp3 = self.class.new
|
38
43
|
remain = length
|
39
44
|
|
40
45
|
@fragments.each do |fragment|
|
@@ -102,6 +107,46 @@ class Scissor
|
|
102
107
|
|
103
108
|
alias / split
|
104
109
|
|
110
|
+
def fill(filled_duration)
|
111
|
+
if @fragments.empty?
|
112
|
+
raise EmptyFragment
|
113
|
+
end
|
114
|
+
|
115
|
+
remain = filled_duration
|
116
|
+
new_mp3 = self.class.new
|
117
|
+
|
118
|
+
while filled_duration > new_mp3.duration
|
119
|
+
if remain < duration
|
120
|
+
added = slice(0, remain)
|
121
|
+
else
|
122
|
+
added = self
|
123
|
+
end
|
124
|
+
|
125
|
+
new_mp3 += added
|
126
|
+
remain -= added.duration
|
127
|
+
end
|
128
|
+
|
129
|
+
new_mp3
|
130
|
+
end
|
131
|
+
|
132
|
+
def replace(start, duration, replaced)
|
133
|
+
new_mp3 = self.class.new
|
134
|
+
offset = start + duration
|
135
|
+
|
136
|
+
if offset > self.duration
|
137
|
+
raise OutOfDuration
|
138
|
+
end
|
139
|
+
|
140
|
+
if start > 0
|
141
|
+
new_mp3 += slice(0, start)
|
142
|
+
end
|
143
|
+
|
144
|
+
new_mp3 += replaced
|
145
|
+
new_mp3 += slice(offset, self.duration - offset)
|
146
|
+
|
147
|
+
new_mp3
|
148
|
+
end
|
149
|
+
|
105
150
|
def to_file(filename, options = {})
|
106
151
|
if @fragments.empty?
|
107
152
|
raise EmptyFragment
|
@@ -162,6 +207,14 @@ class Scissor
|
|
162
207
|
end
|
163
208
|
end
|
164
209
|
|
210
|
+
class << self
|
211
|
+
def silence(duration)
|
212
|
+
new(File.dirname(__FILE__) + '/../data/silence.mp3').
|
213
|
+
slice(0, 1).
|
214
|
+
fill(duration)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
165
218
|
class Fragment
|
166
219
|
attr_reader :filename, :start, :duration
|
167
220
|
|
@@ -169,6 +222,8 @@ class Scissor
|
|
169
222
|
@filename = filename
|
170
223
|
@start = start
|
171
224
|
@duration = duration
|
225
|
+
|
226
|
+
freeze
|
172
227
|
end
|
173
228
|
end
|
174
229
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: youpy-scissor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- youpy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-05 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -36,6 +36,7 @@ files:
|
|
36
36
|
- ChangeLog
|
37
37
|
- Rakefile
|
38
38
|
- lib/scissor.rb
|
39
|
+
- data/silence.mp3
|
39
40
|
has_rdoc: true
|
40
41
|
homepage: http://scissor.rubyforge.org
|
41
42
|
post_install_message:
|