base64 encode script
This commit is contained in:
parent
e28fcf1ad4
commit
d18364f4cd
@ -4,6 +4,7 @@ RUN ["mkdir", "/app"]
|
|||||||
COPY ["stream.py", "/app/stream.py"]
|
COPY ["stream.py", "/app/stream.py"]
|
||||||
COPY ["sources.py", "/app/sources.py"]
|
COPY ["sources.py", "/app/sources.py"]
|
||||||
COPY ["index.html", "/app/index.html"]
|
COPY ["index.html", "/app/index.html"]
|
||||||
|
COPY ["script.js", "/app/script.js"]
|
||||||
RUN ["chmod", "-R", "755", "/app"]
|
RUN ["chmod", "-R", "755", "/app"]
|
||||||
COPY ["tv.json", "/app/tv.json"]
|
COPY ["tv.json", "/app/tv.json"]
|
||||||
RUN ["python3", "/app/sources.py"]
|
RUN ["python3", "/app/sources.py"]
|
||||||
|
17
index.html
17
index.html
@ -2,22 +2,9 @@
|
|||||||
<head>
|
<head>
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/video.js/{{ videojs_version }}/video-js.css">
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/video.js/{{ videojs_version }}/video-js.css">
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/{{ videojs_version }}/video.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/{{ videojs_version }}/video.min.js"></script>
|
||||||
|
<script src="{{ script }}"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<video class="video-js" id="player" controls>
|
<video class="video-js" id="player" controls></video>
|
||||||
</video>
|
|
||||||
<script>
|
|
||||||
let xhr = new XmlHttpRequest();
|
|
||||||
xhr.onreadystatechange = () => {
|
|
||||||
let ctype = xhr.getResponseHeader("Content-Type");
|
|
||||||
let player = videojs("player");
|
|
||||||
let source = {};
|
|
||||||
source.type = ctype;
|
|
||||||
source.src = "{{ stream }}";
|
|
||||||
player.src(source);
|
|
||||||
}
|
|
||||||
xhr.open("HEAD", "{{ stream }}", true);
|
|
||||||
xhr.send();
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
13
script.js
Normal file
13
script.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
let xhr = new XMLHttpRequest();
|
||||||
|
xhr.onreadystatechange = () => {
|
||||||
|
let ctype = xhr.getResponseHeader("Content-Type");
|
||||||
|
let player = videojs("player");
|
||||||
|
let source = {};
|
||||||
|
source.type = ctype;
|
||||||
|
source.src = "{{ stream }}";
|
||||||
|
player.src(source);
|
||||||
|
}
|
||||||
|
xhr.open("HEAD", "{{ stream }}", true);
|
||||||
|
xhr.send();
|
||||||
|
});
|
12
stream.py
12
stream.py
@ -62,11 +62,14 @@ if icecast_server is not None and stream_server is not None:
|
|||||||
playlist += f'#EXTINF:0 radio="false", {name}\n'
|
playlist += f'#EXTINF:0 radio="false", {name}\n'
|
||||||
playlist += stream_server + key + "\n"
|
playlist += stream_server + key + "\n"
|
||||||
|
|
||||||
template = None
|
template_html = None
|
||||||
|
template_js = None
|
||||||
videojs_version = None
|
videojs_version = None
|
||||||
try:
|
try:
|
||||||
with open("/app/index.html", "r") as f:
|
with open("/app/index.html", "r") as f:
|
||||||
template = tornado.template.Template(f.read().strip())
|
template_html = tornado.template.Template(f.read().strip())
|
||||||
|
with open("/app/script.js", "r") as f:
|
||||||
|
template_js = tornado.template.Template(f.read().strip())
|
||||||
with open("/app/videojs-version.txt", "r") as f:
|
with open("/app/videojs-version.txt", "r") as f:
|
||||||
videojs_version = f.read().strip()
|
videojs_version = f.read().strip()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -153,7 +156,10 @@ class MainHandler(tornado.web.RequestHandler):
|
|||||||
def handle_render(self, provider, write):
|
def handle_render(self, provider, write):
|
||||||
if template is not None:
|
if template is not None:
|
||||||
stream_path = f'{self.request.path}?provider={provider}'
|
stream_path = f'{self.request.path}?provider={provider}'
|
||||||
rendered = template.generate(stream=stream_path, videojs_version=videojs_version)
|
rendered_js = template_js.generate(stream=stream_path);
|
||||||
|
b64 = str(base64.b64encode(rendered_js), "ascii")
|
||||||
|
script = f'data:text/javascript;charset=utf8;base64,{b64}'
|
||||||
|
rendered_html = template_html.generate(script=script, videojs_version=videojs_version)
|
||||||
self.write(rendered)
|
self.write(rendered)
|
||||||
else:
|
else:
|
||||||
self.set_status(404)
|
self.set_status(404)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user