from http.server import HTTPServer, BaseHTTPRequestHandler import subprocess import json import os import pickle import base64 # Load YouTube token (Channel B - plipStory) 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 # ── Existing: generate Short from script ────────────────── 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"}') # ── NEW: mirror a YouTube video to Channel B ─────────────── 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()