Update app.py
Browse files
app.py
CHANGED
|
@@ -10,19 +10,47 @@ import dash_bootstrap_components as dbc
|
|
| 10 |
from pydub import AudioSegment
|
| 11 |
import requests
|
| 12 |
from pytube import YouTube
|
|
|
|
|
|
|
| 13 |
|
| 14 |
# Configure logging
|
| 15 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
| 16 |
logger = logging.getLogger(__name__)
|
| 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
try:
|
| 19 |
import moviepy.editor as mp
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
mp.config.change_settings({"FFMPEG_BINARY": "ffmpeg"})
|
| 22 |
-
logger.info("Moviepy successfully
|
| 23 |
-
except
|
| 24 |
-
logger.error(f"
|
| 25 |
-
logger.error("Please ensure moviepy is installed correctly")
|
| 26 |
raise
|
| 27 |
|
| 28 |
# Initialize the Dash app
|
|
|
|
| 10 |
from pydub import AudioSegment
|
| 11 |
import requests
|
| 12 |
from pytube import YouTube
|
| 13 |
+
import subprocess
|
| 14 |
+
import sys
|
| 15 |
|
| 16 |
# Configure logging
|
| 17 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
| 18 |
logger = logging.getLogger(__name__)
|
| 19 |
|
| 20 |
+
# Function to install a package using pip
|
| 21 |
+
def install_package(package):
|
| 22 |
+
logger.info(f"Attempting to install {package}")
|
| 23 |
+
try:
|
| 24 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
|
| 25 |
+
logger.info(f"Successfully installed {package}")
|
| 26 |
+
return True
|
| 27 |
+
except subprocess.CalledProcessError as e:
|
| 28 |
+
logger.error(f"Failed to install {package}. Error: {str(e)}")
|
| 29 |
+
return False
|
| 30 |
+
|
| 31 |
+
# Try to import moviepy, install if not found
|
| 32 |
try:
|
| 33 |
import moviepy.editor as mp
|
| 34 |
+
logger.info("Moviepy successfully imported")
|
| 35 |
+
except ImportError:
|
| 36 |
+
logger.warning("Moviepy not found. Attempting to install...")
|
| 37 |
+
if install_package("moviepy"):
|
| 38 |
+
try:
|
| 39 |
+
import moviepy.editor as mp
|
| 40 |
+
logger.info("Moviepy successfully imported after installation")
|
| 41 |
+
except ImportError as e:
|
| 42 |
+
logger.error(f"Failed to import moviepy after installation. Error: {str(e)}")
|
| 43 |
+
raise
|
| 44 |
+
else:
|
| 45 |
+
logger.error("Failed to install moviepy. Please install it manually.")
|
| 46 |
+
raise ImportError("Could not import or install moviepy")
|
| 47 |
+
|
| 48 |
+
# Initialize moviepy
|
| 49 |
+
try:
|
| 50 |
mp.config.change_settings({"FFMPEG_BINARY": "ffmpeg"})
|
| 51 |
+
logger.info("Moviepy successfully initialized")
|
| 52 |
+
except Exception as e:
|
| 53 |
+
logger.error(f"Failed to initialize moviepy. Error: {str(e)}")
|
|
|
|
| 54 |
raise
|
| 55 |
|
| 56 |
# Initialize the Dash app
|