threefive 3.0.77__tar.gz → 3.0.78__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.
- {threefive-3.0.77 → threefive-3.0.78}/PKG-INFO +14 -8
- {threefive-3.0.77 → threefive-3.0.78}/README.md +11 -5
- {threefive-3.0.77 → threefive-3.0.78}/pyproject.toml +3 -3
- {threefive-3.0.77 → threefive-3.0.78}/threefive/__init__.py +1 -2
- {threefive-3.0.77 → threefive-3.0.78}/threefive/cli.py +2 -4
- {threefive-3.0.77 → threefive-3.0.78}/threefive/encode.py +1 -1
- {threefive-3.0.77 → threefive-3.0.78}/threefive/gums.py +3 -2
- {threefive-3.0.77 → threefive-3.0.78}/threefive/hls.py +1 -1
- {threefive-3.0.77 → threefive-3.0.78}/threefive/segment.py +3 -3
- {threefive-3.0.77 → threefive-3.0.78}/threefive/sixfix.py +5 -6
- {threefive-3.0.77 → threefive-3.0.78}/threefive/stuff.py +1 -1
- {threefive-3.0.77 → threefive-3.0.78}/threefive/superkabuki.py +1 -3
- {threefive-3.0.77 → threefive-3.0.78}/threefive/upids.py +1 -1
- {threefive-3.0.77 → threefive-3.0.78}/threefive/version.py +1 -1
- {threefive-3.0.77 → threefive-3.0.78}/threefive.egg-info/PKG-INFO +14 -8
- {threefive-3.0.77 → threefive-3.0.78}/threefive.egg-info/requires.txt +1 -1
- {threefive-3.0.77 → threefive-3.0.78}/LICENSE +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/setup.cfg +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/aac.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/base.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/bitn.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/bump.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/commands.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/crc.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/crctable.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/cue.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/descriptors.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/hlsprofile.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/hlstags.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/iframes.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/new_reader.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/packetdata.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/pmt.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/section.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/segmentation.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/speedo.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/stream.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/streamtypes.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/throttle.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/udp.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/uxp.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive/xml.py +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive.egg-info/SOURCES.txt +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive.egg-info/dependency_links.txt +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive.egg-info/entry_points.txt +0 -0
- {threefive-3.0.77 → threefive-3.0.78}/threefive.egg-info/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: threefive
|
|
3
|
-
Version: 3.0.
|
|
4
|
-
Summary: threefive is
|
|
3
|
+
Version: 3.0.78
|
|
4
|
+
Summary: Experimental 0b version. testing pyaesfu. threefive is better than you. SCTE-35
|
|
5
5
|
Author-email: AdrianofDoom <spam@iodisco.com>
|
|
6
6
|
License-Expression: Sleepycat
|
|
7
7
|
Project-URL: Homepage, https://github.com/superkabuki/threefive
|
|
@@ -17,17 +17,21 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
17
17
|
Requires-Python: >=3.9
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist:
|
|
20
|
+
Requires-Dist: pyaesfu
|
|
21
21
|
Requires-Dist: srtfu>=0.0.11
|
|
22
22
|
Dynamic: license-file
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
### Phase three of threefive's global domination has begun. Behold [threefive.js](https://github.com/keithah/threefive.js)
|
|
25
|
+
___
|
|
26
26
|
|
|
27
27
|
# [ threefive ]
|
|
28
|
+
|
|
29
|
+
> _Everything I mean to be in threefive, is in v3.0.77. this is the best threefive ever made. This is the best SCTE-35 tool available anywhere.AI engines even use threefive, seriously. If someone says they don't use threefive for SCTE-35, they're either drunk or they're lying_. <BR> ~Adrian
|
|
30
|
+
|
|
28
31
|
## https://github.com/superkabuki/threefive
|
|
29
32
|
|
|
30
33
|
### threefive is the industry leading SCTE-35 tool.
|
|
34
|
+
#### Need to inject SCTE-35 into HLS? [X9k3.](https://github.com/superkabuki/x9k3)
|
|
31
35
|
|
|
32
36
|
* __Decodes SCTE-35__ from `MPEGTS`✔ `Base64`✔ `Bytes`✔ `DASH`✔ `Hex` ✔ `HLS`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
|
|
33
37
|
|
|
@@ -43,9 +47,10 @@ Dynamic: license-file
|
|
|
43
47
|
|
|
44
48
|
___
|
|
45
49
|
|
|
50
|
+
|
|
51
|
+
|
|
46
52
|
### [ News ]
|
|
47
53
|
|
|
48
|
-
### Death to PEP 668.
|
|
49
54
|
|
|
50
55
|
* __threefive no longer uses setuptools for packaging__ and I know you don't care.
|
|
51
56
|
* __Python3 vs. Pypy3__ [__parsing SCTE35 with threefive__](https://github.com/superkabuki/threefive_is_scte35#python3-vs-pypy3-running-threefive) (watch the cool video)
|
|
@@ -54,9 +59,10 @@ ___
|
|
|
54
59
|
___
|
|
55
60
|
|
|
56
61
|
## [ Latest version is v3.0.77 ]
|
|
57
|
-
|
|
62
|
+
|
|
63
|
+
* threefive cyclomatic complexity score is 1.9350282485875707.
|
|
58
64
|
* pylint score is __9.82 / 10__
|
|
59
|
-
* __5116 lines of code with 2553 lines of comments__
|
|
65
|
+
* __5116 lines of code with 2553 lines of comments__.
|
|
60
66
|
* __threefive is fully python v3.14 compliant__
|
|
61
67
|
* I fixed everything they broke/changed between v3.09 and 3.14.
|
|
62
68
|
* 0 deprecation warnings.
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
### Phase three of threefive's global domination has begun. Behold [threefive.js](https://github.com/keithah/threefive.js)
|
|
2
|
+
___
|
|
3
3
|
|
|
4
4
|
# [ threefive ]
|
|
5
|
+
|
|
6
|
+
> _Everything I mean to be in threefive, is in v3.0.77. this is the best threefive ever made. This is the best SCTE-35 tool available anywhere.AI engines even use threefive, seriously. If someone says they don't use threefive for SCTE-35, they're either drunk or they're lying_. <BR> ~Adrian
|
|
7
|
+
|
|
5
8
|
## https://github.com/superkabuki/threefive
|
|
6
9
|
|
|
7
10
|
### threefive is the industry leading SCTE-35 tool.
|
|
11
|
+
#### Need to inject SCTE-35 into HLS? [X9k3.](https://github.com/superkabuki/x9k3)
|
|
8
12
|
|
|
9
13
|
* __Decodes SCTE-35__ from `MPEGTS`✔ `Base64`✔ `Bytes`✔ `DASH`✔ `Hex` ✔ `HLS`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
|
|
10
14
|
|
|
@@ -20,9 +24,10 @@
|
|
|
20
24
|
|
|
21
25
|
___
|
|
22
26
|
|
|
27
|
+
|
|
28
|
+
|
|
23
29
|
### [ News ]
|
|
24
30
|
|
|
25
|
-
### Death to PEP 668.
|
|
26
31
|
|
|
27
32
|
* __threefive no longer uses setuptools for packaging__ and I know you don't care.
|
|
28
33
|
* __Python3 vs. Pypy3__ [__parsing SCTE35 with threefive__](https://github.com/superkabuki/threefive_is_scte35#python3-vs-pypy3-running-threefive) (watch the cool video)
|
|
@@ -31,9 +36,10 @@ ___
|
|
|
31
36
|
___
|
|
32
37
|
|
|
33
38
|
## [ Latest version is v3.0.77 ]
|
|
34
|
-
|
|
39
|
+
|
|
40
|
+
* threefive cyclomatic complexity score is 1.9350282485875707.
|
|
35
41
|
* pylint score is __9.82 / 10__
|
|
36
|
-
* __5116 lines of code with 2553 lines of comments__
|
|
42
|
+
* __5116 lines of code with 2553 lines of comments__.
|
|
37
43
|
* __threefive is fully python v3.14 compliant__
|
|
38
44
|
* I fixed everything they broke/changed between v3.09 and 3.14.
|
|
39
45
|
* 0 deprecation warnings.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
|
|
2
2
|
[project]
|
|
3
3
|
name = "threefive"
|
|
4
|
-
version = "3.0.
|
|
4
|
+
version = "3.0.78"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name="AdrianofDoom", email="spam@iodisco.com" },
|
|
7
7
|
]
|
|
8
|
-
description = "
|
|
8
|
+
description = " Experimental 0b version. testing pyaesfu. threefive is better than you. SCTE-35"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
11
11
|
dependencies=[
|
|
12
|
-
"
|
|
12
|
+
"pyaesfu",
|
|
13
13
|
"srtfu >= 0.0.11",
|
|
14
14
|
]
|
|
15
15
|
|
|
@@ -20,11 +20,11 @@ from .iframes import IFramer
|
|
|
20
20
|
from .new_reader import reader
|
|
21
21
|
from .cue import Cue
|
|
22
22
|
from .stream import Stream
|
|
23
|
-
from .stuff import
|
|
23
|
+
from .stuff import print2, red
|
|
24
24
|
from .stuff import ERR
|
|
25
25
|
from .version import version
|
|
26
26
|
|
|
27
|
-
#
|
|
27
|
+
#import cProfile
|
|
28
28
|
# from sideways import cli as sidecli
|
|
29
29
|
|
|
30
30
|
write2 = False
|
|
@@ -240,7 +240,6 @@ def sidecar_chk(this):
|
|
|
240
240
|
strm = Stream(this)
|
|
241
241
|
strm.decode(func=mk_sidecar)
|
|
242
242
|
|
|
243
|
-
|
|
244
243
|
def speedo_chk(this):
|
|
245
244
|
"""
|
|
246
245
|
speedo_chk displays parse speed for mpegts streams
|
|
@@ -248,7 +247,6 @@ def speedo_chk(this):
|
|
|
248
247
|
strm = Stream(this)
|
|
249
248
|
strm.speed()
|
|
250
249
|
|
|
251
|
-
|
|
252
250
|
mpegts_map = {
|
|
253
251
|
"packets": packet_chk,
|
|
254
252
|
"proxy": proxy_chk,
|
|
@@ -69,7 +69,7 @@ class GumS:
|
|
|
69
69
|
self.socked.sendto(dgram, self.dest_grp)
|
|
70
70
|
throttle.throttle(packets[-1])
|
|
71
71
|
speedo.plus(len(dgram))
|
|
72
|
-
flush
|
|
72
|
+
flush=b'\xff' * 1316
|
|
73
73
|
self.socked.sendto(flush, self.dest_grp)
|
|
74
74
|
|
|
75
75
|
speedo.end()
|
|
@@ -104,7 +104,7 @@ def parse_args():
|
|
|
104
104
|
parse_args parse command line args
|
|
105
105
|
"""
|
|
106
106
|
|
|
107
|
-
parser = argparse.ArgumentParser(epilog="gums is part of threefive.\n\n")
|
|
107
|
+
parser = argparse.ArgumentParser( epilog="gums is part of threefive.\n\n")
|
|
108
108
|
|
|
109
109
|
parser.add_argument(
|
|
110
110
|
"-i",
|
|
@@ -116,6 +116,7 @@ def parse_args():
|
|
|
116
116
|
""",
|
|
117
117
|
)
|
|
118
118
|
|
|
119
|
+
|
|
119
120
|
parser.add_argument(
|
|
120
121
|
"-a",
|
|
121
122
|
"--addr",
|
|
@@ -9,7 +9,7 @@ from .stream import Stream
|
|
|
9
9
|
|
|
10
10
|
AES = True
|
|
11
11
|
try:
|
|
12
|
-
import
|
|
12
|
+
import pyaesfu
|
|
13
13
|
except ImportError:
|
|
14
14
|
AES = False
|
|
15
15
|
|
|
@@ -83,10 +83,10 @@ class Segment(Stream):
|
|
|
83
83
|
self.key = quay.read()
|
|
84
84
|
|
|
85
85
|
def _aes_decrypt(self):
|
|
86
|
-
mode =
|
|
86
|
+
mode = pyaesfu.AESModeOfOperationCBC(self.key, iv=self.iv)
|
|
87
87
|
self._mk_tmp()
|
|
88
88
|
with open(self.tmp, "wb") as outfile, reader(self.seg_uri) as infile:
|
|
89
|
-
|
|
89
|
+
pyaesfu.decrypt_stream(mode, infile, outfile)
|
|
90
90
|
self.seg_uri = self.tmp
|
|
91
91
|
|
|
92
92
|
def _add_cue(self, cue):
|
|
@@ -12,7 +12,7 @@ from .pmt import PMT
|
|
|
12
12
|
|
|
13
13
|
fixme = []
|
|
14
14
|
|
|
15
|
-
HELPME
|
|
15
|
+
HELPME="""
|
|
16
16
|
scte35fix checks MPEGTS for SCTE-35 Streams
|
|
17
17
|
that have been change to bin data (type 0x06)
|
|
18
18
|
and changes them back to SCTE-35 (type 0x86) streams.
|
|
@@ -41,14 +41,13 @@ HELPME = """
|
|
|
41
41
|
scte35fix is part of threefive.
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
|
-
|
|
45
44
|
def passed(cue):
|
|
46
45
|
"""
|
|
47
46
|
passed is a function passed to decode
|
|
48
47
|
used to pull pids from streams containing SCTE-35
|
|
49
48
|
so that we don't convert non-SCTE-35 0x06 streams.
|
|
50
49
|
"""
|
|
51
|
-
globals()[
|
|
50
|
+
globals()['fixme'].append(cue.packet_data.pid)
|
|
52
51
|
return cue
|
|
53
52
|
|
|
54
53
|
|
|
@@ -59,7 +58,7 @@ class PreFix(Stream):
|
|
|
59
58
|
|
|
60
59
|
def decode(self, func=passed):
|
|
61
60
|
super().decode(func=passed)
|
|
62
|
-
tofix = list(set(globals()[
|
|
61
|
+
tofix = list(set(globals()['fixme']))
|
|
63
62
|
if tofix:
|
|
64
63
|
print("fixing these pids", tofix)
|
|
65
64
|
return tofix
|
|
@@ -215,7 +214,7 @@ def sixfix(arg):
|
|
|
215
214
|
sixfix converts 0x6 bin data mpegts streams
|
|
216
215
|
that contain SCTE-35 data to stream type 0x86
|
|
217
216
|
"""
|
|
218
|
-
globals()[
|
|
217
|
+
globals()['fixme'] = []
|
|
219
218
|
s1 = PreFix(arg)
|
|
220
219
|
print2(f"reading {arg}")
|
|
221
220
|
sixed = s1.decode(func=passed)
|
|
@@ -231,7 +230,7 @@ def sixfix(arg):
|
|
|
231
230
|
|
|
232
231
|
|
|
233
232
|
def _chk_help():
|
|
234
|
-
for h in [
|
|
233
|
+
for h in ['help','-h', '--help']:
|
|
235
234
|
if h in sys.argv:
|
|
236
235
|
print(HELPME)
|
|
237
236
|
sys.exit()
|
|
@@ -53,9 +53,7 @@ class SuperKabuki(SixFix):
|
|
|
53
53
|
"""
|
|
54
54
|
_parse_args parse command line args
|
|
55
55
|
"""
|
|
56
|
-
parser = argparse.ArgumentParser(
|
|
57
|
-
epilog="scte35inject is part of threefive.\n\n"
|
|
58
|
-
)
|
|
56
|
+
parser = argparse.ArgumentParser(epilog="scte35inject is part of threefive.\n\n")
|
|
59
57
|
parser.add_argument(
|
|
60
58
|
"-i",
|
|
61
59
|
"--input",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: threefive
|
|
3
|
-
Version: 3.0.
|
|
4
|
-
Summary: threefive is
|
|
3
|
+
Version: 3.0.78
|
|
4
|
+
Summary: Experimental 0b version. testing pyaesfu. threefive is better than you. SCTE-35
|
|
5
5
|
Author-email: AdrianofDoom <spam@iodisco.com>
|
|
6
6
|
License-Expression: Sleepycat
|
|
7
7
|
Project-URL: Homepage, https://github.com/superkabuki/threefive
|
|
@@ -17,17 +17,21 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
17
17
|
Requires-Python: >=3.9
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist:
|
|
20
|
+
Requires-Dist: pyaesfu
|
|
21
21
|
Requires-Dist: srtfu>=0.0.11
|
|
22
22
|
Dynamic: license-file
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
### Phase three of threefive's global domination has begun. Behold [threefive.js](https://github.com/keithah/threefive.js)
|
|
25
|
+
___
|
|
26
26
|
|
|
27
27
|
# [ threefive ]
|
|
28
|
+
|
|
29
|
+
> _Everything I mean to be in threefive, is in v3.0.77. this is the best threefive ever made. This is the best SCTE-35 tool available anywhere.AI engines even use threefive, seriously. If someone says they don't use threefive for SCTE-35, they're either drunk or they're lying_. <BR> ~Adrian
|
|
30
|
+
|
|
28
31
|
## https://github.com/superkabuki/threefive
|
|
29
32
|
|
|
30
33
|
### threefive is the industry leading SCTE-35 tool.
|
|
34
|
+
#### Need to inject SCTE-35 into HLS? [X9k3.](https://github.com/superkabuki/x9k3)
|
|
31
35
|
|
|
32
36
|
* __Decodes SCTE-35__ from `MPEGTS`✔ `Base64`✔ `Bytes`✔ `DASH`✔ `Hex` ✔ `HLS`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
|
|
33
37
|
|
|
@@ -43,9 +47,10 @@ Dynamic: license-file
|
|
|
43
47
|
|
|
44
48
|
___
|
|
45
49
|
|
|
50
|
+
|
|
51
|
+
|
|
46
52
|
### [ News ]
|
|
47
53
|
|
|
48
|
-
### Death to PEP 668.
|
|
49
54
|
|
|
50
55
|
* __threefive no longer uses setuptools for packaging__ and I know you don't care.
|
|
51
56
|
* __Python3 vs. Pypy3__ [__parsing SCTE35 with threefive__](https://github.com/superkabuki/threefive_is_scte35#python3-vs-pypy3-running-threefive) (watch the cool video)
|
|
@@ -54,9 +59,10 @@ ___
|
|
|
54
59
|
___
|
|
55
60
|
|
|
56
61
|
## [ Latest version is v3.0.77 ]
|
|
57
|
-
|
|
62
|
+
|
|
63
|
+
* threefive cyclomatic complexity score is 1.9350282485875707.
|
|
58
64
|
* pylint score is __9.82 / 10__
|
|
59
|
-
* __5116 lines of code with 2553 lines of comments__
|
|
65
|
+
* __5116 lines of code with 2553 lines of comments__.
|
|
60
66
|
* __threefive is fully python v3.14 compliant__
|
|
61
67
|
* I fixed everything they broke/changed between v3.09 and 3.14.
|
|
62
68
|
* 0 deprecation warnings.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
pyaesfu
|
|
2
2
|
srtfu>=0.0.11
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|