airplay-cli 0.1.0.beta4 → 0.1.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.
- data/bin/air +26 -16
- data/lib/airplay/cli.rb +32 -55
- metadata +7 -7
data/bin/air
CHANGED
@@ -2,26 +2,36 @@
|
|
2
2
|
|
3
3
|
require "clap"
|
4
4
|
require "airplay/cli"
|
5
|
+
require "airplay/cli/version"
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
begin
|
8
|
+
Clap.run ARGV,
|
9
|
+
"--device" => lambda { |device_name| @device = Airplay[device_name] },
|
10
|
+
"--wait" => lambda { |sec| @wait = sec.to_i },
|
11
|
+
"--interactive" => lambda { @interactive = true },
|
10
12
|
|
11
|
-
|
13
|
+
"list" => Airplay::CLI.method(:list),
|
12
14
|
|
13
|
-
|
14
|
-
options = { device: @device || Airplay.devices.first }
|
15
|
-
Airplay::CLI.play(video, options)
|
16
|
-
},
|
15
|
+
"version" => lambda { puts Airplay::CLI::VERSION },
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
"play" => lambda { |video|
|
18
|
+
options = { device: @device || Airplay.devices.first }
|
19
|
+
Airplay::CLI.play(video, options)
|
20
|
+
},
|
21
|
+
|
22
|
+
"view" => lambda { |file|
|
23
|
+
options = {
|
24
|
+
device: @device || Airplay.devices.first,
|
25
|
+
interactive: @interactive || false,
|
26
|
+
wait: @wait || 3
|
27
|
+
}
|
28
|
+
Airplay::CLI.view(file, options)
|
23
29
|
}
|
24
|
-
|
25
|
-
|
30
|
+
|
31
|
+
rescue Airplay::Browser::NoDevicesFound
|
32
|
+
puts "No devices found."
|
33
|
+
rescue Interrupt
|
34
|
+
puts "Bye!"
|
35
|
+
end
|
26
36
|
|
27
37
|
# vim: ft=ruby
|
data/lib/airplay/cli.rb
CHANGED
@@ -1,9 +1,18 @@
|
|
1
|
-
require "airplay"
|
2
1
|
require "ruby-progressbar"
|
2
|
+
require "airplay"
|
3
|
+
require "airplay/cli/image_viewer"
|
3
4
|
|
5
|
+
# Public: Airplay core module
|
6
|
+
#
|
4
7
|
module Airplay
|
8
|
+
# Public: Airplay CLI module
|
9
|
+
#
|
5
10
|
module CLI
|
6
11
|
class << self
|
12
|
+
# Public: Lists all the devices to STDOUT
|
13
|
+
#
|
14
|
+
# Returns nothing.
|
15
|
+
#
|
7
16
|
def list
|
8
17
|
Airplay.devices.each do |device|
|
9
18
|
puts <<-EOS.gsub(/^\s{12}/,'')
|
@@ -15,6 +24,14 @@ module Airplay
|
|
15
24
|
end
|
16
25
|
end
|
17
26
|
|
27
|
+
# Public: Plays a video given a device
|
28
|
+
#
|
29
|
+
# video - The url or file path to the video
|
30
|
+
# options - Options that include the device
|
31
|
+
# * device: The device in which it should run
|
32
|
+
#
|
33
|
+
# Returns nothing.
|
34
|
+
#
|
18
35
|
def play(video, options)
|
19
36
|
device = options[:device]
|
20
37
|
player = device.play(video)
|
@@ -31,74 +48,34 @@ module Airplay
|
|
31
48
|
player.wait
|
32
49
|
end
|
33
50
|
|
51
|
+
# Public: Show an image given a device
|
52
|
+
#
|
53
|
+
# file_or_dir - The url, file path or folder path to the image/s
|
54
|
+
# options - Options that include the device
|
55
|
+
# * device: The device in which it should run
|
56
|
+
# * interactive: Boolean flag to control playback with the
|
57
|
+
# arrow keys
|
58
|
+
#
|
59
|
+
# Returns nothing.
|
60
|
+
#
|
34
61
|
def view(file_or_dir, options)
|
35
62
|
device = options[:device]
|
36
|
-
|
63
|
+
viewer = ImageViewer.new(device, options)
|
37
64
|
|
38
65
|
if File.directory?(file_or_dir)
|
39
66
|
files = Dir.glob("#{file_or_dir}/*")
|
40
67
|
|
41
68
|
if options[:interactive]
|
42
|
-
|
69
|
+
viewer.interactive(files)
|
43
70
|
else
|
44
|
-
|
71
|
+
viewer.slideshow(files)
|
45
72
|
end
|
46
73
|
else
|
47
|
-
|
74
|
+
viewer.view(file_or_dir)
|
48
75
|
sleep
|
49
76
|
end
|
50
77
|
end
|
51
78
|
|
52
|
-
private
|
53
|
-
|
54
|
-
def view_interactive(files)
|
55
|
-
numbers = Array(0...files.count)
|
56
|
-
transition = "None"
|
57
|
-
|
58
|
-
i = 0
|
59
|
-
loop do
|
60
|
-
view_image(device, files[i], transition)
|
61
|
-
|
62
|
-
case read_char
|
63
|
-
# Right Arrow
|
64
|
-
when "\e[C"
|
65
|
-
i = i + 1 > numbers.count - 1 ? 0 : i + 1
|
66
|
-
transition = "SlideLeft"
|
67
|
-
when "\e[D"
|
68
|
-
i = i - 1 < 0 ? numbers.count - 1 : i - 1
|
69
|
-
transition = "SlideRight"
|
70
|
-
else
|
71
|
-
break
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def view_slideshow(files)
|
77
|
-
files.each do |file|
|
78
|
-
view_image(device, file)
|
79
|
-
sleep wait
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def read_char
|
84
|
-
STDIN.echo = false
|
85
|
-
STDIN.raw!
|
86
|
-
|
87
|
-
input = STDIN.getc.chr
|
88
|
-
if input == "\e" then
|
89
|
-
input << STDIN.read_nonblock(3) rescue nil
|
90
|
-
input << STDIN.read_nonblock(2) rescue nil
|
91
|
-
end
|
92
|
-
ensure
|
93
|
-
STDIN.echo = true
|
94
|
-
STDIN.cooked!
|
95
|
-
|
96
|
-
return input
|
97
|
-
end
|
98
|
-
|
99
|
-
def view_image(device, image, transition = "SlideLeft")
|
100
|
-
device.view(image, transition: transition)
|
101
|
-
end
|
102
79
|
end
|
103
80
|
end
|
104
81
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airplay-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- elcuervo
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: airplay
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.0.0
|
21
|
+
version: 1.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.0.0
|
29
|
+
version: 1.0.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: clap
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,9 +86,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
87
|
none: false
|
88
88
|
requirements:
|
89
|
-
- - ! '
|
89
|
+
- - ! '>='
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version:
|
91
|
+
version: '0'
|
92
92
|
requirements: []
|
93
93
|
rubyforge_project:
|
94
94
|
rubygems_version: 1.8.23
|