|
| 1 | +from __future__ import annotations |
| 2 | + |
1 | 3 | __version__ = "0.3.0" |
2 | 4 |
|
3 | 5 | import os |
@@ -26,25 +28,29 @@ def add_path(): |
26 | 28 | os.environ["PATH"] = os.pathsep.join([os.environ["PATH"], _.ffmpeg_path()]) |
27 | 29 |
|
28 | 30 |
|
29 | | -def installed(bin_name="ffmpeg"): |
| 31 | +def installed( |
| 32 | + bin_name: str = "ffmpeg", *, return_path: bool = False |
| 33 | +) -> bool | str | None: |
30 | 34 | """True if FFmpeg binary is installed |
31 | 35 |
|
32 | 36 | :param bin_name: FFmpeg command name, defaults to 'ffmpeg' |
33 | | - :type bin_name: 'ffmpeg', 'ffprobe', or 'ffplay', optional |
| 37 | + :param return_path: True to return the valid path (or None if not installed), |
| 38 | + defaults to False |
34 | 39 | :return: True if installed |
35 | | - :rtype: bool |
36 | 40 | """ |
37 | 41 |
|
38 | | - return os.path.isfile(_.ffmpeg_path(bin_name)) |
| 42 | + p = _.ffmpeg_path(bin_name) |
| 43 | + tf = os.path.isfile(p) |
| 44 | + return tf if not return_path else p if tf else None |
39 | 45 |
|
40 | 46 |
|
41 | 47 | def __getattr__(name): # per PEP 562 |
42 | 48 | try: |
43 | 49 | return { |
44 | 50 | "ffmpeg_dir": lambda: _.ffmpeg_path(), |
45 | | - "ffmpeg_path": lambda: _.ffmpeg_path("ffmpeg"), |
46 | | - "ffprobe_path": lambda: _.ffmpeg_path("ffprobe"), |
47 | | - "ffplay_path": lambda: _.ffmpeg_path("ffplay"), |
| 51 | + "ffmpeg_path": lambda: installed("ffmpeg", return_path=True), |
| 52 | + "ffprobe_path": lambda: installed("ffprobe", return_path=True), |
| 53 | + "ffplay_path": lambda: installed("ffplay", return_path=True), |
48 | 54 | "ffmpeg_version": _.ffmpeg_version, |
49 | 55 | }[name]() |
50 | 56 | except: |
|
0 commit comments