diff options
| author | yum <yum.food.vr@gmail.com> | 2025-07-23 22:53:08 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-07-23 22:53:08 -0700 |
| commit | 4539f87e36cb3ca554e1e174c19206b552107c57 (patch) | |
| tree | 6f9aca818989773cc10f3c465224a07f847eb279 /Scripts/browser_src.py | |
| parent | f6b93a20d754579008076e85f5c0a97e1bcbc258 (diff) | |
Delete unused filesv1.0.0-beta00
Diffstat (limited to 'Scripts/browser_src.py')
| -rw-r--r-- | Scripts/browser_src.py | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/Scripts/browser_src.py b/Scripts/browser_src.py deleted file mode 100644 index 4ed3407..0000000 --- a/Scripts/browser_src.py +++ /dev/null @@ -1,138 +0,0 @@ -from transcribe_pipeline import StreamingPlugin, TranscriptCommit -from urllib.parse import urlparse - -import copy -import json -import http.server -import os -import socketserver -import threading -import time -import transcribe_pipeline -import typing - -class HTTPServer: - def __init__(self, port: int): - self.port = port - self.route_map = {} - self.httpd = None - - def register_file_handler(self, http_method: str, path: str, file_path: str): - print(f"File handler registered at {os.getcwd()}") - def handler(): - if os.path.exists(file_path): - with open(file_path, 'r', encoding='utf-8') as f: - return 200, f.read().replace('%PORT%', str(self.port)), 'text/html' - else: - return 404, {'error': 'file not found'}, 'application/json' - self.route_map[(http_method, path)] = handler - - def register_json_handler(self, http_method: str, path: str, handler): - self.route_map[(http_method, path)] = handler - - def run(self): - def handler(*args, **kwargs): - MyHandler(http_server_instance=self, *args, **kwargs) - - with socketserver.TCPServer(("", self.port), handler) as httpd: - self.httpd = httpd - print(f"Webserver running at port {self.port}") - httpd.serve_forever() - print(f"Webserver exiting") - self.httpd = None - - def stop(self): - if self.httpd: - self.httpd.shutdown() - - -class MyHandler(http.server.BaseHTTPRequestHandler): - def __init__(self, *args, http_server_instance=None, **kwargs): - self.http_server_instance = http_server_instance - super().__init__(*args, **kwargs) - - def log_message(self, format, *args): - # TODO log if cfg["debug_mode_enabled"] is set - return - - def do_GET(self): - self.handle_request('GET') - - def handle_request(self, method: str): - parsed_path = urlparse(self.path) - if (method, parsed_path.path) in self.http_server_instance.route_map: - status_code, response_content, content_type = \ - self.http_server_instance.route_map[(method, parsed_path.path)]() - self.send_response(status_code) - self.send_header('Content-Type', content_type) - self.end_headers() - if content_type == 'application/json': - self.wfile.write(json.dumps(response_content).encode('utf-8')) - else: - self.wfile.write(response_content.encode('utf-8')) - else: - self.send_response(404) - self.send_header('Content-Type', 'application/json') - self.end_headers() - self.wfile.write(json.dumps({'error': 'not found'}).encode('utf-8')) - - -class BrowserSource(StreamingPlugin): - def __init__(self, cfg: typing.Dict): - port = cfg["browser_src_port"] - print(f"Browser source running on port {port}") - self.commits = [] - self.preview_commit = None - self.http_server = HTTPServer(port) - self.http_server.register_json_handler('GET', '/api/v0/transcript', self.get_transcript_json) - - index_html_path = os.path.join("Resources", "BrowserSource", "index.html") - self.http_server.register_file_handler('GET', '/', index_html_path) - self.http_server.register_file_handler('GET', '/index.html', index_html_path) - - # Start the HTTP server in a new thread - self.server_thread = threading.Thread(target=self.run) - self.server_thread.start() - - def transform(self, commit: TranscriptCommit) -> TranscriptCommit: - original_commit = commit - commit = copy.deepcopy(original_commit) - del commit.audio - if commit.delta: - self.commits.append(commit) - # Limit commits to last N. - now = time.time() - self.commits = [commit for commit in self.commits] - max_commits = 10 - if len(self.commits) > max_commits: - self.commits = self.commits[-int(max_commits/2):] - self.preview_commit = commit - return original_commit - - # return (http_code, body, content_type) - def get_transcript_json(self) -> typing.Tuple[int, str, str]: - processed_commits = [vars(commit) for commit in self.commits] - transcript_data = { - 'commits': processed_commits, - 'preview': vars(self.preview_commit) if self.preview_commit else None, - 'ts': time.time() - } - return 200, json.dumps(transcript_data), 'text/json' - - def run(self): - self.http_server.run() - - def stop(self): - self.http_server.stop() - self.server_thread.join() - - -# Example usage -def my_callback() -> typing.Tuple[int, typing.Dict[str, str]]: - return 200, {'message': 'Hello, world!'}, 'text/json' - -if __name__ == '__main__': - server = HTTPServer(port=8080) - server.register_json_handler('GET', '/api/v0/transcript', my_callback) - server.run() - |
