Update app.py
Browse files
app.py
CHANGED
@@ -13,6 +13,7 @@ import mimetypes
|
|
13 |
import urllib.parse
|
14 |
import subprocess
|
15 |
import json
|
|
|
16 |
|
17 |
# Configure logging
|
18 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
@@ -100,25 +101,31 @@ def download_file(url):
|
|
100 |
response = session.get(url, stream=True, allow_redirects=True)
|
101 |
response.raise_for_status()
|
102 |
|
103 |
-
#
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
# If not, use a default name with .mp4 extension
|
109 |
-
filename = 'downloaded_video.mp4'
|
110 |
|
111 |
# Save the content to a temporary file with .mp4 extension
|
112 |
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as temp_file:
|
|
|
113 |
for chunk in response.iter_content(chunk_size=8192):
|
114 |
-
|
115 |
-
|
|
|
116 |
temp_file_path = temp_file.name
|
117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
logger.info(f"File downloaded and saved as: {temp_file_path}")
|
|
|
119 |
return temp_file_path
|
120 |
|
121 |
-
|
122 |
def get_file_info(file_path):
|
123 |
try:
|
124 |
result = subprocess.run(['ffprobe', '-v', 'quiet', '-print_format', 'json', '-show_format', '-show_streams', file_path],
|
|
|
13 |
import urllib.parse
|
14 |
import subprocess
|
15 |
import json
|
16 |
+
from tqdm import tqdm
|
17 |
|
18 |
# Configure logging
|
19 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
|
101 |
response = session.get(url, stream=True, allow_redirects=True)
|
102 |
response.raise_for_status()
|
103 |
|
104 |
+
# Get the total file size
|
105 |
+
total_size = int(response.headers.get('content-length', 0))
|
106 |
+
|
107 |
+
# Use a default name with .mp4 extension
|
108 |
+
filename = 'downloaded_video.mp4'
|
|
|
|
|
109 |
|
110 |
# Save the content to a temporary file with .mp4 extension
|
111 |
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as temp_file:
|
112 |
+
progress_bar = tqdm(total=total_size, unit='iB', unit_scale=True, desc=filename)
|
113 |
for chunk in response.iter_content(chunk_size=8192):
|
114 |
+
size = temp_file.write(chunk)
|
115 |
+
progress_bar.update(size)
|
116 |
+
progress_bar.close()
|
117 |
temp_file_path = temp_file.name
|
118 |
|
119 |
+
# Check if the downloaded file size matches the expected size
|
120 |
+
actual_size = os.path.getsize(temp_file_path)
|
121 |
+
if total_size != 0 and actual_size != total_size:
|
122 |
+
logger.error(f"Downloaded file size ({actual_size} bytes) does not match expected size ({total_size} bytes)")
|
123 |
+
raise Exception("Incomplete download")
|
124 |
+
|
125 |
logger.info(f"File downloaded and saved as: {temp_file_path}")
|
126 |
+
logger.info(f"File size: {actual_size} bytes")
|
127 |
return temp_file_path
|
128 |
|
|
|
129 |
def get_file_info(file_path):
|
130 |
try:
|
131 |
result = subprocess.run(['ffprobe', '-v', 'quiet', '-print_format', 'json', '-show_format', '-show_streams', file_path],
|