vidibus-fileinfo 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ pkg/*
2
+ Gemfile.lock
3
+ *.gem
4
+ .bundle
5
+ rdoc
6
+ coverage
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --format nested
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :gemcutter
2
+
3
+ # Specify your gem's dependencies in vidibus-fileinfo.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Andre Pankratz
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,79 @@
1
+ = Vidibus::Fileinfo
2
+
3
+ Returns various information on image and video files.
4
+
5
+ This gem is part of the open source service-oriented {video framework}[http://vidibus.org] Vidibus.
6
+
7
+
8
+ == Installation
9
+
10
+ Add the dependency to the Gemfile of your application:
11
+
12
+ gem "vidibus-fileinfo"
13
+
14
+ Then call bundle install on your console.
15
+
16
+
17
+ == System requirements
18
+
19
+ In order to perform the file inspection, ImageMagick and FFmpeg executables are required.
20
+
21
+ Unless ruby already knows about those tools, you'll have to define the path somewhere.
22
+ In a Rails environment, a good place would be your development.rb and production.rb.
23
+
24
+ Example for development environment on OSX:
25
+
26
+ # Set path to ImageMagick and FFmpeg executables
27
+ ENV["PATH"] = "#{ENV["PATH"]}:/opt/local/bin"
28
+
29
+ Example for production environment on Debian:
30
+
31
+ # Set path to ImageMagick and FFmpeg executables
32
+ ENV["PATH"] = "#{ENV["PATH"]}:/usr/bin/"
33
+
34
+
35
+ == Usage
36
+
37
+ Obtaining information from a file is easy:
38
+
39
+ Fileinfo("path/to/myfile.png")
40
+ # => {:width => 300, height => 200, ... }
41
+
42
+
43
+ === Image files
44
+
45
+ For images, a hash with following data will be returned:
46
+
47
+ :width # width of image
48
+ :height # height of image
49
+ :size # file size in bytes
50
+ :bit # depth in bit
51
+ :content_type # content type of image, e.g. "jpeg"
52
+
53
+ This gem currently support these image formats:
54
+
55
+ jpg, jpeg, png, gif
56
+
57
+
58
+ === Video files
59
+
60
+ For videos, a different hash will be returned:
61
+
62
+ :width # width of video
63
+ :height # height of video
64
+ :size # file size in bytes
65
+ :duration # duration of video in seconds
66
+ :fps # frames per second
67
+ :bitrate # overall bit rate (video + audio)
68
+ :video_codec # codec of video stream, e.g. "h264"
69
+ :audio_codec # codec of audio stream, e.g. "aac"
70
+ :audio_sample_rate # sample rate of audio stream, e.g. 48000
71
+
72
+ These video formats are currently supported:
73
+
74
+ avi, flv, h261, h263, h264, ipod, m4v, mov, mp4, mpeg, mxf, ogg
75
+
76
+
77
+ == Copyright
78
+
79
+ Copyright (c) 2011 Andre Pankratz. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require "bundler"
2
+ require "rake/rdoctask"
3
+ require "rspec"
4
+ require "rspec/core/rake_task"
5
+ Bundler::GemHelper.install_tasks
6
+
7
+ Rspec::Core::RakeTask.new(:rcov) do |t|
8
+ t.pattern = "spec/**/*_spec.rb"
9
+ t.rcov = true
10
+ t.rcov_opts = ["--exclude", "^spec,/gems/"]
11
+ end
12
+
13
+ Rake::RDocTask.new do |rdoc|
14
+ require File.expand_path("../lib/vidibus/fileinfo/version.rb", __FILE__)
15
+ rdoc.rdoc_dir = "rdoc"
16
+ rdoc.title = "vidibus-sysinfo #{Vidibus::Fileinfo::VERSION}"
17
+ rdoc.rdoc_files.include("README*")
18
+ rdoc.rdoc_files.include("lib/**/*.rb")
19
+ rdoc.options << "--charset=utf-8"
20
+ end
@@ -0,0 +1,33 @@
1
+ module Vidibus
2
+ module Fileinfo
3
+ class Base
4
+ attr_accessor :path, :processor
5
+
6
+ def initialize(path)
7
+ @path = path
8
+ check_file
9
+ load_processor
10
+ end
11
+
12
+ def format
13
+ @format ||= Fileinfo.format(@path)
14
+ end
15
+
16
+ def mime_type
17
+ @mime_type ||= Mime::Type.lookup_by_extension(format)
18
+ end
19
+
20
+ protected
21
+
22
+ def check_file
23
+ raise FileAccessError unless File.exist?(@path)
24
+ raise NoFileError unless File.file?(@path)
25
+ end
26
+
27
+ def load_processor
28
+ @processor = Fileinfo.processor(format)
29
+ extend @processor
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,40 @@
1
+ module Vidibus
2
+ module Fileinfo
3
+ module Processor
4
+ module Image
5
+ FORMATS = %w[jpg jpeg png gif]
6
+
7
+ # Extracts image data through ImageMagick.
8
+ def data
9
+ raise PathError unless @path
10
+ @data ||= begin
11
+ result = perform or raise DataError
12
+ values = result.to_s.split(" ")
13
+ raise DataError unless values.size > 5
14
+ dimensions = values[2].split('x').map {|d| d.to_i}
15
+ raise DataError unless dimensions.any?
16
+ {
17
+ :content_type => values[1].downcase,
18
+ :width => dimensions[0],
19
+ :height => dimensions[1],
20
+ :bit => values[4].to_i,
21
+ :size => File.size(@path)
22
+ }
23
+ end
24
+ end
25
+
26
+ protected
27
+
28
+ def perform
29
+ result = `#{command}`
30
+ raise DataError unless $? == 0
31
+ result
32
+ end
33
+
34
+ def command
35
+ "identify #{@path}"
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,30 @@
1
+ module Vidibus
2
+ module Fileinfo
3
+ module Processor
4
+ module Video
5
+ FORMATS = %w[avi flv h261 h263 h264 ipod m4v mov mp4 mpeg mxf ogg]
6
+
7
+ # Extracts image data through RVideo, which uses FFmpeg.
8
+ def data
9
+ raise PathError unless @path
10
+ @data ||= begin
11
+ rvideo = RVideo::Inspector.new(:file => path)
12
+ raise DataError unless rvideo
13
+ info = {
14
+ :width => rvideo.width().to_i,
15
+ :height => rvideo.height().to_i,
16
+ :duration => rvideo.duration().to_f/1000,
17
+ :size => File.size(path),
18
+ :fps => rvideo.fps().to_f
19
+ }
20
+ raise DataError unless info[:width] > 0 and info[:height] > 0 and info[:duration] > 0
21
+ [:bitrate, :audio_sample_rate, :audio_codec, :video_codec].each do |m|
22
+ info[m] = rvideo.send(m)
23
+ end
24
+ info
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,5 @@
1
+ module Vidibus
2
+ module Fileinfo
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,96 @@
1
+ require "fileinfo/base"
2
+ require "fileinfo/processor/image"
3
+ require "fileinfo/processor/video"
4
+
5
+ module Vidibus
6
+ module Fileinfo
7
+
8
+ class Error < StandardError; end
9
+ class FileAccessError < Error; end
10
+ class NoFileError < Error; end
11
+ class NoFormatError < Error; end
12
+ class UnitError < Error; end
13
+ class UnsupportedFormatError < Error; end
14
+ class ProcessorError < Error; end
15
+ class PathError < ProcessorError; end
16
+ class DataError < ProcessorError; end
17
+
18
+ class << self
19
+
20
+ # Returns a list of available processors.
21
+ def processors
22
+ @processors ||= [Processor::Image, Processor::Video]
23
+ end
24
+
25
+ # Returns a list of processable formats.
26
+ def formats
27
+ @formats ||= mapping.keys.sort
28
+ end
29
+
30
+ # Returns a processor class for given format.
31
+ # If no processor matches, an UnsupportedFormatError will be raised.
32
+ def processor(format)
33
+ mapping[format.to_s] or raise UnsupportedFormatError
34
+ end
35
+
36
+ # Returns the format of a given file path.
37
+ # If no format can be detected, a NoFormatError will be raised.
38
+ def format(path)
39
+ if path =~ /(?:\.)([a-z0-9]+)$/i
40
+ $1.downcase
41
+ else
42
+ raise NoFormatError
43
+ end
44
+ end
45
+
46
+ # Converts given size string with unit to bytes number.
47
+ #
48
+ # Example:
49
+ # Vidibus::Fileinfo.bytes("0.23 MB") #=> 241172
50
+ #
51
+ def bytes(value)
52
+ if value.is_a?(String)
53
+ value =~ /([\d\.]+)\s*(\w*)/i
54
+ size = $1.to_f
55
+ unit = $2.strip.upcase if $2
56
+ power = case unit
57
+ when "B", "" : 0
58
+ when "K", "KB": 1
59
+ when "M", "MB": 2
60
+ when "G", "GB": 3
61
+ when "T", "TB": 4
62
+ else raise UnitError
63
+ end
64
+ factor = 1024**power
65
+ (size*factor).round
66
+ elsif value.is_a?(Float)
67
+ value.round
68
+ elsif value.is_a?(Integer)
69
+ value
70
+ else
71
+ raise ArgumentError
72
+ end
73
+ end
74
+
75
+ protected
76
+
77
+ def mapping
78
+ @mapping ||= begin
79
+ map = {}
80
+ processors.each do |processor|
81
+ for format in processor::FORMATS
82
+ map[format] = processor
83
+ end
84
+ end
85
+ map
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ # Shorthand for Vidibus::Fileinfo::Base.new
93
+ # Returns data hash.
94
+ def Fileinfo(path)
95
+ Vidibus::Fileinfo::Base.new(path).data
96
+ end
@@ -0,0 +1,6 @@
1
+ require "vidibus-core_extensions"
2
+ require "action_dispatch/http/mime_type.rb"
3
+ require "rvideo"
4
+
5
+ $:.unshift(File.join(File.dirname(__FILE__), "vidibus"))
6
+ require "fileinfo"
Binary file
Binary file
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+
4
+ require "rubygems"
5
+ require "rspec"
6
+ require "rr"
7
+ require "vidibus-fileinfo"
8
+
9
+ require "support/stubs"
10
+ require "support/files"
11
+
12
+ RSpec.configure do |config|
13
+ config.mock_with :rr
14
+ end
@@ -0,0 +1,9 @@
1
+ FILES_DIR = File.join(File.dirname(__FILE__), "..", "files")
2
+
3
+ def jpg_path
4
+ @jpg_path ||= File.join(FILES_DIR, "Jim-Marshall.jpg")
5
+ end
6
+
7
+ def mp4_path
8
+ @mp4_path ||= File.join(FILES_DIR, "RevAppTest.mp4")
9
+ end
@@ -0,0 +1,4 @@
1
+ def stub_file(path)
2
+ stub(File).exist?(path) {true}
3
+ stub(File).file?(path) {true}
4
+ end
@@ -0,0 +1,65 @@
1
+ require "spec_helper"
2
+
3
+ describe Vidibus::Fileinfo::Base do
4
+ let(:subject) {Vidibus::Fileinfo::Base}
5
+ let(:jpg_info) {subject.new(jpg_path)}
6
+
7
+ describe "initializing" do
8
+ it "should require one param" do
9
+ expect {subject.new}.to raise_error(ArgumentError)
10
+ end
11
+
12
+ it "should raise an error if file is not accessible" do
13
+ expect {
14
+ subject.new("something")
15
+ }.to raise_error(Vidibus::Fileinfo::FileAccessError)
16
+ end
17
+
18
+ it "should raise an error if file is a directory" do
19
+ expect {
20
+ subject.new(File.dirname(__FILE__))
21
+ }.to raise_error(Vidibus::Fileinfo::NoFileError)
22
+ end
23
+
24
+ it "should raise an error if file format is not supported" do
25
+ stub_file("/what.ever")
26
+ expect {
27
+ subject.new("/what.ever")
28
+ }.to raise_error(Vidibus::Fileinfo::UnsupportedFormatError)
29
+ end
30
+
31
+ it "should pass if file is valid" do
32
+ subject.new(jpg_path).should be_true
33
+ end
34
+
35
+ it "should allow access to the processor's methods" do
36
+ jpg_info.should respond_to(:data)
37
+ end
38
+ end
39
+
40
+ describe "#format" do
41
+ it "should return the current file's format" do
42
+ mock(Vidibus::Fileinfo).format(jpg_path) {"jpg"}
43
+ jpg_info.format
44
+ end
45
+ end
46
+
47
+ describe "#mime_type" do
48
+ it "should return the current file's mime type" do
49
+ mock(Mime::Type).lookup_by_extension("jpg") {"image/jpeg"}
50
+ jpg_info.mime_type
51
+ end
52
+ end
53
+
54
+ describe "#path" do
55
+ it "should return the current file's path" do
56
+ jpg_info.path.should eql(jpg_path)
57
+ end
58
+ end
59
+
60
+ describe "#processor" do
61
+ it "should return the matching processor for given file" do
62
+ jpg_info.processor.should eql(Vidibus::Fileinfo::Processor::Image)
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,38 @@
1
+ require "spec_helper"
2
+
3
+ describe Vidibus::Fileinfo::Processor::Image do
4
+ let(:subject) {Vidibus::Fileinfo::Base.new(jpg_path)}
5
+
6
+ describe "FORMATS" do
7
+ it "should include various image formats" do
8
+ Vidibus::Fileinfo::Processor::Image::FORMATS.should eql(%w[jpg jpeg png gif])
9
+ end
10
+ end
11
+
12
+ describe "#data" do
13
+ it "should require @path to be defined" do
14
+ subject.instance_variable_set("@path", nil)
15
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::PathError)
16
+ end
17
+
18
+ it "should raise an error if ImageMagick fails to extract any data" do
19
+ stub(subject).perform {""}
20
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::DataError)
21
+ end
22
+
23
+ it "should raise an error if ImageMagick fails to extract dimensions" do
24
+ stub(subject).perform {"Something"}
25
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::DataError)
26
+ end
27
+
28
+ it "should return a hash of image attributes" do
29
+ subject.data.should eql({
30
+ :content_type => "jpeg",
31
+ :width => 30,
32
+ :height => 23,
33
+ :bit => 8,
34
+ :size => 14822
35
+ })
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,57 @@
1
+ require "spec_helper"
2
+
3
+ describe Vidibus::Fileinfo::Processor::Video do
4
+ let(:subject) {Vidibus::Fileinfo::Base.new(mp4_path)}
5
+
6
+ describe "FORMATS" do
7
+ it "should include various image formats" do
8
+ Vidibus::Fileinfo::Processor::Video::FORMATS.should eql(%w[avi flv h261 h263 h264 ipod m4v mov mp4 mpeg mxf ogg])
9
+ end
10
+ end
11
+
12
+ describe "#data" do
13
+ it "should require @path to be defined" do
14
+ subject.instance_variable_set("@path", nil)
15
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::PathError)
16
+ end
17
+
18
+ it "should call RVideo::Inspector.new" do
19
+ mock(RVideo::Inspector).new(:file => mp4_path) {OpenStruct.new(:width => "10", :height => "10", :duration => "10")}
20
+ subject.data
21
+ end
22
+
23
+ it "should raise an error if RVideo::Inspector returns nothing" do
24
+ stub(RVideo::Inspector).new(:file => mp4_path) {}
25
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::DataError)
26
+ end
27
+
28
+ it "should raise an error if RVideo::Inspector fails to extract height" do
29
+ stub(RVideo::Inspector).new(:file => mp4_path) {OpenStruct.new(:width => "10", :height => nil, :duration => "10")}
30
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::DataError)
31
+ end
32
+
33
+ it "should raise an error if RVideo::Inspector fails to extract width" do
34
+ stub(RVideo::Inspector).new(:file => mp4_path) {OpenStruct.new(:width => nil, :height => "10", :duration => "10")}
35
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::DataError)
36
+ end
37
+
38
+ it "should raise an error if RVideo::Inspector fails to extract duration" do
39
+ stub(RVideo::Inspector).new(:file => mp4_path) {OpenStruct.new(:width => "10", :height => "10", :duration => nil)}
40
+ expect {subject.data}.to raise_error(Vidibus::Fileinfo::DataError)
41
+ end
42
+
43
+ it "should return a hash of image attributes" do
44
+ subject.data.should eql({
45
+ :video_codec => "mpeg4",
46
+ :audio_codec => "aac",
47
+ :audio_sample_rate => 48000,
48
+ :height => 405,
49
+ :width => 720,
50
+ :fps => 25.0,
51
+ :duration => 1.92,
52
+ :bitrate => 602,
53
+ :size => 144631
54
+ })
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,131 @@
1
+ require "spec_helper"
2
+
3
+ describe Vidibus::Fileinfo do
4
+ let(:subject) {Vidibus::Fileinfo}
5
+
6
+ describe ".processors" do
7
+ it "should return a list of available processor classes" do
8
+ subject.processors.should eql([Vidibus::Fileinfo::Processor::Image, Vidibus::Fileinfo::Processor::Video])
9
+ end
10
+ end
11
+
12
+ describe ".formats" do
13
+ it "should return a list of processable file formats" do
14
+ subject.formats.should eql(%w[avi flv gif h261 h263 h264 ipod jpeg jpg m4v mov mp4 mpeg mxf ogg png])
15
+ end
16
+ end
17
+
18
+ describe ".processor" do
19
+ it "should require a format" do
20
+ expect {subject.processor}.to raise_error(ArgumentError)
21
+ end
22
+
23
+ it "should return the image processor for an image format" do
24
+ subject.processor("jpg").should eql(Vidibus::Fileinfo::Processor::Image)
25
+ end
26
+
27
+ it "should return the video processor for a video format" do
28
+ subject.processor("mp4").should eql(Vidibus::Fileinfo::Processor::Video)
29
+ end
30
+
31
+ it "should raise an error for unsupported file formats" do
32
+ expect {
33
+ subject.processor("xxx")
34
+ }.to raise_error(Vidibus::Fileinfo::UnsupportedFormatError)
35
+ end
36
+ end
37
+
38
+ describe ".format" do
39
+ it "should require a path" do
40
+ expect {subject.format}.to raise_error(ArgumentError)
41
+ end
42
+
43
+ it "should return the format of a given file path" do
44
+ subject.format("/my/face.jpg").should eql("jpg")
45
+ end
46
+
47
+ it "should return the format in lower case" do
48
+ subject.format("/my/face.JPG").should eql("jpg")
49
+ end
50
+
51
+ it "should raise an error if no format can be detected" do
52
+ expect {
53
+ subject.format("/my/face")
54
+ }.to raise_error(Vidibus::Fileinfo::NoFormatError)
55
+ end
56
+ end
57
+
58
+ describe ".bytes" do
59
+ it "should require a value" do
60
+ expect {subject.bytes}.to raise_error(ArgumentError)
61
+ end
62
+
63
+ it "should return input number" do
64
+ subject.bytes(1).should eql(1)
65
+ end
66
+
67
+ it "should return a rounded input float" do
68
+ subject.bytes(1.5).should eql(2)
69
+ end
70
+
71
+ it "should parse '18942'" do
72
+ subject.bytes("18942").should eql(18942)
73
+ end
74
+
75
+ it "should parse '135 B'" do
76
+ subject.bytes("135 B").should eql(135)
77
+ end
78
+
79
+ it "should parse '1 kB'" do
80
+ subject.bytes("1 kB").should eql(1024)
81
+ end
82
+
83
+ it "should parse '2KB'" do
84
+ subject.bytes("2KB").should eql(2048)
85
+ end
86
+
87
+ it "should parse '2.4k'" do
88
+ subject.bytes("2.4k").should eql(2458)
89
+ end
90
+
91
+ it "should parse '0.23 MB'" do
92
+ subject.bytes("0.23 MB").should eql(241172)
93
+ end
94
+
95
+ it "should parse '5 M'" do
96
+ subject.bytes("5 M").should eql(5242880)
97
+ end
98
+
99
+ it "should parse '1.4gb'" do
100
+ subject.bytes("1.4482gb").should eql(1554992910)
101
+ end
102
+
103
+ it "should parse '4G'" do
104
+ subject.bytes("4G").should eql(4294967296)
105
+ end
106
+
107
+ it "should parse '0.0002 TB'" do
108
+ subject.bytes("0.0002 TB").should eql(219902326)
109
+ end
110
+
111
+ it "should parse '4t'" do
112
+ subject.bytes("4t").should eql(4398046511104)
113
+ end
114
+
115
+ it "should raise an error for unsupported values" do
116
+ expect {subject.bytes([4.5])}.to raise_error(ArgumentError)
117
+ end
118
+
119
+ it "should raise an error for unsupported units" do
120
+ expect {subject.bytes("5.2 flop/s")}.to raise_error(Vidibus::Fileinfo::UnitError)
121
+ end
122
+ end
123
+ end
124
+
125
+ describe "Fileinfo" do
126
+ it "should be a shorthand for Vidibus::Fileinfo::Base.new and return file data" do
127
+ mock(Vidibus::Fileinfo::Base).new("/my/face.jpg") {OpenStruct.new}
128
+ stub.any_instance_of(OpenStruct).data {{:some => "thing"}}
129
+ Fileinfo("/my/face.jpg").should eql({:some => "thing"})
130
+ end
131
+ end
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path("../lib/vidibus/fileinfo/version", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "vidibus-fileinfo"
6
+ s.version = Vidibus::Fileinfo::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = "Andre Pankratz"
9
+ s.email = "andre@vidibus.com"
10
+ s.homepage = "https://github.com/vidibus/vidibus-fileinfo"
11
+ s.summary = "Returns information about an image or video file."
12
+ s.description = "Gets width, height, bits and other figures."
13
+
14
+ s.required_rubygems_version = ">= 1.3.6"
15
+ s.rubyforge_project = "vidibus-fileinfo"
16
+
17
+ s.add_dependency "actionpack", "~> 3.0.4"
18
+ s.add_dependency "vidibus-core_extensions"
19
+ s.add_dependency "open4"
20
+ s.add_dependency "newbamboo-rvideo"
21
+
22
+ s.add_development_dependency "bundler", ">= 1.0.0"
23
+ s.add_development_dependency "rake"
24
+ s.add_development_dependency "rspec", "~> 2.0.0.beta.20"
25
+ s.add_development_dependency "rr"
26
+ s.add_development_dependency "relevance-rcov"
27
+
28
+ s.files = `git ls-files`.split("\n")
29
+ s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
30
+ s.require_path = 'lib'
31
+ end
metadata ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vidibus-fileinfo
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Andre Pankratz
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-09 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: actionpack
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 4
34
+ version: 3.0.4
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: vidibus-core_extensions
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :runtime
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: open4
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :runtime
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: newbamboo-rvideo
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :runtime
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: bundler
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 23
88
+ segments:
89
+ - 1
90
+ - 0
91
+ - 0
92
+ version: 1.0.0
93
+ type: :development
94
+ version_requirements: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: rake
97
+ prerelease: false
98
+ requirement: &id006 !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ hash: 3
104
+ segments:
105
+ - 0
106
+ version: "0"
107
+ type: :development
108
+ version_requirements: *id006
109
+ - !ruby/object:Gem::Dependency
110
+ name: rspec
111
+ prerelease: false
112
+ requirement: &id007 !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ hash: 62196427
118
+ segments:
119
+ - 2
120
+ - 0
121
+ - 0
122
+ - beta
123
+ - 20
124
+ version: 2.0.0.beta.20
125
+ type: :development
126
+ version_requirements: *id007
127
+ - !ruby/object:Gem::Dependency
128
+ name: rr
129
+ prerelease: false
130
+ requirement: &id008 !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ hash: 3
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ type: :development
140
+ version_requirements: *id008
141
+ - !ruby/object:Gem::Dependency
142
+ name: relevance-rcov
143
+ prerelease: false
144
+ requirement: &id009 !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ type: :development
154
+ version_requirements: *id009
155
+ description: Gets width, height, bits and other figures.
156
+ email: andre@vidibus.com
157
+ executables: []
158
+
159
+ extensions: []
160
+
161
+ extra_rdoc_files: []
162
+
163
+ files:
164
+ - .gitignore
165
+ - .rspec
166
+ - Gemfile
167
+ - LICENSE
168
+ - README.rdoc
169
+ - Rakefile
170
+ - lib/vidibus-fileinfo.rb
171
+ - lib/vidibus/fileinfo.rb
172
+ - lib/vidibus/fileinfo/base.rb
173
+ - lib/vidibus/fileinfo/processor/image.rb
174
+ - lib/vidibus/fileinfo/processor/video.rb
175
+ - lib/vidibus/fileinfo/version.rb
176
+ - spec/files/Jim-Marshall.jpg
177
+ - spec/files/RevAppTest.mp4
178
+ - spec/spec_helper.rb
179
+ - spec/support/files.rb
180
+ - spec/support/stubs.rb
181
+ - spec/vidibus/fileinfo/base_spec.rb
182
+ - spec/vidibus/fileinfo/processor/image_spec.rb
183
+ - spec/vidibus/fileinfo/processor/video_spec.rb
184
+ - spec/vidibus/fileinfo_spec.rb
185
+ - vidibus-fileinfo.gemspec
186
+ has_rdoc: true
187
+ homepage: https://github.com/vidibus/vidibus-fileinfo
188
+ licenses: []
189
+
190
+ post_install_message:
191
+ rdoc_options: []
192
+
193
+ require_paths:
194
+ - lib
195
+ required_ruby_version: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ hash: 3
201
+ segments:
202
+ - 0
203
+ version: "0"
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
+ none: false
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ hash: 23
210
+ segments:
211
+ - 1
212
+ - 3
213
+ - 6
214
+ version: 1.3.6
215
+ requirements: []
216
+
217
+ rubyforge_project: vidibus-fileinfo
218
+ rubygems_version: 1.3.7
219
+ signing_key:
220
+ specification_version: 3
221
+ summary: Returns information about an image or video file.
222
+ test_files: []
223
+