threefive 3.0.91__tar.gz → 3.0.93__tar.gz

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 (45) hide show
  1. {threefive-3.0.91 → threefive-3.0.93}/PKG-INFO +19 -240
  2. {threefive-3.0.91 → threefive-3.0.93}/README.md +18 -239
  3. {threefive-3.0.91 → threefive-3.0.93}/pyproject.toml +1 -2
  4. {threefive-3.0.91 → threefive-3.0.93}/threefive/cli.py +18 -1
  5. {threefive-3.0.91 → threefive-3.0.93}/threefive/descriptors.py +4 -4
  6. {threefive-3.0.91 → threefive-3.0.93}/threefive/hls.py +4 -2
  7. {threefive-3.0.91 → threefive-3.0.93}/threefive/new_reader.py +2 -2
  8. {threefive-3.0.91 → threefive-3.0.93}/threefive/segment.py +3 -10
  9. {threefive-3.0.91 → threefive-3.0.93}/threefive/stream.py +52 -126
  10. {threefive-3.0.91 → threefive-3.0.93}/threefive/version.py +1 -1
  11. {threefive-3.0.91 → threefive-3.0.93}/threefive.egg-info/PKG-INFO +19 -240
  12. {threefive-3.0.91 → threefive-3.0.93}/threefive.egg-info/entry_points.txt +0 -1
  13. {threefive-3.0.91 → threefive-3.0.93}/LICENSE +0 -0
  14. {threefive-3.0.91 → threefive-3.0.93}/setup.cfg +0 -0
  15. {threefive-3.0.91 → threefive-3.0.93}/threefive/__init__.py +0 -0
  16. {threefive-3.0.91 → threefive-3.0.93}/threefive/aac.py +0 -0
  17. {threefive-3.0.91 → threefive-3.0.93}/threefive/base.py +0 -0
  18. {threefive-3.0.91 → threefive-3.0.93}/threefive/bitn.py +0 -0
  19. {threefive-3.0.91 → threefive-3.0.93}/threefive/bump.py +0 -0
  20. {threefive-3.0.91 → threefive-3.0.93}/threefive/commands.py +0 -0
  21. {threefive-3.0.91 → threefive-3.0.93}/threefive/crc.py +0 -0
  22. {threefive-3.0.91 → threefive-3.0.93}/threefive/crctable.py +0 -0
  23. {threefive-3.0.91 → threefive-3.0.93}/threefive/cue.py +0 -0
  24. {threefive-3.0.91 → threefive-3.0.93}/threefive/encode.py +0 -0
  25. {threefive-3.0.91 → threefive-3.0.93}/threefive/gums.py +0 -0
  26. {threefive-3.0.91 → threefive-3.0.93}/threefive/hlsprofile.py +0 -0
  27. {threefive-3.0.91 → threefive-3.0.93}/threefive/hlstags.py +0 -0
  28. {threefive-3.0.91 → threefive-3.0.93}/threefive/iframes.py +0 -0
  29. {threefive-3.0.91 → threefive-3.0.93}/threefive/packetdata.py +0 -0
  30. {threefive-3.0.91 → threefive-3.0.93}/threefive/pmt.py +0 -0
  31. {threefive-3.0.91 → threefive-3.0.93}/threefive/section.py +0 -0
  32. {threefive-3.0.91 → threefive-3.0.93}/threefive/segmentation.py +0 -0
  33. {threefive-3.0.91 → threefive-3.0.93}/threefive/sixfix.py +0 -0
  34. {threefive-3.0.91 → threefive-3.0.93}/threefive/speedo.py +0 -0
  35. {threefive-3.0.91 → threefive-3.0.93}/threefive/streamtypes.py +0 -0
  36. {threefive-3.0.91 → threefive-3.0.93}/threefive/stuff.py +0 -0
  37. {threefive-3.0.91 → threefive-3.0.93}/threefive/superkabuki.py +0 -0
  38. {threefive-3.0.91 → threefive-3.0.93}/threefive/throttle.py +0 -0
  39. {threefive-3.0.91 → threefive-3.0.93}/threefive/udp.py +0 -0
  40. {threefive-3.0.91 → threefive-3.0.93}/threefive/upids.py +0 -0
  41. {threefive-3.0.91 → threefive-3.0.93}/threefive/uxp.py +0 -0
  42. {threefive-3.0.91 → threefive-3.0.93}/threefive/xml.py +0 -0
  43. {threefive-3.0.91 → threefive-3.0.93}/threefive.egg-info/SOURCES.txt +0 -0
  44. {threefive-3.0.91 → threefive-3.0.93}/threefive.egg-info/dependency_links.txt +0 -0
  45. {threefive-3.0.91 → threefive-3.0.93}/threefive.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: threefive
3
- Version: 3.0.91
3
+ Version: 3.0.93
4
4
  Summary: threefive is The #1 SCTE-35 Decoder and Encoder on the Planet.
5
5
  Author-email: AdrianofDoom <spam@iodisco.com>
6
6
  License-Expression: Sleepycat
@@ -17,42 +17,35 @@ Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Dynamic: license-file
19
19
 
20
- # [ threefive ]
21
-
22
-
23
- <img width="1000" height="748" alt="100_0033" src="https://github.com/user-attachments/assets/dc967211-35d4-4aa5-af75-ce6099207946" />
24
-
25
- ## https://github.com/superkabuki/threefive
26
-
27
- ## threefive is the only tool that supports SCTE-35-1 and SCTE-35-2
28
-
20
+ # threefive is the highest rated SCTE-35 tool. Ever.
29
21
  * __Decodes SCTE-35__ from `MPEGTS`✔ `Base64`✔ `Bytes`✔ `DASH`✔ `Hex` ✔ `HLS`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
30
22
  * __Encodes SCTE-35__ to `MPEGTS`✔ `Base64`✔ `Bytes`✔ `Hex`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
31
23
  ___
32
24
 
33
25
  ## [ News ]
34
-
35
- * threefive now has support for SCTE-35-2. __Event Descriptors__ and __Property__ types from __the recently published 2026 SCTE-35 Specification can be decoded, modified, and encoded with threefive.
26
+ * __threefive__ now has support for __SCTE-35-2. Event Descriptors__ and __Property types__ from the recently published __2026 SCTE-35-2 Specification__.
27
+ * __threefive v3.0.93__ now supports HLS autodetection in the cli.
36
28
  ___
37
29
 
38
- ## [ Latest version is v3.0.91 ]
30
+ ## [ Latest threefive version is v3.0.93 ] _Released 06/11/2026_
31
+ ___
32
+ ## [[ Examples ]](https://github.com/superkabuki/threefive_is_scte35/blob/main/examples)
33
+ ___
34
+ ## [ [ Tip of the Week ] ](totw.md)
39
35
  ___
40
-
41
-
42
36
  # [ Documentation ]
43
37
  #### Need to inject SCTE-35 into HLS? [X9k3.](https://github.com/superkabuki/x9k3)
44
38
  * [__web based SCTE-35 tools__](#web) - threefive and friends over http.
45
39
  * [__install__](#install)
46
- * [__quick start__](https://github.com/superkabuki/threefive_is_scte35/blob/main/README.md#quick-start)
40
+ * [__quick start__](quickstart.md)
47
41
  * __command line tools__
48
42
  * [ __threefive__](#cli) _decode SCTE-35 on the command line_
49
43
  * [__scte35bump__](#scte35bump) _adjust SCTE-35 PTS in MPEGTS streams_
50
44
  * [__scte35fix__](#scte35fix) _ffmpeg changes scte-35 streams into bin data, scte35fix changes them back._
51
- * [__scte35hls__](#scte35hls) _scte35hls parses hls and ABR hls for scte-35. All hls scte-35 tags are supported__
52
45
  * [__scte35inject__](scte35inject.md) _scte35inject inject scte-35 into mpegts._
53
46
  * [__gums__](#gums) _gums is a multicast sender(server) for video_
54
47
  * __library__
55
- * [__Using the threefive.Cue class__](https://github.com/superkabuki/threefive/blob/main/lib.md)
48
+ * [__Using the threefive.Cue class__](lib.md)
56
49
  * [__Using the threefive library__](#using-the-library) _decode SCTE-35 with less than ten lines of code_
57
50
  * * [threefive __Classes__](#classes) _threefive is OO, made to subclass_
58
51
  * [__Cue__ Class](https://github.com/superkabuki/threefive/blob/main/cue.md) _this class you'll use often_
@@ -106,225 +99,17 @@ make install py3=python3.14
106
99
  # [⇧](#-documentation-)
107
100
  ___
108
101
 
109
- # [⇧](#-documentation-)
110
-
111
- ## [Quick Start]
112
- <i>These examples show how to parse SCTE-35<BR>
113
- from various SCTE-35 data formats, with both the cli and with the library.</i>
114
- <details><summary>MPEGTS</summary>
115
-
116
- * MPEGTS streams can be Files, Http(s), Multicast,SRT, UDP Unicast, or stdin.
117
- * __cli__
118
-
119
- ```js
120
- threefive https://example.com/video.ts
121
- ```
122
- * wildcards work too.
123
- ```js
124
- threefive /mpegts/*.ts
125
- ```
126
-
127
- * __lib__
128
- ```py3
129
-
130
- from threefive import Stream
131
- stream = Stream('https://example.com/video.ts')
132
- stream.decode()
133
-
134
- ```
135
- </details>
136
- <details><summary>Base64</summary>
137
-
138
- * __cli__
139
- ```js
140
- threefive '/DAsAAAAAyiYAP/wCgUAAAABf1+ZmQEBABECD0NVRUkAAAAAf4ABADUAAC2XQZU='
141
- ```
142
- * __lib__
143
- ```py3
144
-
145
- from threefive import Cue
146
- data = '/DAsAAAAAyiYAP/wCgUAAAABf1+ZmQEBABECD0NVRUkAAAAAf4ABADUAAC2XQZU='
147
- cue=Cue(data)
148
- cue.show()
149
- ```
150
-
151
- </details>
152
-
153
-
154
- <details><summary>Bytes</summary>
155
-
156
- * __cli__
157
- * Bytes don't work on the cli
158
-
159
- * __lib__
160
- ```py3
161
-
162
- from threefive import Cue
163
- data = b'\xfc0\x16\x00\x00\x00\x00\x00\x00\x00\xff\xf0\x05\x06\xfe\x00\xc0D\xa0\x00\x00\x00\xb5k\x88'
164
- cue=Cue(data)
165
- cue.show()
166
- ```
167
-
168
- </details>
169
-
170
- <details><summary>Hex</summary>
171
-
172
- * Can be a hex literal or hex string or bytes.
173
-
174
- * __cli__
175
- ```js
176
- threefive 0xfc301600000000000000fff00506fed605225b0000b0b65f3b
177
- ```
178
- * __lib__
179
- ```py3
180
-
181
- from threefive import Cue
182
- data = 0xfc301600000000000000fff00506fed605225b0000b0b65f3b
183
- cue=Cue(data)
184
- cue.show()
185
- ```
186
-
187
- </details>
188
-
189
-
190
- <details><summary>Int</summary>
191
-
192
- * Can be a literal integer or string or bytes.
193
-
194
- * __cli__
195
- ```js
196
- threefive 1583008701074197245727019716796221243043855984942057168199483
197
- ```
198
- * __lib__
199
- ```py3
200
-
201
- from threefive import Cue
202
- data = 1583008701074197245727019716796221243043855984942057168199483
203
- cue=Cue(data)
204
- cue.show()
205
- ```
206
-
207
-
208
- </details>
209
-
210
-
211
- <details><summary>JSON</summary>
212
-
213
- * __cli__
214
- * put JSON SCTE-35 in a file and redirect it into threefive
215
- * cat files to threefive works too.
216
- * echo JSON or type JSON on the command line.
217
-
218
- ```js
219
- threefive < json.json
220
- ```
221
- * __lib__
222
-
223
- ```py3
224
-
225
- from threefive import Cue
226
- data = '''{
227
- "info_section": {
228
- "table_id": "0xfc",
229
- "section_syntax_indicator": false,
230
- "private": false,
231
- "sap_type": "0x03",
232
- "sap_details": "No Sap Type",
233
- "section_length": 22,
234
- "protocol_version": 0,
235
- "encrypted_packet": false,
236
- "encryption_algorithm": 0,
237
- "pts_adjustment": 0.0,
238
- "cw_index": "0x00",
239
- "tier": "0x0fff",
240
- "splice_command_length": 5,
241
- "splice_command_type": 6,
242
- "descriptor_loop_length": 0,
243
- "crc": "0xb56b88"
244
- },
245
- "command": {
246
- "command_length": 5,
247
- "command_type": 6,
248
- "name": "Time Signal",
249
- "time_specified_flag": true,
250
- "pts_time": 140.005333
251
- },
252
- "descriptors": []
253
- }
254
- '''
255
- cue=Cue(data)
256
- cue.show()
257
- ```
258
-
259
- </details>
260
-
261
-
262
- <details><summary><u>Xml</u></summary>
263
-
264
- * __cli__
265
- * put xml SCTE-35 in a [file](xml.xml) and redirect it into threefive
266
- * cat files to threefive works too.
267
- * echo xml or type xml on the command line.
268
-
269
- ```js
270
- threefive < xml.xml
271
- ```
272
- * __lib__
273
- ```py3
274
- from threefive import Cue
275
- data = '''
276
- <scte35:SpliceInfoSection xmlns:scte35="https://scte.org/schemas/35"
277
- ptsAdjustment="0" protocolVersion="0" sapType="3" tier="4095">
278
- <scte35:TimeSignal>
279
- <scte35:SpliceTime ptsTime="12600480"/>
280
- </scte35:TimeSignal>
281
- </scte35:SpliceInfoSection>
282
- '''
283
- cue=Cue(data)
284
-
285
- cue.show()
286
- ```
287
-
288
-
289
- </details>
290
-
291
-
292
-
293
- <details><summary>Xml+binary</summary>
294
-
295
- * __cli__
296
- * write xml+binary to a [file](xmlbin.xml) and redirect it to threefive
297
- * cat files to threefive works too.
298
- * echo xml+binary or type xml+binary on the command line.
299
- ```js
300
- threefive < xmlbin.xml
301
- ```
302
- * __lib__
303
- ```py3
304
-
305
- from threefive import Cue
306
- data = '''<scte35:Signal xmlns:scte35="https://scte.org/schemas/35">
307
- <scte35:Binary>/DAWAAAAAAAAAP/wBQb+AMBEoAAAALVriA==</scte35:Binary>
308
- </scte35:Signal>
309
- '''
310
- cue=Cue(data)
311
- cue.show()
312
- ```
313
-
314
- </details>
315
-
316
- </samp>
317
-
318
- ___
319
-
320
- # [⇧](#-documentation-)
321
-
322
102
  ### [CLI]
323
103
  The threefive cli tool is able to parse SCTE-35 from MPEGTS Streams,Base64,Hex,Integers,JSON XML,and XMLBinary.
324
104
  The format is auto-detected.
325
105
 
326
106
  # [⇧](#-documentation-)
327
107
 
108
+ #### [ Parse SCTE-35 from HLS with threefive ]
109
+ ```js
110
+ threefive https://example.com/master.m3u8
111
+ ```
112
+
328
113
  #### [ Parse SCTE-35 from MPEGTS ]
329
114
  SCTE-35 can be parsed from MPEGTS over a variety of protocols.
330
115
  * __SCTE-35 Input__: MPEGTS
@@ -447,19 +232,13 @@ gums is part of threefive.
447
232
 
448
233
  # [⇧](#-documentation-)
449
234
 
450
- #### scte35hls
235
+ #### HLS
451
236
 
452
237
  * parse HLS for SCTE-35. Supports all HLS SCTE-35 tags.
453
238
 
454
239
  ```js
455
- $ scte35hls -h
456
-
457
- [ threefive hls ]
458
-
459
- [ Help ]
460
-
461
- To display this help:
462
- scte35hls help
240
+ $ threefive hls help
241
+ ```
463
242
 
464
243
  [ Input ]
465
244
  threefive hls takes an m3u8 URI as input.
@@ -1,39 +1,32 @@
1
- # [ threefive ]
2
-
3
-
4
- <img width="1000" height="748" alt="100_0033" src="https://github.com/user-attachments/assets/dc967211-35d4-4aa5-af75-ce6099207946" />
5
-
6
- ## https://github.com/superkabuki/threefive
7
-
8
- ## threefive is the only tool that supports SCTE-35-1 and SCTE-35-2
9
-
1
+ # threefive is the highest rated SCTE-35 tool. Ever.
10
2
  * __Decodes SCTE-35__ from `MPEGTS`✔ `Base64`✔ `Bytes`✔ `DASH`✔ `Hex` ✔ `HLS`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
11
3
  * __Encodes SCTE-35__ to `MPEGTS`✔ `Base64`✔ `Bytes`✔ `Hex`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
12
4
  ___
13
5
 
14
6
  ## [ News ]
15
-
16
- * threefive now has support for SCTE-35-2. __Event Descriptors__ and __Property__ types from __the recently published 2026 SCTE-35 Specification can be decoded, modified, and encoded with threefive.
7
+ * __threefive__ now has support for __SCTE-35-2. Event Descriptors__ and __Property types__ from the recently published __2026 SCTE-35-2 Specification__.
8
+ * __threefive v3.0.93__ now supports HLS autodetection in the cli.
17
9
  ___
18
10
 
19
- ## [ Latest version is v3.0.91 ]
11
+ ## [ Latest threefive version is v3.0.93 ] _Released 06/11/2026_
12
+ ___
13
+ ## [[ Examples ]](https://github.com/superkabuki/threefive_is_scte35/blob/main/examples)
14
+ ___
15
+ ## [ [ Tip of the Week ] ](totw.md)
20
16
  ___
21
-
22
-
23
17
  # [ Documentation ]
24
18
  #### Need to inject SCTE-35 into HLS? [X9k3.](https://github.com/superkabuki/x9k3)
25
19
  * [__web based SCTE-35 tools__](#web) - threefive and friends over http.
26
20
  * [__install__](#install)
27
- * [__quick start__](https://github.com/superkabuki/threefive_is_scte35/blob/main/README.md#quick-start)
21
+ * [__quick start__](quickstart.md)
28
22
  * __command line tools__
29
23
  * [ __threefive__](#cli) _decode SCTE-35 on the command line_
30
24
  * [__scte35bump__](#scte35bump) _adjust SCTE-35 PTS in MPEGTS streams_
31
25
  * [__scte35fix__](#scte35fix) _ffmpeg changes scte-35 streams into bin data, scte35fix changes them back._
32
- * [__scte35hls__](#scte35hls) _scte35hls parses hls and ABR hls for scte-35. All hls scte-35 tags are supported__
33
26
  * [__scte35inject__](scte35inject.md) _scte35inject inject scte-35 into mpegts._
34
27
  * [__gums__](#gums) _gums is a multicast sender(server) for video_
35
28
  * __library__
36
- * [__Using the threefive.Cue class__](https://github.com/superkabuki/threefive/blob/main/lib.md)
29
+ * [__Using the threefive.Cue class__](lib.md)
37
30
  * [__Using the threefive library__](#using-the-library) _decode SCTE-35 with less than ten lines of code_
38
31
  * * [threefive __Classes__](#classes) _threefive is OO, made to subclass_
39
32
  * [__Cue__ Class](https://github.com/superkabuki/threefive/blob/main/cue.md) _this class you'll use often_
@@ -87,225 +80,17 @@ make install py3=python3.14
87
80
  # [⇧](#-documentation-)
88
81
  ___
89
82
 
90
- # [⇧](#-documentation-)
91
-
92
- ## [Quick Start]
93
- <i>These examples show how to parse SCTE-35<BR>
94
- from various SCTE-35 data formats, with both the cli and with the library.</i>
95
- <details><summary>MPEGTS</summary>
96
-
97
- * MPEGTS streams can be Files, Http(s), Multicast,SRT, UDP Unicast, or stdin.
98
- * __cli__
99
-
100
- ```js
101
- threefive https://example.com/video.ts
102
- ```
103
- * wildcards work too.
104
- ```js
105
- threefive /mpegts/*.ts
106
- ```
107
-
108
- * __lib__
109
- ```py3
110
-
111
- from threefive import Stream
112
- stream = Stream('https://example.com/video.ts')
113
- stream.decode()
114
-
115
- ```
116
- </details>
117
- <details><summary>Base64</summary>
118
-
119
- * __cli__
120
- ```js
121
- threefive '/DAsAAAAAyiYAP/wCgUAAAABf1+ZmQEBABECD0NVRUkAAAAAf4ABADUAAC2XQZU='
122
- ```
123
- * __lib__
124
- ```py3
125
-
126
- from threefive import Cue
127
- data = '/DAsAAAAAyiYAP/wCgUAAAABf1+ZmQEBABECD0NVRUkAAAAAf4ABADUAAC2XQZU='
128
- cue=Cue(data)
129
- cue.show()
130
- ```
131
-
132
- </details>
133
-
134
-
135
- <details><summary>Bytes</summary>
136
-
137
- * __cli__
138
- * Bytes don't work on the cli
139
-
140
- * __lib__
141
- ```py3
142
-
143
- from threefive import Cue
144
- data = b'\xfc0\x16\x00\x00\x00\x00\x00\x00\x00\xff\xf0\x05\x06\xfe\x00\xc0D\xa0\x00\x00\x00\xb5k\x88'
145
- cue=Cue(data)
146
- cue.show()
147
- ```
148
-
149
- </details>
150
-
151
- <details><summary>Hex</summary>
152
-
153
- * Can be a hex literal or hex string or bytes.
154
-
155
- * __cli__
156
- ```js
157
- threefive 0xfc301600000000000000fff00506fed605225b0000b0b65f3b
158
- ```
159
- * __lib__
160
- ```py3
161
-
162
- from threefive import Cue
163
- data = 0xfc301600000000000000fff00506fed605225b0000b0b65f3b
164
- cue=Cue(data)
165
- cue.show()
166
- ```
167
-
168
- </details>
169
-
170
-
171
- <details><summary>Int</summary>
172
-
173
- * Can be a literal integer or string or bytes.
174
-
175
- * __cli__
176
- ```js
177
- threefive 1583008701074197245727019716796221243043855984942057168199483
178
- ```
179
- * __lib__
180
- ```py3
181
-
182
- from threefive import Cue
183
- data = 1583008701074197245727019716796221243043855984942057168199483
184
- cue=Cue(data)
185
- cue.show()
186
- ```
187
-
188
-
189
- </details>
190
-
191
-
192
- <details><summary>JSON</summary>
193
-
194
- * __cli__
195
- * put JSON SCTE-35 in a file and redirect it into threefive
196
- * cat files to threefive works too.
197
- * echo JSON or type JSON on the command line.
198
-
199
- ```js
200
- threefive < json.json
201
- ```
202
- * __lib__
203
-
204
- ```py3
205
-
206
- from threefive import Cue
207
- data = '''{
208
- "info_section": {
209
- "table_id": "0xfc",
210
- "section_syntax_indicator": false,
211
- "private": false,
212
- "sap_type": "0x03",
213
- "sap_details": "No Sap Type",
214
- "section_length": 22,
215
- "protocol_version": 0,
216
- "encrypted_packet": false,
217
- "encryption_algorithm": 0,
218
- "pts_adjustment": 0.0,
219
- "cw_index": "0x00",
220
- "tier": "0x0fff",
221
- "splice_command_length": 5,
222
- "splice_command_type": 6,
223
- "descriptor_loop_length": 0,
224
- "crc": "0xb56b88"
225
- },
226
- "command": {
227
- "command_length": 5,
228
- "command_type": 6,
229
- "name": "Time Signal",
230
- "time_specified_flag": true,
231
- "pts_time": 140.005333
232
- },
233
- "descriptors": []
234
- }
235
- '''
236
- cue=Cue(data)
237
- cue.show()
238
- ```
239
-
240
- </details>
241
-
242
-
243
- <details><summary><u>Xml</u></summary>
244
-
245
- * __cli__
246
- * put xml SCTE-35 in a [file](xml.xml) and redirect it into threefive
247
- * cat files to threefive works too.
248
- * echo xml or type xml on the command line.
249
-
250
- ```js
251
- threefive < xml.xml
252
- ```
253
- * __lib__
254
- ```py3
255
- from threefive import Cue
256
- data = '''
257
- <scte35:SpliceInfoSection xmlns:scte35="https://scte.org/schemas/35"
258
- ptsAdjustment="0" protocolVersion="0" sapType="3" tier="4095">
259
- <scte35:TimeSignal>
260
- <scte35:SpliceTime ptsTime="12600480"/>
261
- </scte35:TimeSignal>
262
- </scte35:SpliceInfoSection>
263
- '''
264
- cue=Cue(data)
265
-
266
- cue.show()
267
- ```
268
-
269
-
270
- </details>
271
-
272
-
273
-
274
- <details><summary>Xml+binary</summary>
275
-
276
- * __cli__
277
- * write xml+binary to a [file](xmlbin.xml) and redirect it to threefive
278
- * cat files to threefive works too.
279
- * echo xml+binary or type xml+binary on the command line.
280
- ```js
281
- threefive < xmlbin.xml
282
- ```
283
- * __lib__
284
- ```py3
285
-
286
- from threefive import Cue
287
- data = '''<scte35:Signal xmlns:scte35="https://scte.org/schemas/35">
288
- <scte35:Binary>/DAWAAAAAAAAAP/wBQb+AMBEoAAAALVriA==</scte35:Binary>
289
- </scte35:Signal>
290
- '''
291
- cue=Cue(data)
292
- cue.show()
293
- ```
294
-
295
- </details>
296
-
297
- </samp>
298
-
299
- ___
300
-
301
- # [⇧](#-documentation-)
302
-
303
83
  ### [CLI]
304
84
  The threefive cli tool is able to parse SCTE-35 from MPEGTS Streams,Base64,Hex,Integers,JSON XML,and XMLBinary.
305
85
  The format is auto-detected.
306
86
 
307
87
  # [⇧](#-documentation-)
308
88
 
89
+ #### [ Parse SCTE-35 from HLS with threefive ]
90
+ ```js
91
+ threefive https://example.com/master.m3u8
92
+ ```
93
+
309
94
  #### [ Parse SCTE-35 from MPEGTS ]
310
95
  SCTE-35 can be parsed from MPEGTS over a variety of protocols.
311
96
  * __SCTE-35 Input__: MPEGTS
@@ -428,19 +213,13 @@ gums is part of threefive.
428
213
 
429
214
  # [⇧](#-documentation-)
430
215
 
431
- #### scte35hls
216
+ #### HLS
432
217
 
433
218
  * parse HLS for SCTE-35. Supports all HLS SCTE-35 tags.
434
219
 
435
220
  ```js
436
- $ scte35hls -h
437
-
438
- [ threefive hls ]
439
-
440
- [ Help ]
441
-
442
- To display this help:
443
- scte35hls help
221
+ $ threefive hls help
222
+ ```
444
223
 
445
224
  [ Input ]
446
225
  threefive hls takes an m3u8 URI as input.
@@ -1,7 +1,7 @@
1
1
 
2
2
  [project]
3
3
  name = "threefive"
4
- version = "3.0.91"
4
+ version = "3.0.93"
5
5
  authors = [
6
6
  { name="AdrianofDoom", email="spam@iodisco.com" },
7
7
  ]
@@ -31,7 +31,6 @@ Issues = "https://github.com/superkabuki/threefive/issues"
31
31
  [project.scripts]
32
32
  scte35bump = "threefive.bump:cli"
33
33
  gums = "threefive.gums:cli"
34
- scte35hls = "threefive.hls:cli"
35
34
  scte35fix = "threefive.sixfix:cli"
36
35
  scte35inject = "threefive.superkabuki:cli"
37
36
  threefive = "threefive.cli:threefivecli"
@@ -82,7 +82,7 @@ def done():
82
82
  done prints the threefive version, interpreter version,
83
83
  and calls sys.exit()
84
84
  """
85
- # print2(f"# threefive: {version} on python: {sys.version}")
85
+ print2(f"# threefive: {version} on python: {sys.version}")
86
86
  sys.exit()
87
87
 
88
88
 
@@ -441,6 +441,22 @@ def dashdashhelp():
441
441
  sys.argv[idx] = "--help"
442
442
 
443
443
 
444
+ def chk_hls():
445
+ """
446
+ chk_hls check if an m3u8 has
447
+ been passed on the command line
448
+ and call the hlscli if it is an m3u8
449
+ """
450
+ try:
451
+ this = sys.argv[1]
452
+ packet = reader(this).read(188)
453
+ if b"#EXTM3U" in packet :
454
+ hlscli()
455
+ done()
456
+ except:
457
+ pass
458
+
459
+
444
460
  def threefivecli():
445
461
  """
446
462
  threefivecli check all the maps
@@ -453,6 +469,7 @@ def threefivecli():
453
469
 
454
470
  """
455
471
  dashdashhelp()
472
+ chk_hls()
456
473
  chk_print_map()
457
474
  chk_mpegts_map()
458
475
  chk_funk_map()
@@ -626,7 +626,7 @@ class EventDescriptor(SpliceDescriptor):
626
626
  self.elapsed = None
627
627
  self.remain = None
628
628
  self.property_count = 0
629
- self.property_list = []
629
+ self.properties = []
630
630
 
631
631
  def decode(self, bitbin=None):
632
632
  """
@@ -646,7 +646,7 @@ class EventDescriptor(SpliceDescriptor):
646
646
  while pc:
647
647
  prop = Property()
648
648
  prop.decode(bitbin)
649
- self.property_list.append(prop)
649
+ self.properties.append(prop)
650
650
  pc -= 1
651
651
 
652
652
  def encode(self, nbin=None):
@@ -664,7 +664,7 @@ class EventDescriptor(SpliceDescriptor):
664
664
  nbin.add_int(elapsed, 40)
665
665
  nbin.add_int(remain, 40)
666
666
  nbin.add_int(len(self.properties), 8)
667
- for prop in self.property_list:
667
+ for prop in self.properties:
668
668
  prop.encode(nbin)
669
669
  return nbin.bites
670
670
 
@@ -683,7 +683,7 @@ class EventDescriptor(SpliceDescriptor):
683
683
  "remain": int(self.remain * 10000),
684
684
  }
685
685
  ed = Node("EventDescriptor", attrs=attrs, ns=ns)
686
- for prop in self.property_list:
686
+ for prop in self.properties:
687
687
  ed.addchild(prop.xml())
688
688
  return ed
689
689