| from http.server import HTTPServer, BaseHTTPRequestHandler |
| import subprocess |
| import json |
| import os |
| import pickle |
| import base64 |
|
|
| |
| token_b64 = os.environ.get('YOUTUBE_TOKEN') |
| if token_b64: |
| try: |
| token = pickle.loads(base64.b64decode(token_b64)) |
| with open('/app/token.pickle', 'wb') as f: |
| pickle.dump(token, f) |
| print("Token loaded successfully!") |
| except Exception as e: |
| print(f"Token error: {e}") |
|
|
| class Handler(BaseHTTPRequestHandler): |
|
|
| def do_GET(self): |
| self.send_response(200) |
| self.end_headers() |
| self.wfile.write(b'{"status": "ShortBot running!"}') |
|
|
| def do_POST(self): |
| try: |
| length = int(self.headers['Content-Length']) |
| body = json.loads(self.rfile.read(length)) |
| path = self.path |
|
|
| |
| if path == '/' or path == '': |
| script = body.get('script', '') |
| title = body.get('title', 'YouTube Short') |
| description = body.get('description', '') |
|
|
| print(f"Generating video for: {title}") |
| subprocess.Popen(['python', '/app/generate.py', script, title, description]) |
|
|
| self._respond(200, '{"status": "video generation started"}') |
|
|
| |
| elif path == '/mirror': |
| video_id = body.get('video_id', '') |
| title = body.get('title', 'Mirrored Video') |
| description = body.get('description', '') |
|
|
| if not video_id: |
| self._respond(400, '{"error": "video_id is required"}') |
| return |
|
|
| print(f"Mirroring video_id: {video_id}") |
| subprocess.Popen([ |
| 'python', '/app/mirror.py', |
| video_id, title, description |
| ]) |
|
|
| self._respond(200, f'{{"status": "mirror started", "video_id": "{video_id}"}}') |
|
|
| else: |
| self._respond(404, '{"error": "not found"}') |
|
|
| except Exception as e: |
| self._respond(500, f'{{"error": "{str(e)}"}}') |
|
|
| def _respond(self, code, body): |
| self.send_response(code) |
| self.send_header('Content-Type', 'application/json') |
| self.end_headers() |
| self.wfile.write(body.encode()) |
|
|
| def log_message(self, format, *args): |
| pass |
|
|
| print("ShortBot server running on port 7860...") |
| HTTPServer(('0.0.0.0', 7860), Handler).serve_forever() |