threefive 3.0.78__tar.gz → 3.0.81__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.78 → threefive-3.0.81}/PKG-INFO +37 -16
- {threefive-3.0.78 → threefive-3.0.81}/README.md +35 -10
- {threefive-3.0.78 → threefive-3.0.81}/pyproject.toml +3 -6
- {threefive-3.0.78 → threefive-3.0.81}/threefive/__init__.py +2 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive/cli.py +4 -2
- {threefive-3.0.78 → threefive-3.0.81}/threefive/encode.py +1 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive/gums.py +2 -3
- {threefive-3.0.78 → threefive-3.0.81}/threefive/hls.py +1 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive/new_reader.py +15 -2
- {threefive-3.0.78 → threefive-3.0.81}/threefive/segment.py +2 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive/sixfix.py +6 -5
- {threefive-3.0.78 → threefive-3.0.81}/threefive/stuff.py +1 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive/superkabuki.py +3 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive/upids.py +1 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive/version.py +1 -1
- {threefive-3.0.78 → threefive-3.0.81}/threefive.egg-info/PKG-INFO +37 -16
- {threefive-3.0.78 → threefive-3.0.81}/threefive.egg-info/SOURCES.txt +0 -1
- threefive-3.0.78/threefive.egg-info/requires.txt +0 -2
- {threefive-3.0.78 → threefive-3.0.81}/LICENSE +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/setup.cfg +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/aac.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/base.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/bitn.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/bump.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/commands.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/crc.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/crctable.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/cue.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/descriptors.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/hlsprofile.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/hlstags.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/iframes.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/packetdata.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/pmt.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/section.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/segmentation.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/speedo.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/stream.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/streamtypes.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/throttle.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/udp.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/uxp.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive/xml.py +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive.egg-info/dependency_links.txt +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive.egg-info/entry_points.txt +0 -0
- {threefive-3.0.78 → threefive-3.0.81}/threefive.egg-info/top_level.txt +0 -0
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: threefive
|
|
3
|
-
Version: 3.0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 3.0.81
|
|
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
|
|
7
7
|
Project-URL: Homepage, https://github.com/superkabuki/threefive
|
|
8
8
|
Project-URL: Issues, https://github.com/superkabuki/threefive/issues
|
|
9
9
|
Classifier: Environment :: Console
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
|
-
Classifier: Operating System :: POSIX :: BSD :: OpenBSD
|
|
12
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
13
11
|
Classifier: Topic :: Multimedia :: Video
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.9
|
|
15
13
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -17,16 +15,14 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
17
15
|
Requires-Python: >=3.9
|
|
18
16
|
Description-Content-Type: text/markdown
|
|
19
17
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: pyaesfu
|
|
21
|
-
Requires-Dist: srtfu>=0.0.11
|
|
22
18
|
Dynamic: license-file
|
|
23
19
|
|
|
24
|
-
###
|
|
25
|
-
|
|
20
|
+
### It is now official, phase three of threefive's global domination has begun. Behold [threefive.js](https://github.com/keithah/threefive.js)
|
|
21
|
+
_(ominous music plays in the background)_
|
|
26
22
|
|
|
27
23
|
# [ threefive ]
|
|
28
24
|
|
|
29
|
-
>
|
|
25
|
+
> _... If someone says they don't use threefive for SCTE-35, they're either drunk or they're lying_. <BR> ~Adrian
|
|
30
26
|
|
|
31
27
|
## https://github.com/superkabuki/threefive
|
|
32
28
|
|
|
@@ -58,11 +54,11 @@ ___
|
|
|
58
54
|
* I have been __trying to setup threefive on readthedocs__,it's not going very well, but I'm working on it.
|
|
59
55
|
___
|
|
60
56
|
|
|
61
|
-
## [ Latest version is v3.0.
|
|
57
|
+
## [ Latest version is v3.0.81 ]
|
|
62
58
|
|
|
63
|
-
* threefive cyclomatic complexity score is 1.
|
|
64
|
-
*
|
|
65
|
-
*
|
|
59
|
+
* threefive cyclomatic complexity score is 1.9337094499294782 _( that's better than the Python standard library)_ .
|
|
60
|
+
* __threefive now has NO External Dependencies__
|
|
61
|
+
* SRT and AES support is now optional
|
|
66
62
|
* __threefive is fully python v3.14 compliant__
|
|
67
63
|
* I fixed everything they broke/changed between v3.09 and 3.14.
|
|
68
64
|
* 0 deprecation warnings.
|
|
@@ -111,20 +107,45 @@ ___
|
|
|
111
107
|
</samp>
|
|
112
108
|
|
|
113
109
|
## [Install]
|
|
114
|
-
*
|
|
110
|
+
* __python3 via pip__
|
|
115
111
|
```rebol
|
|
116
112
|
python3 -mpip install threefive
|
|
117
113
|
```
|
|
118
|
-
*
|
|
114
|
+
* __pypy3 via pip__
|
|
119
115
|
```rebol
|
|
120
116
|
pypy3 -mpip install threefive
|
|
121
117
|
```
|
|
122
|
-
*
|
|
118
|
+
* __To add SRT support__
|
|
119
|
+
```py3
|
|
120
|
+
python3 -m pip install srtfu
|
|
121
|
+
```
|
|
122
|
+
* __To add Automatic AES decryption__
|
|
123
|
+
```py3
|
|
124
|
+
python3 -mpip install pyaes
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
* __From the git repo__
|
|
128
|
+
|
|
123
129
|
```rebol
|
|
124
130
|
git clone https://github.com/superkabuki/scte35.git
|
|
125
131
|
cd threefive
|
|
126
132
|
make install
|
|
127
133
|
```
|
|
134
|
+
* I've jazzed up the makefile to make it easier to install for different python versions and pypy3
|
|
135
|
+
```rebol
|
|
136
|
+
git clone https://github.com/superkabuki/scte35.git
|
|
137
|
+
cd threefive
|
|
138
|
+
|
|
139
|
+
make install py3=pypy3
|
|
140
|
+
|
|
141
|
+
# OR
|
|
142
|
+
|
|
143
|
+
make install py3=python3.14
|
|
144
|
+
|
|
145
|
+
# works for any python in your path or use a full path if needed.
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
|
|
128
149
|
___
|
|
129
150
|
|
|
130
151
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
###
|
|
2
|
-
|
|
1
|
+
### It is now official, phase three of threefive's global domination has begun. Behold [threefive.js](https://github.com/keithah/threefive.js)
|
|
2
|
+
_(ominous music plays in the background)_
|
|
3
3
|
|
|
4
4
|
# [ threefive ]
|
|
5
5
|
|
|
6
|
-
>
|
|
6
|
+
> _... If someone says they don't use threefive for SCTE-35, they're either drunk or they're lying_. <BR> ~Adrian
|
|
7
7
|
|
|
8
8
|
## https://github.com/superkabuki/threefive
|
|
9
9
|
|
|
@@ -35,11 +35,11 @@ ___
|
|
|
35
35
|
* I have been __trying to setup threefive on readthedocs__,it's not going very well, but I'm working on it.
|
|
36
36
|
___
|
|
37
37
|
|
|
38
|
-
## [ Latest version is v3.0.
|
|
38
|
+
## [ Latest version is v3.0.81 ]
|
|
39
39
|
|
|
40
|
-
* threefive cyclomatic complexity score is 1.
|
|
41
|
-
*
|
|
42
|
-
*
|
|
40
|
+
* threefive cyclomatic complexity score is 1.9337094499294782 _( that's better than the Python standard library)_ .
|
|
41
|
+
* __threefive now has NO External Dependencies__
|
|
42
|
+
* SRT and AES support is now optional
|
|
43
43
|
* __threefive is fully python v3.14 compliant__
|
|
44
44
|
* I fixed everything they broke/changed between v3.09 and 3.14.
|
|
45
45
|
* 0 deprecation warnings.
|
|
@@ -88,20 +88,45 @@ ___
|
|
|
88
88
|
</samp>
|
|
89
89
|
|
|
90
90
|
## [Install]
|
|
91
|
-
*
|
|
91
|
+
* __python3 via pip__
|
|
92
92
|
```rebol
|
|
93
93
|
python3 -mpip install threefive
|
|
94
94
|
```
|
|
95
|
-
*
|
|
95
|
+
* __pypy3 via pip__
|
|
96
96
|
```rebol
|
|
97
97
|
pypy3 -mpip install threefive
|
|
98
98
|
```
|
|
99
|
-
*
|
|
99
|
+
* __To add SRT support__
|
|
100
|
+
```py3
|
|
101
|
+
python3 -m pip install srtfu
|
|
102
|
+
```
|
|
103
|
+
* __To add Automatic AES decryption__
|
|
104
|
+
```py3
|
|
105
|
+
python3 -mpip install pyaes
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
* __From the git repo__
|
|
109
|
+
|
|
100
110
|
```rebol
|
|
101
111
|
git clone https://github.com/superkabuki/scte35.git
|
|
102
112
|
cd threefive
|
|
103
113
|
make install
|
|
104
114
|
```
|
|
115
|
+
* I've jazzed up the makefile to make it easier to install for different python versions and pypy3
|
|
116
|
+
```rebol
|
|
117
|
+
git clone https://github.com/superkabuki/scte35.git
|
|
118
|
+
cd threefive
|
|
119
|
+
|
|
120
|
+
make install py3=pypy3
|
|
121
|
+
|
|
122
|
+
# OR
|
|
123
|
+
|
|
124
|
+
make install py3=python3.14
|
|
125
|
+
|
|
126
|
+
# works for any python in your path or use a full path if needed.
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
|
|
105
130
|
___
|
|
106
131
|
|
|
107
132
|
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
|
|
2
2
|
[project]
|
|
3
3
|
name = "threefive"
|
|
4
|
-
version = "3.0.
|
|
4
|
+
version = "3.0.81"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name="AdrianofDoom", email="spam@iodisco.com" },
|
|
7
7
|
]
|
|
8
|
-
description = "
|
|
8
|
+
description = "threefive is The #1 SCTE-35 Decoder and Encoder on the Planet."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
11
11
|
dependencies=[
|
|
12
|
-
|
|
13
|
-
"srtfu >= 0.0.11",
|
|
12
|
+
|
|
14
13
|
]
|
|
15
14
|
|
|
16
15
|
|
|
@@ -18,8 +17,6 @@ dependencies=[
|
|
|
18
17
|
classifiers = [
|
|
19
18
|
"Environment :: Console",
|
|
20
19
|
"Operating System :: OS Independent",
|
|
21
|
-
"Operating System :: POSIX :: BSD :: OpenBSD",
|
|
22
|
-
"Operating System :: POSIX :: Linux",
|
|
23
20
|
"Topic :: Multimedia :: Video",
|
|
24
21
|
"Programming Language :: Python :: 3.9",
|
|
25
22
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
@@ -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
|
-
#import cProfile
|
|
27
|
+
# import cProfile
|
|
28
28
|
# from sideways import cli as sidecli
|
|
29
29
|
|
|
30
30
|
write2 = False
|
|
@@ -240,6 +240,7 @@ def sidecar_chk(this):
|
|
|
240
240
|
strm = Stream(this)
|
|
241
241
|
strm.decode(func=mk_sidecar)
|
|
242
242
|
|
|
243
|
+
|
|
243
244
|
def speedo_chk(this):
|
|
244
245
|
"""
|
|
245
246
|
speedo_chk displays parse speed for mpegts streams
|
|
@@ -247,6 +248,7 @@ def speedo_chk(this):
|
|
|
247
248
|
strm = Stream(this)
|
|
248
249
|
strm.speed()
|
|
249
250
|
|
|
251
|
+
|
|
250
252
|
mpegts_map = {
|
|
251
253
|
"packets": packet_chk,
|
|
252
254
|
"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=b
|
|
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(
|
|
107
|
+
parser = argparse.ArgumentParser(epilog="gums is part of threefive.\n\n")
|
|
108
108
|
|
|
109
109
|
parser.add_argument(
|
|
110
110
|
"-i",
|
|
@@ -116,7 +116,6 @@ def parse_args():
|
|
|
116
116
|
""",
|
|
117
117
|
)
|
|
118
118
|
|
|
119
|
-
|
|
120
119
|
parser.add_argument(
|
|
121
120
|
"-a",
|
|
122
121
|
"--addr",
|
|
@@ -8,7 +8,12 @@ import socket
|
|
|
8
8
|
import sys
|
|
9
9
|
import urllib.request
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
try:
|
|
12
|
+
from srtfu import SRTfu, SRTO_TRANSTYPE, SRT_LIVE, SRTO_RCVSYN, SRTO_RCVBUF
|
|
13
|
+
|
|
14
|
+
HAS_SRT = True
|
|
15
|
+
except ImportError:
|
|
16
|
+
HAS_SRT = False
|
|
12
17
|
from .udp import udp_receiver, mcast_ttl
|
|
13
18
|
from .stuff import blue, ERR, pif, print2
|
|
14
19
|
|
|
@@ -32,6 +37,14 @@ def corsreader(uri, headers={}):
|
|
|
32
37
|
return reader(uri, headers=all_headers)
|
|
33
38
|
|
|
34
39
|
|
|
40
|
+
def try_srt(url, headers={}):
|
|
41
|
+
if HAS_SRT:
|
|
42
|
+
return _do_srt(uri, headers=headers)
|
|
43
|
+
else:
|
|
44
|
+
print2("pip install srtfu to add SRT support")
|
|
45
|
+
return False
|
|
46
|
+
|
|
47
|
+
|
|
35
48
|
def reader(uri, headers={}):
|
|
36
49
|
"""
|
|
37
50
|
|
|
@@ -74,7 +87,7 @@ def reader(uri, headers={}):
|
|
|
74
87
|
return urllib.request.urlopen(req)
|
|
75
88
|
# SRT
|
|
76
89
|
if uri.startswith("srt://"):
|
|
77
|
-
return
|
|
90
|
+
return try_srt(uri, headers=headers)
|
|
78
91
|
# File
|
|
79
92
|
return open(uri, "rb")
|
|
80
93
|
|
|
@@ -5,12 +5,13 @@ The threefive.Segment class
|
|
|
5
5
|
import os
|
|
6
6
|
from .new_reader import reader
|
|
7
7
|
from .stream import Stream
|
|
8
|
-
|
|
8
|
+
from .stuff import print2
|
|
9
9
|
|
|
10
10
|
AES = True
|
|
11
11
|
try:
|
|
12
12
|
import pyaesfu
|
|
13
13
|
except ImportError:
|
|
14
|
+
print2("pip install pyaes for AES support")
|
|
14
15
|
AES = False
|
|
15
16
|
|
|
16
17
|
|
|
@@ -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,13 +41,14 @@ HELPME="""
|
|
|
41
41
|
scte35fix is part of threefive.
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
|
+
|
|
44
45
|
def passed(cue):
|
|
45
46
|
"""
|
|
46
47
|
passed is a function passed to decode
|
|
47
48
|
used to pull pids from streams containing SCTE-35
|
|
48
49
|
so that we don't convert non-SCTE-35 0x06 streams.
|
|
49
50
|
"""
|
|
50
|
-
globals()[
|
|
51
|
+
globals()["fixme"].append(cue.packet_data.pid)
|
|
51
52
|
return cue
|
|
52
53
|
|
|
53
54
|
|
|
@@ -58,7 +59,7 @@ class PreFix(Stream):
|
|
|
58
59
|
|
|
59
60
|
def decode(self, func=passed):
|
|
60
61
|
super().decode(func=passed)
|
|
61
|
-
tofix = list(set(globals()[
|
|
62
|
+
tofix = list(set(globals()["fixme"]))
|
|
62
63
|
if tofix:
|
|
63
64
|
print("fixing these pids", tofix)
|
|
64
65
|
return tofix
|
|
@@ -214,7 +215,7 @@ def sixfix(arg):
|
|
|
214
215
|
sixfix converts 0x6 bin data mpegts streams
|
|
215
216
|
that contain SCTE-35 data to stream type 0x86
|
|
216
217
|
"""
|
|
217
|
-
globals()[
|
|
218
|
+
globals()["fixme"] = []
|
|
218
219
|
s1 = PreFix(arg)
|
|
219
220
|
print2(f"reading {arg}")
|
|
220
221
|
sixed = s1.decode(func=passed)
|
|
@@ -230,7 +231,7 @@ def sixfix(arg):
|
|
|
230
231
|
|
|
231
232
|
|
|
232
233
|
def _chk_help():
|
|
233
|
-
for h in [
|
|
234
|
+
for h in ["help", "-h", "--help"]:
|
|
234
235
|
if h in sys.argv:
|
|
235
236
|
print(HELPME)
|
|
236
237
|
sys.exit()
|
|
@@ -53,7 +53,9 @@ class SuperKabuki(SixFix):
|
|
|
53
53
|
"""
|
|
54
54
|
_parse_args parse command line args
|
|
55
55
|
"""
|
|
56
|
-
parser = argparse.ArgumentParser(
|
|
56
|
+
parser = argparse.ArgumentParser(
|
|
57
|
+
epilog="scte35inject is part of threefive.\n\n"
|
|
58
|
+
)
|
|
57
59
|
parser.add_argument(
|
|
58
60
|
"-i",
|
|
59
61
|
"--input",
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: threefive
|
|
3
|
-
Version: 3.0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 3.0.81
|
|
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
|
|
7
7
|
Project-URL: Homepage, https://github.com/superkabuki/threefive
|
|
8
8
|
Project-URL: Issues, https://github.com/superkabuki/threefive/issues
|
|
9
9
|
Classifier: Environment :: Console
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
|
-
Classifier: Operating System :: POSIX :: BSD :: OpenBSD
|
|
12
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
13
11
|
Classifier: Topic :: Multimedia :: Video
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.9
|
|
15
13
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -17,16 +15,14 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
17
15
|
Requires-Python: >=3.9
|
|
18
16
|
Description-Content-Type: text/markdown
|
|
19
17
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: pyaesfu
|
|
21
|
-
Requires-Dist: srtfu>=0.0.11
|
|
22
18
|
Dynamic: license-file
|
|
23
19
|
|
|
24
|
-
###
|
|
25
|
-
|
|
20
|
+
### It is now official, phase three of threefive's global domination has begun. Behold [threefive.js](https://github.com/keithah/threefive.js)
|
|
21
|
+
_(ominous music plays in the background)_
|
|
26
22
|
|
|
27
23
|
# [ threefive ]
|
|
28
24
|
|
|
29
|
-
>
|
|
25
|
+
> _... If someone says they don't use threefive for SCTE-35, they're either drunk or they're lying_. <BR> ~Adrian
|
|
30
26
|
|
|
31
27
|
## https://github.com/superkabuki/threefive
|
|
32
28
|
|
|
@@ -58,11 +54,11 @@ ___
|
|
|
58
54
|
* I have been __trying to setup threefive on readthedocs__,it's not going very well, but I'm working on it.
|
|
59
55
|
___
|
|
60
56
|
|
|
61
|
-
## [ Latest version is v3.0.
|
|
57
|
+
## [ Latest version is v3.0.81 ]
|
|
62
58
|
|
|
63
|
-
* threefive cyclomatic complexity score is 1.
|
|
64
|
-
*
|
|
65
|
-
*
|
|
59
|
+
* threefive cyclomatic complexity score is 1.9337094499294782 _( that's better than the Python standard library)_ .
|
|
60
|
+
* __threefive now has NO External Dependencies__
|
|
61
|
+
* SRT and AES support is now optional
|
|
66
62
|
* __threefive is fully python v3.14 compliant__
|
|
67
63
|
* I fixed everything they broke/changed between v3.09 and 3.14.
|
|
68
64
|
* 0 deprecation warnings.
|
|
@@ -111,20 +107,45 @@ ___
|
|
|
111
107
|
</samp>
|
|
112
108
|
|
|
113
109
|
## [Install]
|
|
114
|
-
*
|
|
110
|
+
* __python3 via pip__
|
|
115
111
|
```rebol
|
|
116
112
|
python3 -mpip install threefive
|
|
117
113
|
```
|
|
118
|
-
*
|
|
114
|
+
* __pypy3 via pip__
|
|
119
115
|
```rebol
|
|
120
116
|
pypy3 -mpip install threefive
|
|
121
117
|
```
|
|
122
|
-
*
|
|
118
|
+
* __To add SRT support__
|
|
119
|
+
```py3
|
|
120
|
+
python3 -m pip install srtfu
|
|
121
|
+
```
|
|
122
|
+
* __To add Automatic AES decryption__
|
|
123
|
+
```py3
|
|
124
|
+
python3 -mpip install pyaes
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
* __From the git repo__
|
|
128
|
+
|
|
123
129
|
```rebol
|
|
124
130
|
git clone https://github.com/superkabuki/scte35.git
|
|
125
131
|
cd threefive
|
|
126
132
|
make install
|
|
127
133
|
```
|
|
134
|
+
* I've jazzed up the makefile to make it easier to install for different python versions and pypy3
|
|
135
|
+
```rebol
|
|
136
|
+
git clone https://github.com/superkabuki/scte35.git
|
|
137
|
+
cd threefive
|
|
138
|
+
|
|
139
|
+
make install py3=pypy3
|
|
140
|
+
|
|
141
|
+
# OR
|
|
142
|
+
|
|
143
|
+
make install py3=python3.14
|
|
144
|
+
|
|
145
|
+
# works for any python in your path or use a full path if needed.
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
|
|
128
149
|
___
|
|
129
150
|
|
|
130
151
|
|
|
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
|