vtools 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # VTools
2
2
 
3
- Daemon video processor tools to operate the video (get info, encode & generate thumbnails).
3
+ Daemon tools to operate the video (get info, encode & generate thumbnails).
4
4
  Under the hood ffmpeg & ffmpegthumbnailer are used.
5
5
  Some ideas has been taken at the streamio-ffmpeg gem (parse output methods).
6
6
 
@@ -10,13 +10,13 @@ Project was developed for the [WebTV](http://web.tv)
10
10
 
11
11
  (sudo) gem install vtools
12
12
 
13
- Please read changelog to check ffmpeg versions compatibility.
13
+ Please read changelog to check ffmpeg versions compatibility (vtools understands 0.7 & 0.8).
14
14
 
15
15
  ## Usage
16
16
 
17
17
  ### Getting started
18
18
 
19
- Before start, daemon should be correctly configured, to have valid access to the storage.
19
+ Before start, daemon should be configured correctly, to have valid access to the storage.
20
20
  Mandatory methods are: **connect**, **recv** and **send**.
21
21
 
22
22
  ``` ruby
@@ -82,7 +82,7 @@ thumbnailer (ffmpegthumbnailer)
82
82
 
83
83
  ## Start
84
84
 
85
- To launch daemon is enough to require library with storage setup:
85
+ To launch daemon - is enough to require library with storage setup:
86
86
  (sudo) vtools start -- -r library
87
87
 
88
88
  ## Options
@@ -116,6 +116,7 @@ It accepts file name and should return relative path (excluding file name itself
116
116
  # path generator (used to )
117
117
  VTools.path_generator do |file_name|
118
118
  # ..
119
+ "#{file_name[0..2]}/{file_name[2..4]}"
119
120
  end
120
121
 
121
122
  ```
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ require "vtools/version"
8
8
  spec = Gem::Specification.new do |s|
9
9
  s.name = "vtools"
10
10
  s.summary = "Daemon tools to operate the video (get info, encode & generate thumbnails)."
11
- s.description = File.read(File.join(File.dirname(__FILE__), 'README.md'))
11
+ s.description = "Daemon tools to operate the video (get info, encode & generate thumbnails)."
12
12
  s.extensions = 'extconf.rb'
13
13
  s.version = VTools::VERSION.join('.')
14
14
  s.requirements = ['ffmpeg v >= 1.8', 'ffmpegthumbnailer v >= 2', 'gem Daemons v >= 1.1.4']
@@ -26,4 +26,4 @@ spec = Gem::Specification.new do |s|
26
26
  s.add_development_dependency 'rspec'
27
27
  end
28
28
 
29
- Rake::GemPackageTask.new(spec).define
29
+ Rake::GemPackageTask.new(spec).define
@@ -2,8 +2,9 @@
2
2
 
3
3
  Library can be required via `-r` option
4
4
 
5
- $ vtools start -- -r library
6
- $ vtools start -- -r library.rb
5
+ $ vtools start -- -r library
6
+
7
+ $ vtools start -- -r library.rb
7
8
 
8
9
  ```ruby
9
10
  # -*- encoding: binary -*-
@@ -106,4 +107,4 @@ VTools::Handler.collection do
106
107
  print "(#{video.name}) <------ job |finished | {#{video}} :: scope: #{action}\n"
107
108
  end
108
109
  end
109
- ```
110
+ ```
@@ -37,7 +37,6 @@ module VTools
37
37
  return value
38
38
  end
39
39
 
40
- # to string method
41
40
  def to_s
42
41
 
43
42
  params = collect do |key, value|
@@ -6,7 +6,6 @@ module VTools
6
6
  class Converter
7
7
  include SharedMethods
8
8
 
9
- # constructor
10
9
  def initialize video
11
10
  @video = video
12
11
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  module VTools
4
4
 
5
- # callback handler
6
- # allows to execute external script callbacks
7
- # multiple callbacs in one placeholder are allowed
5
+ # hooks handler
6
+ # allows to execute hooks from external script
7
+ # multiple hooks in one placeholder are allowed
8
8
  #
9
9
  # usage:
10
10
  # Handler.set :placeholder_name, &block
@@ -19,14 +19,14 @@ module VTools
19
19
  @callbacks = {}
20
20
 
21
21
  class << self
22
- # callbacks setter
22
+ # hooks setter
23
23
  def set action, &block
24
24
  action = action.to_sym
25
25
  @callbacks[action] = [] unless @callbacks[action].is_a? Array
26
26
  @callbacks[action] << block if block_given?
27
27
  end
28
28
 
29
- # pending callbacks exectuion
29
+ # pending hooks exectuion
30
30
  def exec action, *args
31
31
  action = action.to_sym
32
32
  @callbacks[action].each do |block|
@@ -6,7 +6,6 @@ module VTools
6
6
  class Job
7
7
  attr_reader :video, :id
8
8
 
9
- # constructor
10
9
  def initialize config
11
10
  @id = self.object_id.to_i
12
11
  @config = validate config
@@ -15,7 +14,7 @@ module VTools
15
14
 
16
15
  # execute job
17
16
  def execute
18
- # start callback
17
+ # start hook
19
18
  Handler.exec :job_started, @video, @config.action
20
19
 
21
20
  result = @video.get_info # we always get info
@@ -27,7 +26,7 @@ module VTools
27
26
  result = @video.create_thumbs @config.setup # will return thumbs array
28
27
  end
29
28
 
30
- # final callbacks
29
+ # final hook
31
30
  Handler.exec :job_finished, result, @video, @config.action
32
31
  result
33
32
  end
@@ -43,6 +42,5 @@ module VTools
43
42
  end
44
43
  options
45
44
  end
46
-
47
45
  end # Job
48
46
  end # VTools
@@ -10,19 +10,19 @@ module VTools
10
10
 
11
11
  class << self
12
12
 
13
- # constructor (cretes connection)
13
+ # creates connection
14
14
  def connect
15
15
  fails __method__ unless @actions[:connect]
16
16
  @actions[:connect].call
17
17
  end
18
18
 
19
- # recv basic method
19
+ # receive basic method
20
20
  def recv
21
21
  fails __method__ unless @actions[:recv]
22
22
  @actions[:recv].call
23
23
  end
24
24
 
25
- # send masic method
25
+ # send basic method
26
26
  def send data
27
27
  fails __method__ unless @actions[:send]
28
28
  @actions[:send].call(data)
@@ -33,7 +33,7 @@ module VTools
33
33
  @actions[:connect] = block
34
34
  end
35
35
 
36
- # callback setter to recieve data
36
+ # callback setter to receive data
37
37
  def recv_action &block
38
38
  @actions[:recv] = block
39
39
  end
@@ -59,7 +59,6 @@ module VTools
59
59
  private
60
60
  # errors generator
61
61
  def fails meth
62
- p "fails orig: #{meth}"
63
62
  raise NotImplementedError, "VTools::Storage##{meth}_action must be set"
64
63
  end
65
64
  end # class << self
@@ -7,7 +7,6 @@ module VTools
7
7
  class Thumbnailer
8
8
  include SharedMethods
9
9
 
10
- # constructor
11
10
  def initialize video
12
11
  @video = video
13
12
  end
@@ -6,7 +6,6 @@ module VTools
6
6
  class ThumbsOptions < Hash
7
7
  include SharedMethods
8
8
 
9
- # constructor
10
9
  def initialize options = {}
11
10
 
12
11
  @ignore = [:thumb_count, :thumb_start_point, :quality, :width, :time, :postfix]
@@ -36,7 +35,6 @@ module VTools
36
35
  value
37
36
  end
38
37
 
39
- # to string
40
38
  def to_s
41
39
  params = collect do |key, value|
42
40
  "-#{key} #{value}" unless @ignore.include?(key)
@@ -2,5 +2,5 @@
2
2
 
3
3
  # current version
4
4
  module VTools
5
- VERSION = [ 0, 0, 1 ]
5
+ VERSION = [ 0, 0, 2 ]
6
6
  end
@@ -11,7 +11,6 @@ module VTools
11
11
  :audio_sample_rate,
12
12
  :convert_options, :thumbs_options
13
13
 
14
- # json generator
15
14
  def to_json(*args)
16
15
  ignore = [:@convert_options, :@thumbs_options, :@converter, :@thumbnailer, :@uncertain_duration, :invalid]
17
16
 
@@ -24,7 +23,6 @@ module VTools
24
23
  hsh.to_json(*args)
25
24
  end
26
25
 
27
- # constructor
28
26
  def initialize path
29
27
 
30
28
  @invalid = true
@@ -97,8 +95,7 @@ module VTools
97
95
 
98
96
  self
99
97
  end
100
-
101
- # define if is valid video file
98
+
102
99
  def valid?
103
100
  not @invalid
104
101
  end
@@ -108,17 +105,15 @@ module VTools
108
105
  @uncertain_duration
109
106
  end
110
107
 
111
- # width getter
112
108
  def width
113
109
  resolution.split("x").first.to_i rescue nil
114
110
  end
115
111
 
116
- # height getter
117
112
  def height
118
113
  resolution.split("x").last.to_i rescue nil
119
114
  end
120
115
 
121
- # aspect ratio getter
116
+ # aspect ratio calculator
122
117
  def calculated_aspect_ratio
123
118
  if dar
124
119
  w, h = dar.split(":")
@@ -134,7 +129,7 @@ module VTools
134
129
  File.size(@path)
135
130
  end
136
131
 
137
- # audio channels getter
132
+ # valid audio channels index
138
133
  def audio_channels
139
134
  return nil unless @audio_channels
140
135
  return @audio_channels[/\d*/].to_i if @audio_channels["channels"]
@@ -143,7 +138,6 @@ module VTools
143
138
  return 6 if @audio_channels["5.1"]
144
139
  end
145
140
 
146
- # frame rate getter
147
141
  def frame_rate
148
142
  video_stream[/(\d*\.?\d*)\s?fps/] ? $1.to_f : nil
149
143
  end
@@ -71,7 +71,7 @@ describe VTools::ConvertOptions do
71
71
  context "#to_s" do
72
72
 
73
73
  # skps ignored values
74
- it "reates valid string representation" do
74
+ it "creates valid string representation" do
75
75
 
76
76
  # still empty
77
77
  @options.to_s.should == ""
@@ -68,7 +68,7 @@ describe VTools::ThumbsOptions do
68
68
 
69
69
  # [:thumb_count, :thumb_start_point, :quality, :width, :time, :postfix]
70
70
  # skps ignored values
71
- it "reates valid string representation" do
71
+ it "creates valid string representation" do
72
72
 
73
73
  # still empty
74
74
  @options.to_s.should == ""
@@ -249,7 +249,7 @@ describe VTools::Video do
249
249
 
250
250
  context "#initialize" do
251
251
 
252
- it "crates instance valid" do
252
+ it "creates instance valid" do
253
253
  VTools::CONFIG[:PWD] = "/root"
254
254
  File.stub!(:exists?) { true }
255
255
  VTools::Converter.stub!(:new) { nil }
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
 
8
8
  s.name = "vtools"
9
9
  s.summary = "Daemon tools to operate the video (get info, encode & generate thumbnails)."
10
- s.description = File.read(File.join(File.dirname(__FILE__), 'README.md'))
10
+ s.description = "Daemon tools to operate the video (get info, encode & generate thumbnails)."
11
11
 
12
12
  s.extensions = 'extconf.rb'
13
13
  s.requirements = ['ffmpeg v >= 1.8', 'ffmpegthumbnailer v >= 2', 'gem Daemons v >= 1.1.4']
metadata CHANGED
@@ -1,93 +1,75 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: vtools
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - tofir
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-11-23 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2011-11-23 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: daemons
16
- requirement: &79101960 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 27
29
+ segments:
30
+ - 1
31
+ - 1
32
+ - 4
21
33
  version: 1.1.4
22
34
  type: :runtime
23
- prerelease: false
24
- version_requirements: *79101960
25
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
26
37
  name: json
27
- requirement: &79101770 !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
28
40
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
33
48
  type: :runtime
34
- prerelease: false
35
- version_requirements: *79101770
36
- - !ruby/object:Gem::Dependency
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
37
51
  name: rspec
38
- requirement: &79101540 !ruby/object:Gem::Requirement
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
39
54
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
44
62
  type: :development
45
- prerelease: false
46
- version_requirements: *79101540
47
- description: ! "# VTools\n\nDaemon video processor tools to operate the video (get
48
- info, encode & generate thumbnails).\nUnder the hood ffmpeg & ffmpegthumbnailer
49
- are used.\nSome ideas has been taken at the streamio-ffmpeg gem (parse output methods).\n\nProject
50
- was developed for the [WebTV](http://web.tv)\n\n## Installation\n\n (sudo) gem
51
- install vtools\n\nPlease read changelog to check ffmpeg versions compatibility.\n\n##
52
- Usage\n\n### Getting started\n\nBefore start, daemon should be correctly configured,
53
- to have valid access to the storage.\nMandatory methods are: **connect**, **recv**
54
- and **send**.\n\n``` ruby\n#--file library.rb--#\n# encoding: binary\n\n#to setup
55
- storage:\nVTools::Storage.setup do\n\n # connection setup\n connect_action do\n
56
- \ # ... connect to the storage (persistent)\n end\n\n # message reciever\n #
57
- should return JSON encoded string\n # see complete storage setup reference for
58
- details\n recv_action do\n # ... job data recieve algorithm\n end\n\n # message
59
- sender\n # recieves hash: { :data => execution_result, :action => executed_action
60
- }\n # execution_result can be video object or array with thumbnails\n send_action
61
- do |result|\n # ... send action here\n end\nend\n\n# storage can be setup separate\nVTools::Storage.connect_action
62
- do\n # ... connect to the storage\nend\n```\n\n### Setup message (JSON)\n\n```\n{
63
- \"action\" : \"convert|thumbs|info\", \"file\" : \"path/to/file\", \"setup\" : <
64
- setup > }\n# setup can be:\n# -- \"predefined_set_id\"\n# -- { ffmpeg_options_hash
65
- }\n# -- { \"set\": \"predefined_set_str\", ffmpeg_options_hash }\n```\n\n### User
66
- friendly option names\n\n```\nconverter (ffmpeg)\n preserve_aspect (true or false)\n
67
- \ extension (result file extension)\n width, height\n resolution\n duration\n\nthumbnailer
68
- (ffmpegthumbnailer)\n thumb_count\n thumb_start_point (in percents)\n time (time
69
- offset, alias for -t)\n quality (0 - 10)\n width\n```\n\n## Start\n\nTo
70
- launch daemon is enough to require library with storage setup:\n (sudo) vtools
71
- start -- -r library\n\n## Options\n\n### Daemon options are\n start\n stop\n restart\n\n###
72
- Application options are:\n -c or --config-file - load config from file\n -r or
73
- --require - load ruby library file (can be used more than once)\n\n### To see
74
- complete options list use\n vtools --help\n\n### Using logger\n\nBy default the
75
- `logger` gem is used. But there is possibility to set custom logger, that is compatible
76
- with the default logger.\n\n``` ruby\nVTools.logger = CustomLoger.new($stdout)\n```\n\n###
77
- Additioinal methods\n\nPath generator is used by the thumnailer, converter or both
78
- to generate necessary dir tree logic for the media.\nIt accepts file name and should
79
- return relative path (excluding file name itself)\n\n``` ruby\n# path generator
80
- (used to )\nVTools.path_generator do |file_name|\n # ..\nend\n\n```\n\n**Network
81
- calls** (TCP GET request, that will return message body content, ignoring response
82
- headers)\n\n``` ruby\n\n# http calls\nVTools.network_call \"site.com/some/uri\"\nVTools.network_call
83
- \"www.site.com\"\nVTools.network_call \"http://www.site.com\"\n```\n"
63
+ version_requirements: *id003
64
+ description: Daemon tools to operate the video (get info, encode & generate thumbnails).
84
65
  email: v.tofir@gmail.com
85
- executables:
66
+ executables:
86
67
  - vtools
87
- extensions:
68
+ extensions:
88
69
  - extconf.rb
89
70
  extra_rdoc_files: []
90
- files:
71
+
72
+ files:
91
73
  - bin/vtools
92
74
  - README.md
93
75
  - Rakefile
@@ -100,7 +82,6 @@ files:
100
82
  - lib/vtools/errors.rb
101
83
  - lib/vtools/job.rb
102
84
  - lib/vtools/convert_options.rb
103
- - lib/vtools/version.rb~
104
85
  - lib/vtools/thumbnailer.rb
105
86
  - lib/vtools/shared_methods.rb
106
87
  - lib/vtools/handler.rb
@@ -136,23 +117,32 @@ files:
136
117
  - extconf.rb
137
118
  homepage: http://tofir.comuv.com
138
119
  licenses: []
120
+
139
121
  post_install_message:
140
122
  rdoc_options: []
141
- require_paths:
123
+
124
+ require_paths:
142
125
  - lib
143
- required_ruby_version: !ruby/object:Gem::Requirement
126
+ required_ruby_version: !ruby/object:Gem::Requirement
144
127
  none: false
145
- requirements:
146
- - - ! '>='
147
- - !ruby/object:Gem::Version
148
- version: '1.9'
149
- required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ hash: 29
132
+ segments:
133
+ - 1
134
+ - 9
135
+ version: "1.9"
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
137
  none: false
151
- requirements:
152
- - - ! '>='
153
- - !ruby/object:Gem::Version
154
- version: '0'
155
- requirements:
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ version: "0"
145
+ requirements:
156
146
  - ffmpeg v >= 1.8
157
147
  - ffmpegthumbnailer v >= 2
158
148
  - gem Daemons v >= 1.1.4
@@ -161,7 +151,7 @@ rubygems_version: 1.8.10
161
151
  signing_key:
162
152
  specification_version: 3
163
153
  summary: Daemon tools to operate the video (get info, encode & generate thumbnails).
164
- test_files:
154
+ test_files:
165
155
  - spec/job_spec.rb
166
156
  - spec/convert_options_spec.rb
167
157
  - spec/config_spec.rb
@@ -1,4 +0,0 @@
1
- # -*- encoding: binary -*-
2
-
3
- # current version
4
- VTools::VERSION = [ 0, 0, 1 ]