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 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