pecari 0.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3ca21931154f29ca1056d8436fcae412d6bb20df
4
+ data.tar.gz: 8dc2e96daacbb539cf3bf1b4933aba4e6c4d84e4
5
+ SHA512:
6
+ metadata.gz: 56e60f3d12694fe7559a30cdce765776c8b3a6da6c61e4924decb32fec45658ee5cbf771692a7b465760bad9741f79f157828a31fd2b2130589083b22268f9a5
7
+ data.tar.gz: 6ac28eb6c3c8400a67edb65a35357b1cdbace21d997cf8e6b41262002cae4fa94d25d3b6fda72a90c679ca697fc01390f78d3628811a32483638e0786f433107
data/lib/pecari/env.rb ADDED
@@ -0,0 +1,15 @@
1
+ module Pecari
2
+
3
+ module Env
4
+
5
+ def self.display
6
+ 'export DISPLAY=:0'
7
+ end
8
+
9
+ def self.package_installed?(package)
10
+ `dpkg -l | grep #{package} | awk '{print $3}'`.size > 0
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,26 @@
1
+ module Pecari
2
+
3
+ module PidKiller
4
+
5
+ def self.kill_all_omx_processes
6
+ kill_pids(omx_pids)
7
+ end
8
+
9
+ def self.omx_pids
10
+ `ps aux | grep omxplayer | awk '{print $2}'`.split("\n")
11
+ end
12
+
13
+ def self.kill_pids(pids)
14
+ pids.each do |pid|
15
+ begin
16
+ Process.kill('KILL', pid.to_i)
17
+ rescue
18
+ #Rails.logger.info("Could not kill process: #{pid}")
19
+ #Rails.logger.info("Process info: #{`ps -p #{pid} -o comm=`}")
20
+ end
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,90 @@
1
+ module Pecari
2
+
3
+ module Player
4
+
5
+ def self.launch(video)
6
+ check_dependencies
7
+ command = "#{Pecari::Env.display} && xterm -e 'xterm -fullscreen -fg black -bg black -e omxplayer -o hdmi #{video}' &"
8
+ fork do
9
+ exec command
10
+ end
11
+ end
12
+
13
+ def self.play_pause
14
+ check_dependencies
15
+ `#{Pecari::Env.display} && xdotool windowactivate #{omx_window} && xdotool key p`
16
+ end
17
+
18
+ def self.quit
19
+ check_dependencies
20
+ `#{Pecari::Env.display} && xdotool windowactivate #{omx_window} && xdotool key q`
21
+ end
22
+
23
+ def self.volume_up
24
+ check_dependencies
25
+ `#{Pecari::Env.display} && xdotool windowactivate #{omx_window} && xdotool key plus`
26
+ end
27
+
28
+ def self.volume_down
29
+ check_dependencies
30
+ `#{Pecari::Env.display} && xdotool windowactivate #{omx_window} && xdotool key minus`
31
+ end
32
+
33
+ def self.seek_forward
34
+ check_dependencies
35
+ `#{Pecari::Env.display} && xdotool windowactivate #{omx_window} && xdotool key Right`
36
+ end
37
+
38
+ def self.seek_backward
39
+ check_dependencies
40
+ `#{Pecari::Env.display} && xdotool windowactivate #{omx_window} && xdotool key Left`
41
+ end
42
+
43
+ def self.exit
44
+ Pecari::PidKiller.kill_all_omx_processes
45
+ end
46
+
47
+ private
48
+
49
+ def self.omx_window
50
+ Pecari::WindowInfo.omx_info
51
+ end
52
+
53
+ def self.check_dependencies
54
+ raise UnavailableXDoToolError unless xdotool_installed?
55
+ raise UnavailableOMXPlayerError unless omxplayer_installed?
56
+ end
57
+
58
+ def self.xdotool_installed?
59
+ Pecari::Env.package_installed?('xdotool')
60
+ end
61
+
62
+ def self.omxplayer_installed?
63
+ Pecari::Env.package_installed?('omxplayer')
64
+ end
65
+
66
+ end
67
+
68
+ end
69
+
70
+ class UnavailableXDoToolError < StandardError
71
+
72
+ def message
73
+ <<-EOF
74
+ Cannot find xdotool on you system. Try installing it with this commend:
75
+ "sudo apt-get install xdotool"
76
+ EOF
77
+ end
78
+
79
+ end
80
+
81
+ class UnavailableOMXPlayerError < StandardError
82
+
83
+ def message
84
+ <<-EOF
85
+ Cannot find omxplayer on you system. Try installing it with this commend:
86
+ "sudo apt-get install omxplayer"
87
+ EOF
88
+ end
89
+
90
+ end
@@ -0,0 +1,24 @@
1
+ module Pecari
2
+
3
+ module WindowInfo
4
+
5
+ def self.omx_info
6
+ all_windows.select do |window|
7
+ window_info(window).include? 'WM_NAME(STRING) = "omxplayer"'
8
+ end.first
9
+ end
10
+
11
+ def self.all_windows
12
+ results = `#{Pecari::Env.display} && xprop -root | grep _NET_CLIENT_LIST_STACKING\\(WINDOW\\)`
13
+ results.gsub('_NET_CLIENT_LIST_STACKING(WINDOW): window id #', '')
14
+ .split(', ')
15
+ .map{ |r| r.strip }
16
+ end
17
+
18
+ def self.window_info(window)
19
+ `#{Pecari::Env.display} && xprop -id #{window}`
20
+ end
21
+
22
+ end
23
+
24
+ end
data/lib/pecari.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'pecari/player'
2
+ require 'pecari/window_info'
3
+ require 'pecari/env'
4
+ require 'pecari/pid_killer'
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pecari
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Carlos Chacon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-25 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Interface between Ruby and Omxplayer which implements basic playback
14
+ features.
15
+ email: caedo.00@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/pecari.rb
21
+ - lib/pecari/env.rb
22
+ - lib/pecari/pid_killer.rb
23
+ - lib/pecari/player.rb
24
+ - lib/pecari/window_info.rb
25
+ homepage: http://github.com/caedocha/pecari
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.4.6
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Interface between Ruby and Omxplayer.
49
+ test_files: []