audio_monster 1.0.1 → 1.0.2
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/.gitignore +0 -1
- data/README.md +31 -0
- data/Rakefile +4 -4
- data/audio_monster.gemspec +1 -0
- data/lib/audio_monster/configuration.rb +9 -9
- data/lib/audio_monster/monster.rb +9 -3
- data/lib/audio_monster/version.rb +1 -1
- data/test/monster_test.rb +6 -0
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 772c7c1166bc3d845d983f6c647ecaaf1bebf8a8
|
|
4
|
+
data.tar.gz: c3d50490be6f82eac1e013affae5ef845c043738
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d0e8f607efb8e05197df71bdac1e88d46e1b5740fe0c52386795f41221e600f0b1a8f6e3fa7f1f7846f0d184206666feda0bce200c39dbc2f1f3b4c496cc8ba7
|
|
7
|
+
data.tar.gz: cc3405f3b40bdbda8b3192c8dbc913fd20fc4a2073d66357dbdbe858bfaac4e366718ca56e72ff71deef8ffbb29d709d10fa6195211fe2a9b53332d09e68e426
|
data/.gitignore
CHANGED
data/README.md
CHANGED
|
@@ -3,6 +3,37 @@
|
|
|
3
3
|
AudioMonster manipulates and transcodes audio.
|
|
4
4
|
It wraps a number of different command line binaries such as sox, lame, flac, twolame, and ffmpeg.
|
|
5
5
|
|
|
6
|
+
## Dependencies
|
|
7
|
+
|
|
8
|
+
The following binary tools are required. They are available via most OS package managers.
|
|
9
|
+
|
|
10
|
+
For OS X use homebrew:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
brew install lame
|
|
14
|
+
brew install flac
|
|
15
|
+
brew install sox
|
|
16
|
+
brew install twolame --frontend
|
|
17
|
+
brew install madplay
|
|
18
|
+
brew install mp3val
|
|
19
|
+
brew install ffmpeg
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
For Redhat/CentOS use yum:
|
|
23
|
+
|
|
24
|
+
NOTE that some multimedia RPMs are available only via particular repositories. See e.g.
|
|
25
|
+
http://wiki.centos.org/TipsAndTricks/MultimediaOnCentOS7
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
yum install lame
|
|
29
|
+
yum install flac
|
|
30
|
+
yum install sox
|
|
31
|
+
yum install twolame
|
|
32
|
+
yum install madplay
|
|
33
|
+
yum install mp3val
|
|
34
|
+
yum install ffmpeg
|
|
35
|
+
```
|
|
36
|
+
|
|
6
37
|
## Installation
|
|
7
38
|
|
|
8
39
|
Add this line to your application's Gemfile:
|
data/Rakefile
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'rake/testtask'
|
|
3
3
|
|
|
4
4
|
Rake::TestTask.new(:test) do |t|
|
|
5
|
-
t.libs <<
|
|
6
|
-
t.pattern =
|
|
5
|
+
t.libs << 'test'
|
|
6
|
+
t.pattern = 'test/**/*_test.rb'
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
task default: :test
|
data/audio_monster.gemspec
CHANGED
|
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
|
22
22
|
spec.add_runtime_dependency 'mp3info'
|
|
23
23
|
spec.add_runtime_dependency 'mimemagic'
|
|
24
24
|
spec.add_runtime_dependency 'activesupport'
|
|
25
|
+
spec.add_runtime_dependency 'ptools'
|
|
25
26
|
|
|
26
27
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
|
27
28
|
spec.add_development_dependency 'rake', '~> 10.0'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
require 'mkmf'
|
|
4
3
|
require 'logger'
|
|
4
|
+
require 'ptools'
|
|
5
5
|
|
|
6
6
|
module AudioMonster
|
|
7
7
|
|
|
@@ -93,17 +93,17 @@ module AudioMonster
|
|
|
93
93
|
yield self
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
def set_mkmf_log(logfile=File::NULL)
|
|
97
|
-
MakeMakefile::Logging.instance_variable_set(:@logfile, logfile)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
96
|
def check_binaries
|
|
101
|
-
old_mkmf_log = MakeMakefile::Logging.instance_variable_get(:@logfile)
|
|
102
|
-
set_mkmf_log
|
|
103
|
-
|
|
104
97
|
BINARIES_KEYS.each { |bin| find_executable(bin.to_s) }
|
|
98
|
+
end
|
|
105
99
|
|
|
106
|
-
|
|
100
|
+
def find_executable(bin)
|
|
101
|
+
which = File.which(bin)
|
|
102
|
+
if which
|
|
103
|
+
puts " #{bin}: #{which}"
|
|
104
|
+
else
|
|
105
|
+
puts "X #{bin}: MISSING"
|
|
106
|
+
end
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
# Reset configuration options to their defaults
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require "audio_monster/version"
|
|
4
4
|
|
|
5
|
+
require 'active_support/all'
|
|
5
6
|
require 'open3'
|
|
6
7
|
require 'timeout'
|
|
7
8
|
require 'mp3info'
|
|
@@ -9,7 +10,7 @@ require 'logger'
|
|
|
9
10
|
require 'nu_wav'
|
|
10
11
|
require 'tempfile'
|
|
11
12
|
require 'mimemagic'
|
|
12
|
-
require '
|
|
13
|
+
require 'digest/sha2'
|
|
13
14
|
|
|
14
15
|
module AudioMonster
|
|
15
16
|
|
|
@@ -248,7 +249,7 @@ module AudioMonster
|
|
|
248
249
|
|
|
249
250
|
def audio_file_info(path, flag)
|
|
250
251
|
check_local_file(path)
|
|
251
|
-
out, err = run_command("#{bin(:soxi)} -V0 -#{flag} '#{path}'", :
|
|
252
|
+
out, err = run_command("#{bin(:soxi)} -V0 -#{flag} '#{path}'", nice: 'n', echo_return: false)
|
|
252
253
|
out.chomp
|
|
253
254
|
end
|
|
254
255
|
|
|
@@ -741,9 +742,14 @@ module AudioMonster
|
|
|
741
742
|
alias validate_mp2 validate_mpeg
|
|
742
743
|
alias validate_mp3 validate_mpeg
|
|
743
744
|
|
|
745
|
+
MAX_FILENAME_LENGTH = 160
|
|
746
|
+
MAX_EXTENSION_LENGTH = 6
|
|
747
|
+
|
|
744
748
|
def create_temp_file(base_file_name=nil, bin_mode=true)
|
|
745
749
|
file_name = File.basename(base_file_name)
|
|
746
|
-
|
|
750
|
+
file_name = Digest::SHA256.hexdigest(base_file_name) if file_name.length > MAX_FILENAME_LENGTH
|
|
751
|
+
file_ext = File.extname(base_file_name)[0, MAX_EXTENSION_LENGTH]
|
|
752
|
+
|
|
747
753
|
FileUtils.mkdir_p(tmp_dir) unless File.exists?(tmp_dir)
|
|
748
754
|
tmp = Tempfile.new([file_name, file_ext], tmp_dir)
|
|
749
755
|
tmp.binmode if bin_mode
|
data/test/monster_test.rb
CHANGED
|
@@ -108,4 +108,10 @@ describe AudioMonster::Monster do
|
|
|
108
108
|
slice_wav.duration.must_equal 5
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
+
it 'can create a temp file with a really long name' do
|
|
112
|
+
base_file_name = ('abc' * 100) + '.extension'
|
|
113
|
+
file = AudioMonster.create_temp_file(base_file_name)
|
|
114
|
+
File.basename(file.path)[0, 64].must_equal Digest::SHA256.hexdigest(base_file_name)
|
|
115
|
+
File.extname(file.path).must_equal '.exten'
|
|
116
|
+
end
|
|
111
117
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: audio_monster
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kuklewicz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-02-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: nu_wav
|
|
@@ -66,6 +66,20 @@ dependencies:
|
|
|
66
66
|
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: ptools
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: bundler
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|