Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -11,10 +11,25 @@ import http.server
|
|
11 |
import socketserver
|
12 |
import threading
|
13 |
import atexit
|
|
|
14 |
|
15 |
logging.basicConfig(level=logging.INFO)
|
16 |
|
17 |
-
PORT = 8000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
temp_dir = Path(tempfile.mkdtemp()) # Create a temporary directory using mkdtemp() instead of TemporaryDirectory()
|
19 |
|
20 |
class Handler(http.server.SimpleHTTPRequestHandler):
|
@@ -23,19 +38,11 @@ class Handler(http.server.SimpleHTTPRequestHandler):
|
|
23 |
|
24 |
def start_server():
|
25 |
global PORT # Make sure to define PORT as global
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
except OSError as e:
|
32 |
-
if e.errno == 98: # errno 98 means address already in use
|
33 |
-
PORT += 1 # If address in use, increment port and try again
|
34 |
-
continue
|
35 |
-
else:
|
36 |
-
raise
|
37 |
-
break # If server started successfully, break the loop
|
38 |
-
|
39 |
t = threading.Thread(target=start_server)
|
40 |
t.start()
|
41 |
|
@@ -88,46 +95,6 @@ def create_master_playlist(output_paths, temp_dir):
|
|
88 |
f.write(f"{path.name}\n")
|
89 |
return master_playlist_path
|
90 |
|
91 |
-
import logging
|
92 |
-
import shutil
|
93 |
-
import tempfile
|
94 |
-
import subprocess
|
95 |
-
from pathlib import Path
|
96 |
-
from moviepy.editor import VideoFileClip
|
97 |
-
import gradio as gr
|
98 |
-
import requests
|
99 |
-
from urllib.parse import urlparse
|
100 |
-
import http.server
|
101 |
-
import socketserver
|
102 |
-
import threading
|
103 |
-
import atexit
|
104 |
-
|
105 |
-
logging.basicConfig(level=logging.INFO)
|
106 |
-
|
107 |
-
PORT = 8000
|
108 |
-
temp_dir = Path(tempfile.mkdtemp()) # Create a temporary directory using mkdtemp() instead of TemporaryDirectory()
|
109 |
-
|
110 |
-
class Handler(http.server.SimpleHTTPRequestHandler):
|
111 |
-
def __init__(self, *args, **kwargs):
|
112 |
-
super().__init__(*args, directory=str(temp_dir), **kwargs)
|
113 |
-
|
114 |
-
def start_server():
|
115 |
-
with socketserver.TCPServer(("", PORT), Handler) as httpd:
|
116 |
-
print(f"Serving at port {PORT}")
|
117 |
-
httpd.serve_forever()
|
118 |
-
|
119 |
-
t = threading.Thread(target=start_server)
|
120 |
-
t.start()
|
121 |
-
|
122 |
-
# Cleanup function to remove the temporary directory when the script is exited
|
123 |
-
@atexit.register
|
124 |
-
def cleanup():
|
125 |
-
shutil.rmtree(temp_dir)
|
126 |
-
|
127 |
-
logging.basicConfig(level=logging.INFO)
|
128 |
-
|
129 |
-
# ... rest of your code ...
|
130 |
-
|
131 |
def convert_video(video_file, quality, aspect_ratio, video_url):
|
132 |
# Use the already-created temp_dir instead of creating a new one
|
133 |
# temp_dir = Path(tempfile.mkdtemp())
|
@@ -169,8 +136,7 @@ def convert_video(video_file, quality, aspect_ratio, video_url):
|
|
169 |
video_file = gr.File(label="Video File")
|
170 |
quality = gr.Dropdown(
|
171 |
"27", ["18", "23", "27", "28", "32"], label="Quality")
|
172 |
-
aspect_ratio = gr.Dropdown(
|
173 |
-
label="Aspect ratio (width:height)")
|
174 |
standard_resolutions = [4320, 2160, 1440, 1080, 720, 480, 360, 240, 144] # 8K, 4K, 2K, Full HD, HD, SD in pixels
|
175 |
video_url = gr.Textbox(label="Or enter video URL")
|
176 |
|
|
|
11 |
import socketserver
|
12 |
import threading
|
13 |
import atexit
|
14 |
+
import socket
|
15 |
|
16 |
logging.basicConfig(level=logging.INFO)
|
17 |
|
18 |
+
PORT = 8000 # Define PORT here
|
19 |
+
|
20 |
+
def get_available_port(start_port):
|
21 |
+
while True:
|
22 |
+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
23 |
+
try:
|
24 |
+
s.bind(("", start_port))
|
25 |
+
return start_port
|
26 |
+
except OSError as e:
|
27 |
+
if e.errno == 98: # errno 98 means address already in use
|
28 |
+
start_port += 1 # If address in use, increment port and try again
|
29 |
+
continue
|
30 |
+
else:
|
31 |
+
raise
|
32 |
+
|
33 |
temp_dir = Path(tempfile.mkdtemp()) # Create a temporary directory using mkdtemp() instead of TemporaryDirectory()
|
34 |
|
35 |
class Handler(http.server.SimpleHTTPRequestHandler):
|
|
|
38 |
|
39 |
def start_server():
|
40 |
global PORT # Make sure to define PORT as global
|
41 |
+
PORT = get_available_port(PORT)
|
42 |
+
with socketserver.TCPServer(("", PORT), Handler) as httpd:
|
43 |
+
print(f"Serving at port {PORT}")
|
44 |
+
httpd.serve_forever()
|
45 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
t = threading.Thread(target=start_server)
|
47 |
t.start()
|
48 |
|
|
|
95 |
f.write(f"{path.name}\n")
|
96 |
return master_playlist_path
|
97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
def convert_video(video_file, quality, aspect_ratio, video_url):
|
99 |
# Use the already-created temp_dir instead of creating a new one
|
100 |
# temp_dir = Path(tempfile.mkdtemp())
|
|
|
136 |
video_file = gr.File(label="Video File")
|
137 |
quality = gr.Dropdown(
|
138 |
"27", ["18", "23", "27", "28", "32"], label="Quality")
|
139 |
+
aspect_ratio = gr.Dropdown(["16:9", "1:1", "4:3", "3:2", "5:4", "21:9", "1.85:1", "2.35:1", "3:1", "360", "9:16", "2:1", "1:2", "9:1"], label="Aspect ratio (width:height)", default="16:9")
|
|
|
140 |
standard_resolutions = [4320, 2160, 1440, 1080, 720, 480, 360, 240, 144] # 8K, 4K, 2K, Full HD, HD, SD in pixels
|
141 |
video_url = gr.Textbox(label="Or enter video URL")
|
142 |
|