Refactor FFmpeg download and fix watermark bug
This commit is contained in:
1 parent
bfcdca9e03
commit
3ad42ba126
1 file changed
+46
-27
+46
-27
@@ -1,3 +1,4 @@
|
||||
import zipfile
|
||||
import requests
|
||||
import os
|
||||
import subprocess
|
||||
@@ -5,30 +6,50 @@ import subprocess
|
||||
|
||||
def ffmpeg_install_windows():
|
||||
try:
|
||||
zip = "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip"
|
||||
r = requests.get(zip)
|
||||
with open("ffmpeg.zip", "wb") as f:
|
||||
f.write(r.content)
|
||||
import zipfile
|
||||
ffmpeg_url = "https://github.com/GyanD/codexffmpeg/releases/download/6.0/ffmpeg-6.0-full_build.zip"
|
||||
ffmpeg_zip_filename = "ffmpeg.zip"
|
||||
ffmpeg_extracted_folder = "ffmpeg"
|
||||
|
||||
with zipfile.ZipFile("ffmpeg.zip", "r") as zip_ref:
|
||||
# Check if ffmpeg.zip already exists
|
||||
if os.path.exists(ffmpeg_zip_filename):
|
||||
os.remove(ffmpeg_zip_filename)
|
||||
|
||||
# Download FFmpeg
|
||||
r = requests.get(ffmpeg_url)
|
||||
with open(ffmpeg_zip_filename, "wb") as f:
|
||||
f.write(r.content)
|
||||
|
||||
# Check if the extracted folder already exists
|
||||
if os.path.exists(ffmpeg_extracted_folder):
|
||||
# Remove existing extracted folder and its contents
|
||||
for root, dirs, files in os.walk(ffmpeg_extracted_folder, topdown=False):
|
||||
for file in files:
|
||||
os.remove(os.path.join(root, file))
|
||||
for dir in dirs:
|
||||
os.rmdir(os.path.join(root, dir))
|
||||
os.rmdir(ffmpeg_extracted_folder)
|
||||
|
||||
# Extract FFmpeg
|
||||
with zipfile.ZipFile(ffmpeg_zip_filename, "r") as zip_ref:
|
||||
zip_ref.extractall()
|
||||
os.remove("ffmpeg.zip")
|
||||
os.rename("ffmpeg-master-latest-win64-gpl", "ffmpeg")
|
||||
# Move the files inside bin to the root
|
||||
for file in os.listdir("ffmpeg/bin"):
|
||||
os.rename(f"ffmpeg/bin/{file}", f"./{file}")
|
||||
os.rmdir("ffmpeg/bin")
|
||||
for file in os.listdir("ffmpeg/doc"):
|
||||
os.remove(f"ffmpeg/doc/{file}")
|
||||
os.rmdir("ffmpeg/doc")
|
||||
os.remove("ffmpeg/LICENSE.txt")
|
||||
os.rmdir("ffmpeg/")
|
||||
|
||||
print(
|
||||
"FFmpeg installed successfully! Please restart your computer and then re-run the program."
|
||||
)
|
||||
# Rename and move files
|
||||
os.rename(f"{ffmpeg_extracted_folder}-6.0-full_build", ffmpeg_extracted_folder)
|
||||
for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "bin")):
|
||||
os.rename(os.path.join(ffmpeg_extracted_folder, "bin", file), os.path.join(".", file))
|
||||
os.rmdir(os.path.join(ffmpeg_extracted_folder, "bin"))
|
||||
for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "doc")):
|
||||
os.remove(os.path.join(ffmpeg_extracted_folder, "doc", file))
|
||||
for file in os.listdir(os.path.join(ffmpeg_extracted_folder, "presets")):
|
||||
os.remove(os.path.join(ffmpeg_extracted_folder, "presets", file))
|
||||
os.rmdir(os.path.join(ffmpeg_extracted_folder, "presets"))
|
||||
os.rmdir(os.path.join(ffmpeg_extracted_folder, "doc"))
|
||||
os.remove(os.path.join(ffmpeg_extracted_folder, "LICENSE"))
|
||||
os.remove(os.path.join(ffmpeg_extracted_folder, "README.txt"))
|
||||
os.rmdir(ffmpeg_extracted_folder)
|
||||
|
||||
print("FFmpeg installed successfully! Please restart your computer and then re-run the program.")
|
||||
except Exception as e:
|
||||
print(
|
||||
"An error occurred while trying to install FFmpeg. Please try again. Otherwise, please install FFmpeg manually and try again."
|
||||
@@ -75,16 +96,12 @@ def ffmpeg_install_mac():
|
||||
def ffmpeg_install():
|
||||
try:
|
||||
# Try to run the FFmpeg command
|
||||
subprocess.run(
|
||||
["ffmpeg", "-version"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
|
||||
)
|
||||
subprocess.run(['ffmpeg', '-version'], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
except FileNotFoundError as e:
|
||||
# Check if there's ffmpeg.exe in the current directory
|
||||
if os.path.exists("./ffmpeg.exe"):
|
||||
print(
|
||||
"FFmpeg is installed on this system! If you are seeing this error for the second time, restart your computer."
|
||||
)
|
||||
print("FFmpeg is not installed on this system.")
|
||||
print('FFmpeg is installed on this system! If you are seeing this error for the second time, restart your computer.')
|
||||
print('FFmpeg is not installed on this system.')
|
||||
resp = input(
|
||||
"We can try to automatically install it for you. Would you like to do that? (y/n): "
|
||||
)
|
||||
@@ -97,7 +114,9 @@ def ffmpeg_install():
|
||||
elif os.name == "mac":
|
||||
ffmpeg_install_mac()
|
||||
else:
|
||||
print("Your OS is not supported. Please install FFmpeg manually and try again.")
|
||||
print(
|
||||
"Your OS is not supported. Please install FFmpeg manually and try again."
|
||||
)
|
||||
exit()
|
||||
else:
|
||||
print("Please install FFmpeg manually and try again.")
|
||||
|
||||
Reference in new issue
Block a user