vtools 0.0.1 → 0.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.
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 ]