Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -31,13 +31,13 @@ def get_input_path(video_file, video_url, temp_dir):
|
|
31 |
else:
|
32 |
raise ValueError("No input was provided.")
|
33 |
|
34 |
-
def upload_to_ftp(server, username, password, source_file, destination_file):
|
35 |
"""Uploads a file to an FTP server."""
|
36 |
with FTP(server, username, password) as ftp:
|
|
|
37 |
with open(source_file, 'rb') as f:
|
38 |
ftp.storbinary(f'STOR {destination_file}', f)
|
39 |
|
40 |
-
|
41 |
def get_output_path(input_path, temp_dir, res):
|
42 |
"""Returns the path to the output file, creating it if necessary."""
|
43 |
output_path = temp_dir / (Path(input_path).stem + f"_{res}.m3u8")
|
@@ -60,7 +60,7 @@ def create_master_playlist(output_paths, temp_dir):
|
|
60 |
f.write(f"{path.name}\n")
|
61 |
return master_playlist_path
|
62 |
|
63 |
-
def convert_video(video_file, quality, aspect_ratio, video_url):
|
64 |
standard_resolutions = [4320, 2160, 1440, 1080, 720, 480, 360, 240, 144] # 8K, 4K, 2K, Full HD, HD, SD in pixels
|
65 |
|
66 |
with tempfile.TemporaryDirectory() as temp_dir:
|
@@ -113,9 +113,10 @@ def convert_video(video_file, quality, aspect_ratio, video_url):
|
|
113 |
if upload:
|
114 |
ftp_files = []
|
115 |
for path in [master_playlist_copy_path] + output_copy_paths:
|
116 |
-
|
117 |
-
|
118 |
-
|
|
|
119 |
return ftp_files
|
120 |
else:
|
121 |
return [master_playlist_copy_path] + output_copy_paths
|
@@ -158,19 +159,20 @@ def main():
|
|
158 |
video_url = gr.inputs.Textbox(label="Video URL")
|
159 |
|
160 |
ftp_server = gr.inputs.Textbox(label="FTP Server")
|
|
|
161 |
ftp_username = gr.inputs.Textbox(label="FTP Username")
|
162 |
-
ftp_password = gr.inputs.Textbox(label="FTP Password", type="
|
163 |
ftp_path = gr.inputs.Textbox(label="FTP Path")
|
164 |
upload = gr.inputs.Checkbox(label="Upload to FTP server", default=False)
|
165 |
|
166 |
gr.Interface(
|
167 |
convert_video,
|
168 |
inputs=[video_file, quality, aspect_ratio, video_url, ftp_server, ftp_username, ftp_password, ftp_path, upload],
|
169 |
-
outputs=gr.outputs.Textbox(),
|
170 |
output_processor=process_output,
|
171 |
allow_flagging=False,
|
172 |
live=False,
|
173 |
-
).launch()
|
174 |
|
175 |
if __name__ == "__main__":
|
176 |
main()
|
|
|
31 |
else:
|
32 |
raise ValueError("No input was provided.")
|
33 |
|
34 |
+
def upload_to_ftp(server, port, username, password, source_file, destination_file):
|
35 |
"""Uploads a file to an FTP server."""
|
36 |
with FTP(server, username, password) as ftp:
|
37 |
+
ftp.connect(server, int(port)) # add this line to specify the port
|
38 |
with open(source_file, 'rb') as f:
|
39 |
ftp.storbinary(f'STOR {destination_file}', f)
|
40 |
|
|
|
41 |
def get_output_path(input_path, temp_dir, res):
|
42 |
"""Returns the path to the output file, creating it if necessary."""
|
43 |
output_path = temp_dir / (Path(input_path).stem + f"_{res}.m3u8")
|
|
|
60 |
f.write(f"{path.name}\n")
|
61 |
return master_playlist_path
|
62 |
|
63 |
+
def convert_video(video_file, quality, aspect_ratio, video_url, ftp_server, ftp_username, ftp_password, ftp_path, upload):
|
64 |
standard_resolutions = [4320, 2160, 1440, 1080, 720, 480, 360, 240, 144] # 8K, 4K, 2K, Full HD, HD, SD in pixels
|
65 |
|
66 |
with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
113 |
if upload:
|
114 |
ftp_files = []
|
115 |
for path in [master_playlist_copy_path] + output_copy_paths:
|
116 |
+
source_file = path # This should be the full local path of the file
|
117 |
+
destination_file = ftp_path + "/" + path.name # This should be the desired remote path of the file
|
118 |
+
upload_to_ftp(ftp_server, ftp_username, ftp_password, source_file, destination_file)
|
119 |
+
ftp_files.append(destination_file)
|
120 |
return ftp_files
|
121 |
else:
|
122 |
return [master_playlist_copy_path] + output_copy_paths
|
|
|
159 |
video_url = gr.inputs.Textbox(label="Video URL")
|
160 |
|
161 |
ftp_server = gr.inputs.Textbox(label="FTP Server")
|
162 |
+
ftp_port = gr.inputs.Textbox(label="FTP Port", placeholder="21")
|
163 |
ftp_username = gr.inputs.Textbox(label="FTP Username")
|
164 |
+
ftp_password = gr.inputs.Textbox(label="FTP Password", type="text")
|
165 |
ftp_path = gr.inputs.Textbox(label="FTP Path")
|
166 |
upload = gr.inputs.Checkbox(label="Upload to FTP server", default=False)
|
167 |
|
168 |
gr.Interface(
|
169 |
convert_video,
|
170 |
inputs=[video_file, quality, aspect_ratio, video_url, ftp_server, ftp_username, ftp_password, ftp_path, upload],
|
171 |
+
outputs=[gr.outputs.Textbox(), gr.outputs.File(), gr.outputs.Markdown()],
|
172 |
output_processor=process_output,
|
173 |
allow_flagging=False,
|
174 |
live=False,
|
175 |
+
).launch())
|
176 |
|
177 |
if __name__ == "__main__":
|
178 |
main()
|