audio_monster 1.0.1 → 1.0.2

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: 6dd9ebc9ec6401612a0050ff0d00b3c16f928c44
4
- data.tar.gz: 0968a22d155bf1254912f91b2810d9dd193ba581
3
+ metadata.gz: 772c7c1166bc3d845d983f6c647ecaaf1bebf8a8
4
+ data.tar.gz: c3d50490be6f82eac1e013affae5ef845c043738
5
5
  SHA512:
6
- metadata.gz: 8d5ca8bba6c0fea6197041547bd0a4cd566a86a9f7d421996f9030bb210ba2e10c9c4182a44b72b05f1b9c6af6354605f51829e123e983510a9d6e0e8c9eb301
7
- data.tar.gz: 452cca5364dd6e443f589c1c494bb742183efb5a625f358ef74ac58a9f50aa0d81d54508daee69ba1038bcbaeb1c939965d915bc59b2c07258d15798313c4593
6
+ metadata.gz: d0e8f607efb8e05197df71bdac1e88d46e1b5740fe0c52386795f41221e600f0b1a8f6e3fa7f1f7846f0d184206666feda0bce200c39dbc2f1f3b4c496cc8ba7
7
+ data.tar.gz: cc3405f3b40bdbda8b3192c8dbc913fd20fc4a2073d66357dbdbe858bfaac4e366718ca56e72ff71deef8ffbb29d709d10fa6195211fe2a9b53332d09e68e426
data/.gitignore CHANGED
@@ -11,5 +11,4 @@
11
11
  *.so
12
12
  *.o
13
13
  *.a
14
- mkmf.log
15
14
  /test/tmp/
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 "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
4
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.pattern = "test/**/*_test.rb"
5
+ t.libs << 'test'
6
+ t.pattern = 'test/**/*_test.rb'
7
7
  end
8
8
 
9
9
  task default: :test
@@ -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
- set_mkmf_log(old_mkmf_log)
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 'active_support/all'
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}'", :nice=>'n', :echo_return=>false)
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
- file_ext = File.extname(base_file_name)
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
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module AudioMonster
4
- VERSION = "1.0.1"
4
+ VERSION = "1.0.2"
5
5
  end
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.1
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-01-25 00:00:00.000000000 Z
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