shortbot / server.py
Pushp0120's picture
Update server.py
18276aa verified
Raw
History Blame Contribute Delete
2.71 kB
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()