nathom / streamrip

A scriptable music downloader for Qobuz, Tidal, SoundCloud, and Deezer
GNU General Public License v3.0
2.71k stars 245 forks source link

Bug: FFMPEG Convert #86

Closed Poloche9x7 closed 3 years ago

Poloche9x7 commented 3 years ago

Bug Report

Current Behavior I need to use ffmpeg to convert flac downloaded from deezer.

Command used:

pip3 install ffmpeg
pip3 install ffmpeg-python
rip --convert mp3 -u https://www.deezer.com/fr/track/1343716882

Expected behavior Script download flac file but crash before conversion.

streamrip Configuration File (find using rip config -o):

qobuz:
  # 1: 320kbps MP3, 2: 16/44.1, 3: 24/<=96, 4: 24/>=96
  quality: 3
  # This will download booklet pdfs that are included with some albums
  download_booklets: true
  email: ''
  # This is an md5 hash of the plaintext password
  password: d41d8cd98f00b204e9800998ecf8427e
  # Do not change
  app_id: ''
  # Do not change
  secrets: []
tidal:
  # 0: 256kbps AAC, 1: 320kbps AAC, 2: 16/44.1 "HiFi" FLAC, 3: 24/44.1 "MQA" FLAC
  quality: 3
  # This will download videos included in Video Albums.
  download_videos: true
  # Do not change any of the fields below
  user_id:
  country_code:
  access_token:
  refresh_token:
  # Tokens last 1 week after refresh. This is the Unix timestamp of the expiration time.
  token_expiry: 0
# Deezer doesn't require login
deezer:
  # 0, 1, or 2
  quality: 2
soundcloud:
  # Only 0 is available
  quality: 0
youtube:
  # Only 0 is available for now
  quality: 0
  # Download the video along with the audio
  download_videos: false
  # The path to download the videos to
  video_downloads_folder: C:\Users\Patron\StreamripDownloads
# This stores a list of item IDs so that repeats are not downloaded.
database:
  enabled: false
  path: C:\Users\Patron\AppData\Roaming\streamrip\downloads.db
# Convert tracks to a codec after downloading them.
conversion:
  enabled: false
  # FLAC, ALAC, OPUS, MP3, VORBIS, or AAC
  codec:
  # In Hz. Tracks are downsampled if their sampling rate is greater than this. Values greater than 48000 are only recommended if the audio will be processed. It is otherwise a waste of space as the human ear cannot discern higher frequencies.
  sampling_rate:
  # Only 16 and 24 are available. It is only applied when the bit depth is higher than this value.
  bit_depth:
# Filter a Qobuz artist's discography. Set to 'true' to turn on a filter.
filters:
  # Remove Collectors Editions, live recordings, etc.
  extras: false
  # Picks the highest quality out of albums with identical titles.
  repeats: false
  # Remove EPs and Singles
  non_albums: false
  # Remove albums whose artist is not the one requested
  features: false
  non_studio_albums: false
  # Only download remastered albums
  non_remaster: false
downloads:
  # Folder where tracks are downloaded to
  folder: C:\Users\Patron\StreamripDownloads
  # Put Qobuz albums in a 'Qobuz' folder, Tidal albums in 'Tidal' etc.
  source_subdirectories: false
artwork:
  # Write the image to the audio file
  embed: true
  # The size of the artwork to embed. Options: thumbnail, small, large, original. 'original' images can be up to 30MB, and may fail embedding. Using 'large' is recommended.
  size: large
  # Save the cover image at the highest quality as a seperate jpg file
  keep_hires_cover: true
# Only applicable for playlist downloads.
metadata:
  # Sets the value of the 'ALBUM' field in the metadata to the playlist's name. This is useful if your music library software organizes tracks based on album name.
  set_playlist_to_album: false
  # Replaces the original track's tracknumber with it's position in the playlist
  new_playlist_tracknumbers: true
# Changes the folder and file names generated by streamrip.
path_format:
  # Available keys: "albumartist", "title", "year", "bit_depth", "sampling_rate", and "container"
  folder: '{albumartist} - {title} ({year}) [{container}] [{bit_depth}B-{sampling_rate}kHz]'
  # Available keys: "tracknumber", "artist", "albumartist", "composer", and "title"
  track: '{tracknumber}. {artist} - {title}'
check_for_updates: true
# Last.fm playlists are downloaded by searching for the titles of the tracks
lastfm:
  # The source on which to search for the tracks.
  source: qobuz
  # If no results were found with the primary source, the item is searched for on this one.
  fallback_source: deezer
# Download (and convert) tracks all at once, instead of sequentially. If you are converting the tracks, and/or have fast internet, this will substantially improve processing speed.
concurrent_downloads: false

Environment

Traceback

C:\Users\Patron\Desktop\streamrip-0.5.4\streamrip>rip --convert mp3 -u https://www.deezer.com/fr/track/1343716882
streamrip is up-to-date!
Cover: 100%|█████████████████████████████████████| 11.8k/11.8k [00:00<?, ?iB/s]
Track 07: 100%|██████████████████████████| 14.4M/14.4M [00:05<00:00, 2.95MiB/s]
Traceback (most recent call last):
  File "c:\users\patron\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\patron\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\Patron\AppData\Local\Programs\Python\Python39\Scripts\rip.exe\__main__.py", line 7, in <module>
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\streamrip\cli.py", line 329, in main
    cli(obj={})
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\click\core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\click\core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\click\core.py", line 1646, in invoke
    super().invoke(ctx)
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\click\core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\click\decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\streamrip\cli.py", line 113, in cli
    core.download()
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\streamrip\core.py", line 262, in download
    item.convert(**arguments["conversion"])
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\streamrip\bases.py", line 596, in convert
    engine.convert()
  File "c:\users\patron\appdata\local\programs\python\python39\lib\site-packages\streamrip\converter.py", line 86, in convert
    process = subprocess.Popen(self.command)
  File "c:\users\patron\appdata\local\programs\python\python39\lib\subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "c:\users\patron\appdata\local\programs\python\python39\lib\subprocess.py", line 1420, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Le fichier spécifié est introuvable

Thanks

nathom commented 3 years ago

You have only installed the ffmpeg python library. You need to install the executable, which you can find here.

Poloche9x7 commented 3 years ago

Where i need to put the ffmpeg.exe file please ?

nathom commented 3 years ago

Follow this tutorial.