airstream 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 26c40a42a5da7cbfdd5467b39c2561d4af6e95d0
4
- data.tar.gz: 095071b2e9df32109de7052bdb705434fc5cb16d
3
+ metadata.gz: 613ee1b8dd6b1e90e3f648466107b08f5595d124
4
+ data.tar.gz: dbeff0d3fc6fe11057b6bf7ab7099dc6ae52e98f
5
5
  SHA512:
6
- metadata.gz: ebe726dd234697e786a91474b26f74e078f14016205c1ccdcccf70ac200b7e86350c734011de41d2951da9fd5d857540f0406d4edeb3304e3e8f4b10b2386113
7
- data.tar.gz: f0bf04ee5c7768f0e60da864630f39540951b8fe5366acda57f1457bfb00724a96749456087da5fdd77e85c3295d2909042a43580c615b52b087d8292c30b19b
6
+ metadata.gz: d79d6b08991c69fadcbabb79c071c753c280b97781e7b1a0c1140ad09e6f0e9ea2c079cd9fe729baccaa6c568ea39fbc1e220492ca5a1e8184894781c7a2cffc
7
+ data.tar.gz: 3cc61eb71ab959d32159bec16bf17e9c16181489c797e549533cb06f8640712281a8f5826ddafaf3f6f466a699f6cad5f9012b07f7c317351b484bbc321f58c2
@@ -28,6 +28,14 @@ module Airstream
28
28
  @video_title = video.to_s
29
29
  end
30
30
 
31
+ def pause
32
+ @player.pause
33
+ end
34
+
35
+ def resume
36
+ @player.resume
37
+ end
38
+
31
39
  def scrub
32
40
  @player.scrub
33
41
  end
@@ -0,0 +1,88 @@
1
+ module Airstream
2
+ class Player
3
+
4
+ SEEK_SECONDS = 30
5
+
6
+ def initialize(device, files)
7
+ @device, @files = device, files
8
+ unless @files.empty?
9
+ play
10
+ else
11
+ @finished = true
12
+ end
13
+ end
14
+
15
+ def play(index=0)
16
+ unless @files.fetch(index, false)
17
+ err_msg = "no file found at index #{index}"
18
+ raise IndexError, err_msg
19
+ end
20
+ @file_index = index
21
+ self.current_file = @files[@file_index]
22
+ end
23
+
24
+ def current_file=(file)
25
+ # OPTIMIZE check if file exists (local, remote)
26
+ @device.file = file
27
+ end
28
+ private :current_file=
29
+
30
+ # TODO register commands instead of switch known
31
+ def update(io)
32
+ if io.quit?
33
+ Airstream::Io.show_input ; @finished = true
34
+ elsif io.skip? || duration <= elapsed_time
35
+ self.next
36
+ elsif io.prev?
37
+ self.prev
38
+ elsif io.fwd?
39
+ self.seek(elapsed_time + SEEK_SECONDS)
40
+ elsif io.back?
41
+ self.seek(elapsed_time - SEEK_SECONDS)
42
+ elsif io.pause?
43
+ @pause ||= false
44
+ (@pause = !@pause) ? @device.pause : @device.resume
45
+ end
46
+ end
47
+
48
+ def seek(seconds)
49
+ if seconds.between? 0, duration
50
+ @device.scrub(seconds)
51
+ end
52
+ end
53
+
54
+ def next
55
+ @file_index += 1
56
+ if @file_index < @files.size
57
+ self.current_file = @files[@file_index]
58
+ else
59
+ @finished = true
60
+ end
61
+ end
62
+
63
+ def prev
64
+ if @file_index == 0
65
+ self.seek(0)
66
+ elsif @files.size > @file_index
67
+ @file_index -= 1
68
+ self.current_file = @files[@file_index]
69
+ end
70
+ end
71
+
72
+ def finished?
73
+ @finished || false
74
+ end
75
+
76
+ def loading?
77
+ elapsed_time == 0
78
+ end
79
+
80
+ def elapsed_time
81
+ @device.position
82
+ end
83
+
84
+ def duration
85
+ @device.duration
86
+ end
87
+ end
88
+ end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Airstream
3
- VERSION = '0.4.2'
3
+ VERSION = '0.4.3'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airstream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Lipautz
@@ -98,6 +98,7 @@ files:
98
98
  - lib/airstream/io.rb
99
99
  - lib/airstream/network.rb
100
100
  - lib/airstream/node.rb
101
+ - lib/airstream/player.rb
101
102
  - lib/airstream/version.rb
102
103
  - lib/airstream/video.rb
103
104
  homepage: https://github.com/unused/airstream