airplayer 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9961c626699ec09d19a716b04a1c8d10f4c4bf92
4
+ data.tar.gz: a24414ac35c5120ce549ce1bfd486f2da4207d25
5
+ SHA512:
6
+ metadata.gz: 11f160a728c70b0f995491cefecf3541dc502d628ad1a3d162b8f13b500a7c75ee096caef50b50047626d37be1df6ea8e5619cade283692fe2450f5463206030
7
+ data.tar.gz: 14d4b8638285aa5681ec7e74d9b0df912139cd4c5b94de1fa59326bc5e71e635731a419ab53e5349fc1b821fdc3e1038183f200e7df09315c52918baefb8ad16
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- airplayer (0.0.6)
5
- airplay
4
+ airplayer (0.0.7)
5
+ airplay (~> 0.2.9)
6
6
  mime-types
7
7
  nokogiri
8
8
  rack
@@ -19,37 +19,37 @@ GEM
19
19
  coderay (1.0.8)
20
20
  diff-lcs (1.1.3)
21
21
  dnssd (2.0)
22
- guard (1.5.4)
23
- listen (>= 0.4.2)
22
+ guard (1.6.1)
23
+ listen (>= 0.6.0)
24
24
  lumberjack (>= 1.0.2)
25
25
  pry (>= 0.9.10)
26
26
  thor (>= 0.14.6)
27
- guard-rspec (2.3.0)
27
+ guard-rspec (2.4.0)
28
28
  guard (>= 1.1)
29
29
  rspec (~> 2.11)
30
- listen (0.6.0)
30
+ listen (0.7.2)
31
31
  lumberjack (1.0.2)
32
32
  method_source (0.8.1)
33
33
  mime-types (1.19)
34
34
  net-http-digest_auth (1.2.1)
35
35
  net-http-persistent (2.8)
36
- nokogiri (1.5.5)
37
- pry (0.9.10)
36
+ nokogiri (1.5.6)
37
+ pry (0.9.11.3)
38
38
  coderay (~> 1.0.5)
39
39
  method_source (~> 0.8)
40
- slop (~> 3.3.1)
41
- rack (1.4.1)
42
- rake (10.0.2)
40
+ slop (~> 3.4)
41
+ rack (1.4.4)
42
+ rake (10.0.3)
43
43
  rspec (2.12.0)
44
44
  rspec-core (~> 2.12.0)
45
45
  rspec-expectations (~> 2.12.0)
46
46
  rspec-mocks (~> 2.12.0)
47
- rspec-core (2.12.1)
48
- rspec-expectations (2.12.0)
47
+ rspec-core (2.12.2)
48
+ rspec-expectations (2.12.1)
49
49
  diff-lcs (~> 1.1.3)
50
- rspec-mocks (2.12.0)
50
+ rspec-mocks (2.12.1)
51
51
  ruby-progressbar (1.0.2)
52
- slop (3.3.3)
52
+ slop (3.4.3)
53
53
  thor (0.16.0)
54
54
 
55
55
  PLATFORMS
@@ -57,6 +57,7 @@ PLATFORMS
57
57
 
58
58
  DEPENDENCIES
59
59
  airplayer!
60
+ bundler
60
61
  guard-rspec
61
62
  rake
62
63
  rspec
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 Tomohiro, TAIRA
1
+ Copyright (c) 2012 - 2013 Tomohiro TAIRA
2
2
 
3
3
  MIT License
4
4
 
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
19
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
20
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
21
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,12 +1,11 @@
1
- AirPlayer
1
+ AirPlayer [![Gem Version](https://badge.fury.io/rb/airplayer.png)](http://badge.fury.io/rb/airplayer) [![Stillmaintained](http://stillmaintained.com/Tomohiro/airplayer.png)](http://stillmaintained.com/Tomohiro/airplayer)
2
2
  ================================================================================
3
3
 
4
4
  Command-line AirPlay video client for Apple TV
5
5
 
6
- [![Build Status](https://secure.travis-ci.org/Tomohiro/airplayer.png)](https://secure.travis-ci.org/Tomohiro/airplayer)
6
+ [![Build Status](https://travis-ci.org/Tomohiro/airplayer.png?branch=master)](https://travis-ci.org/Tomohiro/airplayer)
7
7
  [![Dependency Status](https://gemnasium.com/Tomohiro/airplayer.png)](https://gemnasium.com/Tomohiro/airplayer)
8
- [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/Tomohiro/airplayer)
9
- [![endorse](http://api.coderwall.com/tomohiro/endorsecount.png)](http://coderwall.com/tomohiro)
8
+ [![Code Climate](https://codeclimate.com/github/Tomohiro/airplayer.png)](https://codeclimate.com/github/Tomohiro/airplayer)
10
9
 
11
10
 
12
11
  ---
@@ -16,8 +15,9 @@ Requirements
16
15
  -------------------------------------------------------------------------------
17
16
 
18
17
  - OSX or Ubuntu
19
- - Ruby 1.9.3 or later
18
+ - Ruby 1.9.3, 2.0.0
20
19
  - AppleTV 2G or later
20
+ - [youtube-dl](http://rg3.github.com/youtube-dl/) # If you want to watch YouTube
21
21
 
22
22
 
23
23
  ### Ubuntu
@@ -41,7 +41,7 @@ $ gem install airplayer
41
41
  ```sh
42
42
  $ git clone git://github.com/Tomohiro/airplayer.git
43
43
  $ cd airplayer
44
- $ bundle install --path vendor/bundle
44
+ $ bundle install --deployment
45
45
  ```
46
46
 
47
47
 
@@ -70,7 +70,7 @@ $ airplayer play '~/Movies/Trailers/007 SKYFALL.mp4'
70
70
  Time: 00:00:20 |===== | 11% Streaming
71
71
  ```
72
72
 
73
- ### Play all video in directory
73
+ ### Play all video in specific directory
74
74
 
75
75
  ```sh
76
76
  $ airplayer play ~/Movies/Trailers
@@ -91,7 +91,7 @@ $ airplayer play ~/Movies/Trailers
91
91
  Time: 00:02:36 |==============================================| 100% Complete
92
92
  ```
93
93
 
94
- ### Play video podcast()
94
+ ### Play video podcast XML
95
95
 
96
96
  Example: CNN video podcast
97
97
 
@@ -105,6 +105,13 @@ $ airplayer play http://rss.cnn.com/services/podcasting/cnnnewsroom/rss.xml
105
105
  ```
106
106
 
107
107
 
108
+ ### Play YouTube video
109
+
110
+ ```sh
111
+ $ airplayer play 'http://www.youtube.com/watch?v=QH2-TGUlwu4'
112
+ ```
113
+
114
+
108
115
  ### Repeat play
109
116
 
110
117
  Repeat one
@@ -127,6 +134,25 @@ $ airplayer play '~/Movies/Trailers' --shuffle
127
134
  ```
128
135
 
129
136
 
137
+ ### Select Device
138
+
139
+ If you have multiple "AirPlay" devices, specifying the device number for the following play is available on any device.
140
+
141
+ Checke the AirPlay device number
142
+
143
+ ```sh
144
+ $ airplayer devices
145
+ 0: John's Apple TV (10.0.1.2:7000) # John's Apple TV number is 0
146
+ 1: Jane's Apple TV (10.0.1.3:7000) # Jane's Apple TV number is 1
147
+ ```
148
+
149
+ Use `--device` or `-d` options
150
+
151
+ ```sh
152
+ $ airplayer play --device 1 '~/Movies/GHOST IN THE SHELL.mp4'
153
+ ```
154
+
155
+
130
156
  Supported MIME types
131
157
  --------------------------------------------------------------------------------
132
158
 
@@ -143,6 +169,6 @@ File extension | MIME type | Ruby `mime-types`
143
169
  LICENSE
144
170
  --------------------------------------------------------------------------------
145
171
 
146
- © 2012 Tomohiro, TAIRA.
172
+ © 2012 - 2013 Tomohiro TAIRA.
147
173
  This project is licensed under the MIT license.
148
174
  See LICENSE for details.
@@ -1,28 +1,31 @@
1
1
  # encoding: utf-8
2
- require File.expand_path('../lib/airplayer/version', __FILE__)
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'airplayer/version'
3
5
 
4
- Gem::Specification.new do |gem|
5
- gem.name = 'airplayer'
6
- gem.version = AirPlayer::VERSION
7
- gem.authors = ['Tomohiro, TAIRA']
8
- gem.email = ['tomohiro.t@gmail.com']
9
- gem.description = %q{Command-line AirPlay video client for Apple TV}
10
- gem.summary = %q{Command-line AirPlay video client for Apple TV}
11
- gem.homepage = 'https://github.com/Tomohiro/airplayer'
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'airplayer'
8
+ spec.version = AirPlayer::VERSION
9
+ spec.authors = ['Tomohiro, TAIRA']
10
+ spec.email = ['tomohiro.t@gmail.com']
11
+ spec.description = %q{Command-line AirPlay video client for Apple TV}
12
+ spec.summary = %q{Command-line AirPlay video client for Apple TV}
13
+ spec.homepage = 'https://github.com/Tomohiro/airplayer'
12
14
 
13
- gem.files = `git ls-files`.split($\)
14
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
15
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
16
- gem.require_paths = ['lib']
15
+ spec.files = `git ls-files`.split($\)
16
+ spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ['lib']
17
19
 
18
- gem.add_runtime_dependency 'thor'
19
- gem.add_runtime_dependency 'ruby-progressbar'
20
- gem.add_runtime_dependency 'airplay'
21
- gem.add_runtime_dependency 'rack'
22
- gem.add_runtime_dependency 'mime-types'
23
- gem.add_runtime_dependency 'nokogiri'
20
+ spec.add_runtime_dependency 'thor'
21
+ spec.add_runtime_dependency 'ruby-progressbar'
22
+ spec.add_runtime_dependency 'airplay', '~> 0.2.9'
23
+ spec.add_runtime_dependency 'rack'
24
+ spec.add_runtime_dependency 'mime-types'
25
+ spec.add_runtime_dependency 'nokogiri'
24
26
 
25
- gem.add_development_dependency 'rake'
26
- gem.add_development_dependency 'rspec'
27
- gem.add_development_dependency 'guard-rspec'
27
+ spec.add_development_dependency 'bundler'
28
+ spec.add_development_dependency 'rake'
29
+ spec.add_development_dependency 'rspec'
30
+ spec.add_development_dependency 'guard-rspec'
28
31
  end
@@ -1,11 +1,13 @@
1
1
  require 'rubygems'
2
- require 'airplayer/version'
2
+ require 'airplay'
3
3
 
4
4
  module AirPlayer
5
- autoload :Logger, 'airplayer/logger'
6
- autoload :App, 'airplayer/app'
7
- autoload :Controller, 'airplayer/controller'
8
- autoload :Server, 'airplayer/server'
9
- autoload :Playlist, 'airplayer/playlist'
10
- autoload :Media, 'airplayer/media'
5
+ require 'airplayer/version'
6
+ require 'airplayer/logger'
7
+ require 'airplayer/app'
8
+ require 'airplayer/controller'
9
+ require 'airplayer/device'
10
+ require 'airplayer/server'
11
+ require 'airplayer/playlist'
12
+ require 'airplayer/media'
11
13
  end
@@ -2,16 +2,22 @@ require 'thor'
2
2
 
3
3
  module AirPlayer
4
4
  class App < Thor
5
- desc 'play <URI|Podcast XML|FILE|DIR> [-r|--repeat] [-s|--shuffle]', 'Play video(URI or Podcast XML URI or local video file path or video directory)'
6
- method_option :repeat, :aliases => '-r', :desc => 'Repeat play', :type => :boolean
7
- method_option :shuffle, :aliases => '-s', :desc => 'Shuffle play', :type => :boolean
5
+ desc 'play <URI|PATH> [-r|--repeat] [-s|--shuffle] [-d=|--device=]', 'Play video(URI[Podcast URI, YouTube] or Path[local video file, directory])'
6
+ method_option :repeat, aliases: '-r', desc: 'Repeat play', type: :boolean
7
+ method_option :shuffle, aliases: '-s', desc: 'Shuffle play', type: :boolean
8
+ method_option :device, aliases: '-d', desc: 'Device number', type: :numeric
8
9
  def play(target)
9
10
  controller = Controller.new
10
11
  Playlist.new(options).add(target).entries do |media|
11
- controller.play(media)
12
+ controller.play(media, device: options.fetch('device', nil))
12
13
  end
13
14
  end
14
15
 
16
+ desc 'devices', 'Show AirPlay devices'
17
+ def devices
18
+ Device.new.list
19
+ end
20
+
15
21
  map '--version' => :version
16
22
  desc 'version, --version', 'Display version'
17
23
  def version
@@ -1,5 +1,4 @@
1
1
  require 'timeout'
2
- require 'airplay'
3
2
  require 'airplayer/progress_bar/base'
4
3
 
5
4
  module AirPlayer
@@ -8,7 +7,6 @@ module AirPlayer
8
7
 
9
8
  def initialize
10
9
  @airplay = Airplay::Client.new
11
- @device = @airplay.browse.first
12
10
  @player = nil
13
11
  @progressbar = nil
14
12
  @timeout = 30
@@ -16,13 +14,16 @@ module AirPlayer
16
14
  @total_sec = 0
17
15
  @current_sec = 0
18
16
  rescue Airplay::Client::ServerNotFoundError
19
- abort '[ERROR] Apple device not found'
17
+ abort '[ERROR] AirPlay device is not found'
20
18
  end
21
19
 
22
- def play(media)
20
+ def play(media, options = {})
23
21
  raise TypeError unless media.is_a? Media
24
22
 
25
- display_information(media)
23
+ device = select_device(options.fetch(:device, nil))
24
+ @airplay.use(device.name)
25
+
26
+ display_information(device, media)
26
27
  @player = @airplay.send_video(media.open)
27
28
 
28
29
  buffering
@@ -36,7 +37,7 @@ module AirPlayer
36
37
  rescue TypeError
37
38
  abort '[ERROR] Not media class'
38
39
  rescue
39
- abort "Play stopped"
40
+ abort 'Play stopped'
40
41
  end
41
42
 
42
43
  def pause
@@ -53,13 +54,13 @@ module AirPlayer
53
54
  end
54
55
 
55
56
  private
56
- def display_information(media)
57
+ def display_information(device, media)
57
58
  puts
58
59
  puts " Source: #{media.path}"
59
60
  puts " Title: #{media.title}"
60
- puts " Device: #{@device.name} (#{@device.ip})"
61
+ puts " Device: #{device.name} (#{device.ip})"
61
62
 
62
- @progressbar = ProgressBar.create(:format => ' %a |%b%i| %p%% %t')
63
+ @progressbar = ProgressBar.create(format: ' %a |%b%i| %p%% %t')
63
64
  end
64
65
 
65
66
  def buffering
@@ -79,7 +80,19 @@ module AirPlayer
79
80
  end
80
81
 
81
82
  def progress?
82
- 0 < @current_sec && @current_sec < @total_sec
83
+ 0 < @current_sec && @total_sec - @current_sec > 1
84
+ end
85
+
86
+ def select_device(device_number = nil)
87
+ device_number ||= 0
88
+ device = Device.new
89
+
90
+ if device.exist?(device_number)
91
+ device.get(device_number)
92
+ else
93
+ puts "Device number #{device_number} is not found. Use default device"
94
+ device.default
95
+ end
83
96
  end
84
97
  end
85
98
  end
@@ -0,0 +1,27 @@
1
+ module AirPlayer
2
+ class Device
3
+ def initialize
4
+ @airplay = Airplay::Client.new
5
+ rescue Airplay::Client::ServerNotFoundError
6
+ abort "[ERROR] AirPlay device is not found"
7
+ end
8
+
9
+ def default
10
+ @airplay.browse.first
11
+ end
12
+
13
+ def exist?(device_number)
14
+ !!@airplay.browse.at(device_number)
15
+ end
16
+
17
+ def get(device_number)
18
+ @airplay.browse[device_number]
19
+ end
20
+
21
+ def list
22
+ @airplay.browse.each_with_index do |device, number|
23
+ puts "#{number}: #{device.name} (#{device.ip}:#{device.port})"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -10,29 +10,35 @@ module AirPlayer
10
10
  # .mov | video/quicktime | video/quicktime
11
11
  # .m4v | video/mpeg4 | video/vnd.objectvideo
12
12
  # .mp4 | video/mpeg4 | application/mp4, video/mp4
13
- SUPPORTED_MIME_TYPES = %w[
13
+ SUPPORTED_MIME_TYPES = %w(
14
14
  application/mp4
15
15
  video/mp4
16
16
  video/vnd.objectvideo
17
17
  video/MP2T
18
18
  video/quicktime
19
19
  video/mpeg4
20
- ]
20
+ )
21
+
22
+ SUPPORTED_DOMAINS = %w(
23
+ youtube
24
+ )
21
25
 
22
26
  class Media
23
27
  attr_reader :title, :path, :type
24
28
 
25
29
  def initialize(target)
26
- path = File.expand_path(target)
27
- @title = File.basename(path)
30
+ path = File.expand_path(target)
28
31
 
29
32
  if File.exist? path
30
33
  @video_server = AirPlayer::Server.new(path)
31
- @path = @video_server.uri
32
- @type = :file
34
+ @path = @video_server.uri
35
+ @title = File.basename(path)
36
+ @type = :file
33
37
  else
34
- @path = URI.encode(target)
35
- @type = :url
38
+ uri = URI.encode(target)
39
+ @path = online_media_path(uri)
40
+ @title = online_media_title(uri)
41
+ @type = :url
36
42
  end
37
43
  end
38
44
 
@@ -40,6 +46,12 @@ module AirPlayer
40
46
  MIME::Types.type_for(path).each do |mimetype|
41
47
  return SUPPORTED_MIME_TYPES.include? mimetype
42
48
  end
49
+
50
+ host = URI.parse(path).host
51
+ SUPPORTED_DOMAINS.each do |domain|
52
+ return host =~ /#{domain}/
53
+ end
54
+
43
55
  false
44
56
  end
45
57
 
@@ -59,5 +71,24 @@ module AirPlayer
59
71
  def url?
60
72
  @type == :url
61
73
  end
74
+
75
+ private
76
+ def online_media_path(uri)
77
+ case URI.parse(uri).host
78
+ when /youtube/
79
+ uri = `youtube-dl -g #{uri}`
80
+ else
81
+ uri
82
+ end
83
+ end
84
+
85
+ def online_media_title(uri)
86
+ case URI.parse(uri).host
87
+ when /youtube/
88
+ title = `youtube-dl -e #{uri}`
89
+ else
90
+ title = File.basename(uri)
91
+ end
92
+ end
62
93
  end
63
94
  end
@@ -12,7 +12,7 @@ module AirPlayer
12
12
 
13
13
  def add(item)
14
14
  case type(item)
15
- when :local
15
+ when :local_dir
16
16
  concat(media_in_local(item))
17
17
  when :podcast
18
18
  concat(media_in_podcast(item))
@@ -33,7 +33,7 @@ module AirPlayer
33
33
  private
34
34
  def type(item)
35
35
  if Dir.exists?(File.expand_path(item))
36
- :local
36
+ :local_dir
37
37
  elsif Media.playable? item
38
38
  :url
39
39
  elsif RSS::Parser.parse(open(item))
@@ -6,12 +6,7 @@ module AirPlayer
6
6
  attr_reader :uri
7
7
 
8
8
  def initialize(video_path)
9
- @server = Rack::Server.new(
10
- :server => :webrick,
11
- :Host => local_ip,
12
- :Port => 7070,
13
- :app => Rack::File.new(video_path)
14
- )
9
+ @server = Rack::Server.new(server: :webrick, Host: local_ip, Port: 7070, app: Rack::File.new(video_path))
15
10
  @uri = "http://#{@server.options[:Host]}:#{@server.options[:Port]}"
16
11
  end
17
12
 
@@ -1,3 +1,3 @@
1
1
  module AirPlayer
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
@@ -28,14 +28,21 @@ describe :AirPlayer do
28
28
  expect(AirPlayer::Media.playable?('007 SKYFALL.wmv')).to be_false
29
29
  expect(AirPlayer::Media.playable?('.DS_Store')).to be_false
30
30
  end
31
+
31
32
  it 'give to local file' do
32
33
  media = AirPlayer::Media.new('./Gemfile')
33
34
  expect(media.file?).to be_true
34
35
  end
36
+
35
37
  it 'give to url' do
36
38
  media = AirPlayer::Media.new('http://example.com/video.mp4')
37
39
  expect(media.url?).to be_true
38
- end
40
+ end
41
+
42
+ it 'give to YouTube url' do
43
+ media = AirPlayer::Media.new('http://www.youtube.com/watch?v=gVNYm9Qncyc')
44
+ expect(media.url?).to be_true
45
+ end
39
46
  end
40
47
 
41
48
  context :Playlist do
metadata CHANGED
@@ -1,158 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Tomohiro, TAIRA
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-06 00:00:00.000000000 Z
11
+ date: 2013-02-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: thor
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: ruby-progressbar
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: airplay
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ~>
52
46
  - !ruby/object:Gem::Version
53
- version: '0'
47
+ version: 0.2.9
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ~>
60
53
  - !ruby/object:Gem::Version
61
- version: '0'
54
+ version: 0.2.9
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rack
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: mime-types
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: nokogiri
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
108
109
  - !ruby/object:Gem::Version
109
110
  version: '0'
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: rake
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
- - - ! '>='
122
+ - - '>='
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  - !ruby/object:Gem::Dependency
127
126
  name: rspec
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
- - - ! '>='
129
+ - - '>='
132
130
  - !ruby/object:Gem::Version
133
131
  version: '0'
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
- - - ! '>='
136
+ - - '>='
140
137
  - !ruby/object:Gem::Version
141
138
  version: '0'
142
139
  - !ruby/object:Gem::Dependency
143
140
  name: guard-rspec
144
141
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
142
  requirements:
147
- - - ! '>='
143
+ - - '>='
148
144
  - !ruby/object:Gem::Version
149
145
  version: '0'
150
146
  type: :development
151
147
  prerelease: false
152
148
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
149
  requirements:
155
- - - ! '>='
150
+ - - '>='
156
151
  - !ruby/object:Gem::Version
157
152
  version: '0'
158
153
  description: Command-line AirPlay video client for Apple TV
@@ -170,13 +165,14 @@ files:
170
165
  - Gemfile.lock
171
166
  - Guardfile
172
167
  - LICENSE
173
- - README.markdown
168
+ - README.md
174
169
  - Rakefile
175
170
  - airplayer.gemspec
176
171
  - bin/airplayer
177
172
  - lib/airplayer.rb
178
173
  - lib/airplayer/app.rb
179
174
  - lib/airplayer/controller.rb
175
+ - lib/airplayer/device.rb
180
176
  - lib/airplayer/logger.rb
181
177
  - lib/airplayer/media.rb
182
178
  - lib/airplayer/playlist.rb
@@ -187,33 +183,26 @@ files:
187
183
  - spec/spec_helper.rb
188
184
  homepage: https://github.com/Tomohiro/airplayer
189
185
  licenses: []
186
+ metadata: {}
190
187
  post_install_message:
191
188
  rdoc_options: []
192
189
  require_paths:
193
190
  - lib
194
191
  required_ruby_version: !ruby/object:Gem::Requirement
195
- none: false
196
192
  requirements:
197
- - - ! '>='
193
+ - - '>='
198
194
  - !ruby/object:Gem::Version
199
195
  version: '0'
200
- segments:
201
- - 0
202
- hash: 3264263706258799017
203
196
  required_rubygems_version: !ruby/object:Gem::Requirement
204
- none: false
205
197
  requirements:
206
- - - ! '>='
198
+ - - '>='
207
199
  - !ruby/object:Gem::Version
208
200
  version: '0'
209
- segments:
210
- - 0
211
- hash: 3264263706258799017
212
201
  requirements: []
213
202
  rubyforge_project:
214
- rubygems_version: 1.8.24
203
+ rubygems_version: 2.0.0
215
204
  signing_key:
216
- specification_version: 3
205
+ specification_version: 4
217
206
  summary: Command-line AirPlay video client for Apple TV
218
207
  test_files:
219
208
  - spec/airplayer_spec.rb