m3u8 0.6.7 → 0.6.8
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 +4 -4
- data/CHANGELOG.md +2 -0
- data/lib/m3u8/reader.rb +6 -2
- data/lib/m3u8/segment_item.rb +3 -2
- data/lib/m3u8/version.rb +1 -1
- data/spec/fixtures/timestamp_playlist.m3u8 +22 -0
- data/spec/lib/m3u8/reader_spec.rb +11 -0
- data/spec/lib/m3u8/segment_item_spec.rb +8 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4e584f9677b6f81c20f52ee7829611fb1586139
|
4
|
+
data.tar.gz: 33f822204530d6af5339426a4d986b5edf21ed2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 330864a27a4338191fa141e861f4bb1a7e88984af9f0a4a70e647157be5c43c75cad442d6e76c0b7743004f82769e9bcabc453c47b2ba49184aa2e7d3e23f243
|
7
|
+
data.tar.gz: bf442b7d7e652a5a2e7935a4b1f9d8d2ec455f9ae87c4e21d8329b4dd6ec36770d0e3ffe0d1e29b723bf72633569291baf2397b574295f53635fdd2b8ac3eb57
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
#### 0.6.8 (4/12/2016) - Merged pull request #16 from [ghn](https://github.com/ghn). Fixes issue #12 to support parsing #EXT-X-PROGRAM-DATE-TIME correctly in media segments.
|
2
|
+
|
1
3
|
#### 0.6.7 (4/8/2016) - Merged pull request #15 from [jviney](https://github.com/jviney). Fix: Always render the duration as a decimal integer.
|
2
4
|
|
3
5
|
#### 0.6.6 (3/30/2016) - Merged pull request #14 from [raphi](https://github.com/raphi). Adds support for non-standard name attribute on #EXT-X-STREAM-INF tags.
|
data/lib/m3u8/reader.rb
CHANGED
@@ -152,8 +152,12 @@ module M3u8
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def parse_time(line)
|
155
|
-
|
156
|
-
|
155
|
+
if open
|
156
|
+
item.program_date_time = M3u8::TimeItem.parse(line)
|
157
|
+
else
|
158
|
+
self.open = false
|
159
|
+
playlist.items << M3u8::TimeItem.parse(line)
|
160
|
+
end
|
157
161
|
end
|
158
162
|
|
159
163
|
def parse_next_line(line)
|
data/lib/m3u8/segment_item.rb
CHANGED
@@ -3,14 +3,15 @@ module M3u8
|
|
3
3
|
# optionally allowing an EXT-X-BYTERANGE tag to be set.
|
4
4
|
class SegmentItem
|
5
5
|
include M3u8
|
6
|
-
attr_accessor :duration, :segment, :comment, :byterange
|
6
|
+
attr_accessor :duration, :segment, :comment, :program_date_time, :byterange
|
7
7
|
|
8
8
|
def initialize(params = {})
|
9
9
|
intialize_with_byterange(params)
|
10
10
|
end
|
11
11
|
|
12
12
|
def to_s
|
13
|
-
"#
|
13
|
+
date = "#{program_date_time}\n" unless program_date_time.nil?
|
14
|
+
"#EXTINF:#{duration},#{comment}#{byterange_format}\n#{date}#{segment}"
|
14
15
|
end
|
15
16
|
|
16
17
|
private
|
data/lib/m3u8/version.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
#EXTM3U
|
2
|
+
#EXT-X-VERSION:2
|
3
|
+
#EXT-X-TARGETDURATION:10
|
4
|
+
#EXT-X-MEDIA-SEQUENCE:1736515
|
5
|
+
#EXTINF:10, no desc
|
6
|
+
#EXT-X-PROGRAM-DATE-TIME:2016-04-11T15:24:31Z
|
7
|
+
20160408T084506-01-1736515.ts
|
8
|
+
#EXTINF:10, no desc
|
9
|
+
#EXT-X-PROGRAM-DATE-TIME:2016-04-11T15:24:41Z
|
10
|
+
20160408T084506-01-1736516.ts
|
11
|
+
#EXTINF:10, no desc
|
12
|
+
#EXT-X-PROGRAM-DATE-TIME:2016-04-11T15:24:51Z
|
13
|
+
20160408T084506-01-1736517.ts
|
14
|
+
#EXTINF:10, no desc
|
15
|
+
#EXT-X-PROGRAM-DATE-TIME:2016-04-11T15:25:01Z
|
16
|
+
20160408T084506-01-1736518.ts
|
17
|
+
#EXTINF:10, no desc
|
18
|
+
#EXT-X-PROGRAM-DATE-TIME:2016-04-11T15:25:11Z
|
19
|
+
20160408T084506-01-1736519.ts
|
20
|
+
#EXTINF:10, no desc
|
21
|
+
#EXT-X-PROGRAM-DATE-TIME:2016-04-11T15:25:21Z
|
22
|
+
20160408T084506-01-1736520.ts
|
@@ -221,4 +221,15 @@ describe M3u8::Reader do
|
|
221
221
|
expect(item.byterange.length).to eq 4500
|
222
222
|
expect(item.byterange.start).to eq 600
|
223
223
|
end
|
224
|
+
|
225
|
+
it 'should read segment with timestamp' do
|
226
|
+
file = File.open 'spec/fixtures/timestamp_playlist.m3u8'
|
227
|
+
reader = M3u8::Reader.new
|
228
|
+
playlist = reader.read file
|
229
|
+
expect(playlist.items.count).to eq 6
|
230
|
+
|
231
|
+
item_date_time = playlist.items.first.program_date_time
|
232
|
+
expect(item_date_time).to be_a M3u8::TimeItem
|
233
|
+
expect(item_date_time.time).to eq Time.iso8601('2016-04-11T15:24:31Z')
|
234
|
+
end
|
224
235
|
end
|
@@ -8,6 +8,7 @@ describe M3u8::SegmentItem do
|
|
8
8
|
expect(item.segment).to eq 'test.ts'
|
9
9
|
expect(item.comment).to be_nil
|
10
10
|
expect(item.byterange).to be_nil
|
11
|
+
expect(item.program_date_time).to be_nil
|
11
12
|
|
12
13
|
hash = { duration: 10.991, segment: 'test.ts', comment: 'anything',
|
13
14
|
byterange: {
|
@@ -24,10 +25,15 @@ describe M3u8::SegmentItem do
|
|
24
25
|
end
|
25
26
|
|
26
27
|
it 'should provide m3u8 format representation' do
|
27
|
-
|
28
|
+
time_hash = { time: '2010-02-19T14:54:23.031' }
|
29
|
+
time_item = M3u8::TimeItem.new(time_hash)
|
30
|
+
|
31
|
+
hash = { duration: 10.991, segment: 'test.ts',
|
32
|
+
program_date_time: time_item }
|
28
33
|
item = M3u8::SegmentItem.new(hash)
|
29
34
|
output = item.to_s
|
30
|
-
|
35
|
+
date_time_output = item.program_date_time.to_s
|
36
|
+
expected = "#EXTINF:10.991,\n#{date_time_output}\ntest.ts"
|
31
37
|
expect(output).to eq expected
|
32
38
|
|
33
39
|
hash = { duration: 10.991, segment: 'test.ts', comment: 'anything' }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: m3u8
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Deckard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -153,6 +153,7 @@ files:
|
|
153
153
|
- spec/fixtures/playlist.m3u8
|
154
154
|
- spec/fixtures/playlist_with_comments.m3u8
|
155
155
|
- spec/fixtures/session_data.m3u8
|
156
|
+
- spec/fixtures/timestamp_playlist.m3u8
|
156
157
|
- spec/fixtures/variant_angles.m3u8
|
157
158
|
- spec/fixtures/variant_audio.m3u8
|
158
159
|
- spec/lib/m3u8/byte_range_spec.rb
|
@@ -203,6 +204,7 @@ test_files:
|
|
203
204
|
- spec/fixtures/playlist.m3u8
|
204
205
|
- spec/fixtures/playlist_with_comments.m3u8
|
205
206
|
- spec/fixtures/session_data.m3u8
|
207
|
+
- spec/fixtures/timestamp_playlist.m3u8
|
206
208
|
- spec/fixtures/variant_angles.m3u8
|
207
209
|
- spec/fixtures/variant_audio.m3u8
|
208
210
|
- spec/lib/m3u8/byte_range_spec.rb
|