m3u8 0.8.2 → 1.8.1

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.
Files changed (103) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +23 -0
  3. data/.gitignore +1 -1
  4. data/.rubocop.yml +31 -0
  5. data/CHANGELOG.md +107 -0
  6. data/Gemfile +7 -0
  7. data/LICENSE.txt +1 -1
  8. data/README.md +524 -40
  9. data/Rakefile +1 -0
  10. data/bin/m3u8 +6 -0
  11. data/lib/m3u8/attribute_formatter.rb +47 -0
  12. data/lib/m3u8/bitrate_item.rb +31 -0
  13. data/lib/m3u8/builder.rb +48 -0
  14. data/lib/m3u8/byte_range.rb +10 -0
  15. data/lib/m3u8/cli/inspect_command.rb +97 -0
  16. data/lib/m3u8/cli/validate_command.rb +24 -0
  17. data/lib/m3u8/cli.rb +116 -0
  18. data/lib/m3u8/codecs.rb +89 -0
  19. data/lib/m3u8/content_steering_item.rb +45 -0
  20. data/lib/m3u8/date_range_item.rb +135 -64
  21. data/lib/m3u8/define_item.rb +54 -0
  22. data/lib/m3u8/discontinuity_item.rb +3 -0
  23. data/lib/m3u8/encryptable.rb +27 -30
  24. data/lib/m3u8/error.rb +1 -0
  25. data/lib/m3u8/gap_item.rb +14 -0
  26. data/lib/m3u8/key_item.rb +7 -0
  27. data/lib/m3u8/map_item.rb +16 -5
  28. data/lib/m3u8/media_item.rb +48 -76
  29. data/lib/m3u8/part_inf_item.rb +35 -0
  30. data/lib/m3u8/part_item.rb +67 -0
  31. data/lib/m3u8/playback_start.rb +19 -12
  32. data/lib/m3u8/playlist.rb +221 -13
  33. data/lib/m3u8/playlist_item.rb +128 -124
  34. data/lib/m3u8/preload_hint_item.rb +54 -0
  35. data/lib/m3u8/reader.rb +86 -28
  36. data/lib/m3u8/rendition_report_item.rb +48 -0
  37. data/lib/m3u8/scte35.rb +130 -0
  38. data/lib/m3u8/scte35_bit_reader.rb +51 -0
  39. data/lib/m3u8/scte35_segmentation_descriptor.rb +54 -0
  40. data/lib/m3u8/scte35_splice_insert.rb +62 -0
  41. data/lib/m3u8/scte35_splice_null.rb +8 -0
  42. data/lib/m3u8/scte35_time_signal.rb +19 -0
  43. data/lib/m3u8/segment_item.rb +37 -3
  44. data/lib/m3u8/server_control_item.rb +69 -0
  45. data/lib/m3u8/session_data_item.rb +17 -28
  46. data/lib/m3u8/session_key_item.rb +8 -1
  47. data/lib/m3u8/skip_item.rb +48 -0
  48. data/lib/m3u8/time_item.rb +10 -0
  49. data/lib/m3u8/version.rb +1 -1
  50. data/lib/m3u8/writer.rb +24 -1
  51. data/lib/m3u8.rb +30 -6
  52. data/m3u8.gemspec +12 -12
  53. data/spec/fixtures/content_steering.m3u8 +10 -0
  54. data/spec/fixtures/daterange_playlist.m3u8 +14 -0
  55. data/spec/fixtures/encrypted_discontinuity.m3u8 +17 -0
  56. data/spec/fixtures/event_playlist.m3u8 +18 -0
  57. data/spec/fixtures/gap_playlist.m3u8 +14 -0
  58. data/spec/fixtures/ll_hls_advanced.m3u8 +18 -0
  59. data/spec/fixtures/ll_hls_playlist.m3u8 +20 -0
  60. data/spec/fixtures/master_full.m3u8 +14 -0
  61. data/spec/fixtures/master_v13.m3u8 +8 -0
  62. data/spec/lib/m3u8/bitrate_item_spec.rb +26 -0
  63. data/spec/lib/m3u8/builder_spec.rb +352 -0
  64. data/spec/lib/m3u8/byte_range_spec.rb +1 -0
  65. data/spec/lib/m3u8/cli/inspect_command_spec.rb +102 -0
  66. data/spec/lib/m3u8/cli/validate_command_spec.rb +39 -0
  67. data/spec/lib/m3u8/cli_spec.rb +104 -0
  68. data/spec/lib/m3u8/content_steering_item_spec.rb +56 -0
  69. data/spec/lib/m3u8/date_range_item_spec.rb +159 -31
  70. data/spec/lib/m3u8/define_item_spec.rb +59 -0
  71. data/spec/lib/m3u8/discontinuity_item_spec.rb +1 -0
  72. data/spec/lib/m3u8/gap_item_spec.rb +12 -0
  73. data/spec/lib/m3u8/key_item_spec.rb +1 -0
  74. data/spec/lib/m3u8/map_item_spec.rb +1 -0
  75. data/spec/lib/m3u8/media_item_spec.rb +34 -0
  76. data/spec/lib/m3u8/part_inf_item_spec.rb +27 -0
  77. data/spec/lib/m3u8/part_item_spec.rb +67 -0
  78. data/spec/lib/m3u8/playback_start_spec.rb +4 -5
  79. data/spec/lib/m3u8/playlist_item_spec.rb +130 -17
  80. data/spec/lib/m3u8/playlist_spec.rb +545 -13
  81. data/spec/lib/m3u8/preload_hint_item_spec.rb +57 -0
  82. data/spec/lib/m3u8/reader_spec.rb +376 -29
  83. data/spec/lib/m3u8/rendition_report_item_spec.rb +56 -0
  84. data/spec/lib/m3u8/round_trip_spec.rb +152 -0
  85. data/spec/lib/m3u8/scte35_bit_reader_spec.rb +106 -0
  86. data/spec/lib/m3u8/scte35_segmentation_descriptor_spec.rb +143 -0
  87. data/spec/lib/m3u8/scte35_spec.rb +94 -0
  88. data/spec/lib/m3u8/scte35_splice_insert_spec.rb +185 -0
  89. data/spec/lib/m3u8/scte35_splice_null_spec.rb +12 -0
  90. data/spec/lib/m3u8/scte35_time_signal_spec.rb +50 -0
  91. data/spec/lib/m3u8/segment_item_spec.rb +47 -0
  92. data/spec/lib/m3u8/server_control_item_spec.rb +64 -0
  93. data/spec/lib/m3u8/session_data_item_spec.rb +1 -0
  94. data/spec/lib/m3u8/session_key_item_spec.rb +1 -0
  95. data/spec/lib/m3u8/skip_item_spec.rb +48 -0
  96. data/spec/lib/m3u8/time_item_spec.rb +1 -0
  97. data/spec/lib/m3u8/writer_spec.rb +69 -30
  98. data/spec/lib/m3u8_spec.rb +1 -0
  99. data/spec/spec_helper.rb +4 -87
  100. metadata +70 -129
  101. data/.hound.yml +0 -3
  102. data/.travis.yml +0 -8
  103. data/Guardfile +0 -6
metadata CHANGED
@@ -1,107 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: m3u8
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Deckard
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-09 00:00:00.000000000 Z
11
+ date: 2026-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: bigdecimal
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '3.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '3.0'
55
- - !ruby/object:Gem::Dependency
56
- name: coveralls
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: guard
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: guard-rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: simplecov
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
20
+ type: :runtime
105
21
  prerelease: false
106
22
  version_requirements: !ruby/object:Gem::Requirement
107
23
  requirements:
@@ -111,66 +27,118 @@ dependencies:
111
27
  description: Generate and parse m3u8 playlists for HTTP Live Streaming (HLS).
112
28
  email:
113
29
  - seth@deckard.me
114
- executables: []
30
+ executables:
31
+ - m3u8
115
32
  extensions: []
116
33
  extra_rdoc_files: []
117
34
  files:
35
+ - ".github/workflows/ci.yml"
118
36
  - ".gitignore"
119
- - ".hound.yml"
120
37
  - ".rspec"
121
38
  - ".rubocop.yml"
122
- - ".travis.yml"
123
39
  - CHANGELOG.md
124
40
  - Gemfile
125
- - Guardfile
126
41
  - LICENSE.txt
127
42
  - README.md
128
43
  - Rakefile
44
+ - bin/m3u8
129
45
  - lib/m3u8.rb
46
+ - lib/m3u8/attribute_formatter.rb
47
+ - lib/m3u8/bitrate_item.rb
48
+ - lib/m3u8/builder.rb
130
49
  - lib/m3u8/byte_range.rb
50
+ - lib/m3u8/cli.rb
51
+ - lib/m3u8/cli/inspect_command.rb
52
+ - lib/m3u8/cli/validate_command.rb
53
+ - lib/m3u8/codecs.rb
54
+ - lib/m3u8/content_steering_item.rb
131
55
  - lib/m3u8/date_range_item.rb
56
+ - lib/m3u8/define_item.rb
132
57
  - lib/m3u8/discontinuity_item.rb
133
58
  - lib/m3u8/encryptable.rb
134
59
  - lib/m3u8/error.rb
60
+ - lib/m3u8/gap_item.rb
135
61
  - lib/m3u8/key_item.rb
136
62
  - lib/m3u8/map_item.rb
137
63
  - lib/m3u8/media_item.rb
64
+ - lib/m3u8/part_inf_item.rb
65
+ - lib/m3u8/part_item.rb
138
66
  - lib/m3u8/playback_start.rb
139
67
  - lib/m3u8/playlist.rb
140
68
  - lib/m3u8/playlist_item.rb
69
+ - lib/m3u8/preload_hint_item.rb
141
70
  - lib/m3u8/reader.rb
71
+ - lib/m3u8/rendition_report_item.rb
72
+ - lib/m3u8/scte35.rb
73
+ - lib/m3u8/scte35_bit_reader.rb
74
+ - lib/m3u8/scte35_segmentation_descriptor.rb
75
+ - lib/m3u8/scte35_splice_insert.rb
76
+ - lib/m3u8/scte35_splice_null.rb
77
+ - lib/m3u8/scte35_time_signal.rb
142
78
  - lib/m3u8/segment_item.rb
79
+ - lib/m3u8/server_control_item.rb
143
80
  - lib/m3u8/session_data_item.rb
144
81
  - lib/m3u8/session_key_item.rb
82
+ - lib/m3u8/skip_item.rb
145
83
  - lib/m3u8/time_item.rb
146
84
  - lib/m3u8/version.rb
147
85
  - lib/m3u8/writer.rb
148
86
  - m3u8.gemspec
87
+ - spec/fixtures/content_steering.m3u8
149
88
  - spec/fixtures/date_range_scte35.m3u8
89
+ - spec/fixtures/daterange_playlist.m3u8
150
90
  - spec/fixtures/encrypted.m3u8
91
+ - spec/fixtures/encrypted_discontinuity.m3u8
92
+ - spec/fixtures/event_playlist.m3u8
93
+ - spec/fixtures/gap_playlist.m3u8
151
94
  - spec/fixtures/iframes.m3u8
95
+ - spec/fixtures/ll_hls_advanced.m3u8
96
+ - spec/fixtures/ll_hls_playlist.m3u8
152
97
  - spec/fixtures/map_playlist.m3u8
153
98
  - spec/fixtures/master.m3u8
99
+ - spec/fixtures/master_full.m3u8
154
100
  - spec/fixtures/master_iframes.m3u8
101
+ - spec/fixtures/master_v13.m3u8
155
102
  - spec/fixtures/playlist.m3u8
156
103
  - spec/fixtures/playlist_with_comments.m3u8
157
104
  - spec/fixtures/session_data.m3u8
158
105
  - spec/fixtures/timestamp_playlist.m3u8
159
106
  - spec/fixtures/variant_angles.m3u8
160
107
  - spec/fixtures/variant_audio.m3u8
108
+ - spec/lib/m3u8/bitrate_item_spec.rb
109
+ - spec/lib/m3u8/builder_spec.rb
161
110
  - spec/lib/m3u8/byte_range_spec.rb
111
+ - spec/lib/m3u8/cli/inspect_command_spec.rb
112
+ - spec/lib/m3u8/cli/validate_command_spec.rb
113
+ - spec/lib/m3u8/cli_spec.rb
114
+ - spec/lib/m3u8/content_steering_item_spec.rb
162
115
  - spec/lib/m3u8/date_range_item_spec.rb
116
+ - spec/lib/m3u8/define_item_spec.rb
163
117
  - spec/lib/m3u8/discontinuity_item_spec.rb
118
+ - spec/lib/m3u8/gap_item_spec.rb
164
119
  - spec/lib/m3u8/key_item_spec.rb
165
120
  - spec/lib/m3u8/map_item_spec.rb
166
121
  - spec/lib/m3u8/media_item_spec.rb
122
+ - spec/lib/m3u8/part_inf_item_spec.rb
123
+ - spec/lib/m3u8/part_item_spec.rb
167
124
  - spec/lib/m3u8/playback_start_spec.rb
168
125
  - spec/lib/m3u8/playlist_item_spec.rb
169
126
  - spec/lib/m3u8/playlist_spec.rb
127
+ - spec/lib/m3u8/preload_hint_item_spec.rb
170
128
  - spec/lib/m3u8/reader_spec.rb
129
+ - spec/lib/m3u8/rendition_report_item_spec.rb
130
+ - spec/lib/m3u8/round_trip_spec.rb
131
+ - spec/lib/m3u8/scte35_bit_reader_spec.rb
132
+ - spec/lib/m3u8/scte35_segmentation_descriptor_spec.rb
133
+ - spec/lib/m3u8/scte35_spec.rb
134
+ - spec/lib/m3u8/scte35_splice_insert_spec.rb
135
+ - spec/lib/m3u8/scte35_splice_null_spec.rb
136
+ - spec/lib/m3u8/scte35_time_signal_spec.rb
171
137
  - spec/lib/m3u8/segment_item_spec.rb
138
+ - spec/lib/m3u8/server_control_item_spec.rb
172
139
  - spec/lib/m3u8/session_data_item_spec.rb
173
140
  - spec/lib/m3u8/session_key_item_spec.rb
141
+ - spec/lib/m3u8/skip_item_spec.rb
174
142
  - spec/lib/m3u8/time_item_spec.rb
175
143
  - spec/lib/m3u8/writer_spec.rb
176
144
  - spec/lib/m3u8_spec.rb
@@ -178,8 +146,11 @@ files:
178
146
  homepage: https://github.com/sethdeckard/m3u8
179
147
  licenses:
180
148
  - MIT
181
- metadata: {}
182
- post_install_message:
149
+ metadata:
150
+ source_code_uri: https://github.com/sethdeckard/m3u8
151
+ changelog_uri: https://github.com/sethdeckard/m3u8/blob/master/CHANGELOG.md
152
+ bug_tracker_uri: https://github.com/sethdeckard/m3u8/issues
153
+ post_install_message:
183
154
  rdoc_options: []
184
155
  require_paths:
185
156
  - lib
@@ -187,45 +158,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
158
  requirements:
188
159
  - - ">="
189
160
  - !ruby/object:Gem::Version
190
- version: '0'
161
+ version: '3.1'
191
162
  required_rubygems_version: !ruby/object:Gem::Requirement
192
163
  requirements:
193
164
  - - ">="
194
165
  - !ruby/object:Gem::Version
195
166
  version: '0'
196
167
  requirements: []
197
- rubyforge_project:
198
- rubygems_version: 2.6.11
199
- signing_key:
168
+ rubygems_version: 3.5.22
169
+ signing_key:
200
170
  specification_version: 4
201
171
  summary: Generate and parse m3u8 playlists for HTTP Live Streaming (HLS).
202
- test_files:
203
- - spec/fixtures/date_range_scte35.m3u8
204
- - spec/fixtures/encrypted.m3u8
205
- - spec/fixtures/iframes.m3u8
206
- - spec/fixtures/map_playlist.m3u8
207
- - spec/fixtures/master.m3u8
208
- - spec/fixtures/master_iframes.m3u8
209
- - spec/fixtures/playlist.m3u8
210
- - spec/fixtures/playlist_with_comments.m3u8
211
- - spec/fixtures/session_data.m3u8
212
- - spec/fixtures/timestamp_playlist.m3u8
213
- - spec/fixtures/variant_angles.m3u8
214
- - spec/fixtures/variant_audio.m3u8
215
- - spec/lib/m3u8/byte_range_spec.rb
216
- - spec/lib/m3u8/date_range_item_spec.rb
217
- - spec/lib/m3u8/discontinuity_item_spec.rb
218
- - spec/lib/m3u8/key_item_spec.rb
219
- - spec/lib/m3u8/map_item_spec.rb
220
- - spec/lib/m3u8/media_item_spec.rb
221
- - spec/lib/m3u8/playback_start_spec.rb
222
- - spec/lib/m3u8/playlist_item_spec.rb
223
- - spec/lib/m3u8/playlist_spec.rb
224
- - spec/lib/m3u8/reader_spec.rb
225
- - spec/lib/m3u8/segment_item_spec.rb
226
- - spec/lib/m3u8/session_data_item_spec.rb
227
- - spec/lib/m3u8/session_key_item_spec.rb
228
- - spec/lib/m3u8/time_item_spec.rb
229
- - spec/lib/m3u8/writer_spec.rb
230
- - spec/lib/m3u8_spec.rb
231
- - spec/spec_helper.rb
172
+ test_files: []
data/.hound.yml DELETED
@@ -1,3 +0,0 @@
1
- ruby:
2
- enabled: true
3
- config_file: .rubocop.yml
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- language: ruby
2
- sudo: true
3
- rvm:
4
- - 2.4.1
5
- - 2.3.4
6
- - 2.2.7
7
-
8
- script: rspec spec
data/Guardfile DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- guard :rspec, cmd: 'bundle exec rspec' do
3
- watch(%r{^spec/.+_spec\.rb$})
4
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
- watch('spec/spec_helper.rb') { 'spec' }
6
- end