pecari 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []