95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
import os
|
|
from flask import Flask
|
|
from watchdog.observers import Observer
|
|
from watchdog.events import FileSystemEventHandler
|
|
|
|
# -------------- VARIABLES --------------
|
|
html_file_path = r'C:\<PATH>'
|
|
host = '0.0.0.0' # http://localhost OR http://<ip_address>
|
|
port = 80
|
|
is_oe11 = True # if using OE11 set it to True, for OE12 set it to False (encoding)
|
|
scroll_pixels = 100
|
|
scroll_interval = 3 # seconds
|
|
bottom_wait_time = 3 # seconds
|
|
top_wait_time = 3 # seconds
|
|
reload_interval = 35 # seconds
|
|
# -------------- END VARIABLES --------------
|
|
|
|
app = Flask(__name__)
|
|
|
|
class FileChangeHandler(FileSystemEventHandler):
|
|
def __init__(self, app):
|
|
self.app = app
|
|
|
|
def on_modified(self, event):
|
|
if event.src_path == html_file_path:
|
|
with self.app.app_context():
|
|
self.app.config['TEMPLATES_AUTO_RELOAD'] = True
|
|
|
|
@app.route('/')
|
|
def serve_html():
|
|
with open(html_file_path, 'r', encoding= ('latin-1' if is_oe11 else 'utf-8') ) as file:
|
|
content = file.read()
|
|
content += f'''
|
|
<style>
|
|
html {{
|
|
scroll-behavior: smooth;
|
|
}}
|
|
</style>
|
|
<script>
|
|
let scrollAmount = {scroll_pixels};
|
|
let scrollInterval = {scroll_interval} * 1000;
|
|
let bottomWaitTime = {bottom_wait_time} * 1000;
|
|
let topWaitTime = {top_wait_time} * 1000;
|
|
let reloadInterval = {reload_interval} * 1000;
|
|
let scrollPos = 0;
|
|
let scrollingDown = true;
|
|
|
|
function autoScroll() {{
|
|
if (scrollingDown) {{
|
|
window.scrollBy(0, scrollAmount);
|
|
scrollPos += scrollAmount;
|
|
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {{
|
|
scrollingDown = false;
|
|
setTimeout(reloadPage, bottomWaitTime);
|
|
return;
|
|
}}
|
|
}} else {{
|
|
window.scrollTo(0, 0);
|
|
scrollPos = 0;
|
|
scrollingDown = true;
|
|
setTimeout(autoScroll, topWaitTime);
|
|
return;
|
|
}}
|
|
setTimeout(autoScroll, scrollInterval);
|
|
}}
|
|
|
|
function reloadPage() {{
|
|
window.scrollTo(0, 0);
|
|
setTimeout(() => {{
|
|
location.reload();
|
|
}}, 100);
|
|
}}
|
|
|
|
window.onload = function() {{
|
|
window.scrollTo(0, 0);
|
|
if (document.body.scrollHeight <= window.innerHeight) {{
|
|
setTimeout(reloadPage, reloadInterval);
|
|
}} else {{
|
|
setTimeout(autoScroll, topWaitTime);
|
|
}}
|
|
}};
|
|
</script>
|
|
'''
|
|
return content
|
|
|
|
if __name__ == '__main__':
|
|
event_handler = FileChangeHandler(app)
|
|
observer = Observer()
|
|
observer.schedule(event_handler, path=os.path.dirname(html_file_path), recursive=False)
|
|
observer.start()
|
|
try:
|
|
app.run(host=host, port=port)
|
|
except KeyboardInterrupt:
|
|
observer.stop()
|
|
observer.join() |