added cross plattform ffmpeg, and an option to set ffmpeg bin
This commit is contained in:
		@@ -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),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,11 +39,18 @@ class PathsSection(Section):
 | 
				
			|||||||
            ]
 | 
					            ]
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        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__()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
@@ -20,5 +21,7 @@ class Locations:
 | 
				
			|||||||
        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)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -120,3 +120,5 @@ to download:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
have fun :3
 | 
					have fun :3
 | 
				
			||||||
""".strip()
 | 
					""".strip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FFMPEG_BINARY: Path = PATHS_SECTION.FFMPEG_BINARY.object_from_value
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user