beets: patch ffmpeg invocation in convert plugin

The default convert configuration invokes ffmpeg, so this patches in the
right storepath. Since it patches the shlex split, even user config will
use the correct path. kudos @aszlig.
This commit is contained in:
Profpatsch 2016-05-02 17:18:07 +02:00
parent e86c2058a0
commit 1a350e6b58

View File

@ -4,6 +4,7 @@
, enableAcousticbrainz ? true , enableAcousticbrainz ? true
, enableAcoustid ? true , enableAcoustid ? true
, enableBadfiles ? true, flac ? null, mp3val ? null , enableBadfiles ? true, flac ? null, mp3val ? null
, enableConvert ? true, ffmpeg ? null
, enableDiscogs ? true , enableDiscogs ? true
, enableEchonest ? true , enableEchonest ? true
, enableEmbyupdate ? true , enableEmbyupdate ? true
@ -22,6 +23,7 @@
assert enableAcoustid -> pythonPackages.pyacoustid != null; assert enableAcoustid -> pythonPackages.pyacoustid != null;
assert enableBadfiles -> flac != null && mp3val != null; assert enableBadfiles -> flac != null && mp3val != null;
assert enableConvert -> ffmpeg != null;
assert enableDiscogs -> pythonPackages.discogs_client != null; assert enableDiscogs -> pythonPackages.discogs_client != null;
assert enableEchonest -> pythonPackages.pyechonest != null; assert enableEchonest -> pythonPackages.pyechonest != null;
assert enableFetchart -> pythonPackages.responses != null; assert enableFetchart -> pythonPackages.responses != null;
@ -38,6 +40,7 @@ let
acousticbrainz = enableAcousticbrainz; acousticbrainz = enableAcousticbrainz;
badfiles = enableBadfiles; badfiles = enableBadfiles;
chroma = enableAcoustid; chroma = enableAcoustid;
convert = enableConvert;
discogs = enableDiscogs; discogs = enableDiscogs;
echonest = enableEchonest; echonest = enableEchonest;
embyupdate = enableEmbyupdate; embyupdate = enableEmbyupdate;
@ -52,7 +55,7 @@ let
}; };
pluginsWithoutDeps = [ pluginsWithoutDeps = [
"bench" "bpd" "bpm" "bucket" "convert" "cue" "duplicates" "edit" "embedart" "bench" "bpd" "bpm" "bucket" "cue" "duplicates" "edit" "embedart"
"filefilter" "freedesktop" "fromfilename" "ftintitle" "fuzzy" "ihate" "filefilter" "freedesktop" "fromfilename" "ftintitle" "fuzzy" "ihate"
"importadded" "importfeeds" "info" "inline" "ipfs" "keyfinder" "lyrics" "importadded" "importfeeds" "info" "inline" "ipfs" "keyfinder" "lyrics"
"mbcollection" "mbsubmit" "mbsync" "metasync" "missing" "permissions" "play" "mbcollection" "mbsubmit" "mbsync" "metasync" "missing" "permissions" "play"
@ -96,6 +99,7 @@ in buildPythonApplication rec {
|| enableEmbyupdate || enableEmbyupdate
|| enableAcousticbrainz) || enableAcousticbrainz)
pythonPackages.requests2 pythonPackages.requests2
++ optional enableConvert ffmpeg
++ optional enableDiscogs pythonPackages.discogs_client ++ optional enableDiscogs pythonPackages.discogs_client
++ optional enableEchonest pythonPackages.pyechonest ++ optional enableEchonest pythonPackages.pyechonest
++ optional enableLastfm pythonPackages.pylast ++ optional enableLastfm pythonPackages.pylast
@ -131,6 +135,8 @@ in buildPythonApplication rec {
s,"flac","${flac.bin}/bin/flac", s,"flac","${flac.bin}/bin/flac",
s,"mp3val","${mp3val}/bin/mp3val", s,"mp3val","${mp3val}/bin/mp3val",
}' beetsplug/badfiles.py }' beetsplug/badfiles.py
'' + optionalString enableConvert ''
sed -i -e 's,\(util\.command_output(\)\([^)]\+\)),\1[b"${ffmpeg.bin}/bin/ffmpeg" if args[0] == b"ffmpeg" else args[0]] + \2[1:]),' beetsplug/convert.py
'' + optionalString enableReplaygain '' '' + optionalString enableReplaygain ''
sed -i -re ' sed -i -re '
s!^( *cmd *= *b?['\'''"])(bs1770gain['\'''"])!\1${bs1770gain}/bin/\2! s!^( *cmd *= *b?['\'''"])(bs1770gain['\'''"])!\1${bs1770gain}/bin/\2!