added cross plattform ffmpeg, and an option to set ffmpeg bin

This commit is contained in:
Hellow2 2023-06-21 11:53:59 +02:00
parent 1d64aab778
commit cd61fe4c1d
5 changed files with 17 additions and 5 deletions

View File

@ -1,9 +1,8 @@
from typing import List, Tuple from typing import List, Tuple
from tqdm import tqdm from tqdm import tqdm
from ffmpeg_progress_yield import FfmpegProgress from ffmpeg_progress_yield import FfmpegProgress
import subprocess
from ..utils.shared import BITRATE, AUDIO_FORMAT, CODEX_LOGGER as LOGGER from ..utils.shared import BITRATE, AUDIO_FORMAT, CODEX_LOGGER as LOGGER, FFMPEG_BINARY
from ..objects import Target from ..objects import Target
@ -36,7 +35,7 @@ def correct_codec(target: Target, bitrate_kb: int = BITRATE, audio_format: str =
# build the ffmpeg command # build the ffmpeg command
ffmpeg_command = [ ffmpeg_command = [
"ffmpeg", str(FFMPEG_BINARY),
"-i", str(target.file_path), "-i", str(target.file_path),
"-af", select, "-af", select,
"-b", str(bitrate_b), "-b", str(bitrate_b),

View File

@ -10,7 +10,8 @@ def all_paths():
"Music dir": LOCATIONS.MUSIC_DIRECTORY, "Music dir": LOCATIONS.MUSIC_DIRECTORY,
"Log file": shared.LOG_PATH, "Log file": shared.LOG_PATH,
"Conf dir": LOCATIONS.CONFIG_DIRECTORY, "Conf dir": LOCATIONS.CONFIG_DIRECTORY,
"Conf file": LOCATIONS.CONFIG_FILE "Conf file": LOCATIONS.CONFIG_FILE,
"FFMPEG bin": LOCATIONS.FFMPEG_BIN,
} }

View File

@ -38,12 +38,19 @@ class PathsSection(Section):
r'^\.' # is hidden/starts with a "." r'^\.' # is hidden/starts with a "."
] ]
) )
self.FFMPEG_BINARY = PathAttribute(
name="ffmpeg_binary",
description="Set the path to the ffmpeg binary.",
value=str(LOCATIONS.FFMPEG_BIN)
)
self.attribute_list = [ self.attribute_list = [
self.MUSIC_DIRECTORY, self.MUSIC_DIRECTORY,
self.TEMP_DIRECTORY, self.TEMP_DIRECTORY,
self.LOG_PATH, self.LOG_PATH,
self.NOT_A_GENRE_REGEX self.NOT_A_GENRE_REGEX,
self.FFMPEG_BINARY
] ]
super().__init__() super().__init__()

View File

@ -2,6 +2,7 @@ from pathlib import Path
import os import os
import tempfile import tempfile
from pyffmpeg import FFmpeg
from .music_directory import get_music_directory from .music_directory import get_music_directory
from .config_directory import get_config_directory from .config_directory import get_config_directory
@ -19,6 +20,8 @@ class Locations:
self.CONFIG_DIRECTORY = get_config_directory(str(application_name)) self.CONFIG_DIRECTORY = get_config_directory(str(application_name))
self.CONFIG_DIRECTORY.mkdir(exist_ok=True, parents=True) self.CONFIG_DIRECTORY.mkdir(exist_ok=True, parents=True)
self.CONFIG_FILE = Path(self.CONFIG_DIRECTORY, f"{application_name}.conf") self.CONFIG_FILE = Path(self.CONFIG_DIRECTORY, f"{application_name}.conf")
self.FFMPEG_BIN = Path(FFmpeg(enable_log=False).get_ffmpeg_bin())
def get_log_file(self, file_name: os.PathLike) -> Path: def get_log_file(self, file_name: os.PathLike) -> Path:
return Path(self.TEMP_DIRECTORY, file_name) return Path(self.TEMP_DIRECTORY, file_name)

View File

@ -120,3 +120,5 @@ to download:
have fun :3 have fun :3
""".strip() """.strip()
FFMPEG_BINARY: Path = PATHS_SECTION.FFMPEG_BINARY.object_from_value