player: add cover-art-whitelist option

This allows more fine grained control over which cover art to load. With
--cover-art-auto=exact and --cover-art-whitelist=yes, you can now load
cover art with the exact media filename and the whitelisted filenames,
but not cover art that contains the media filename
(--cover-art-auto=fuzzy).
This commit is contained in:
Guido Cella 2021-12-03 16:52:53 +01:00 committed by Dudemanguy
parent c317abbb63
commit 9d2a6dc302
4 changed files with 12 additions and 3 deletions

View File

@ -6905,8 +6905,7 @@ Miscellaneous
:no: Don't automatically load cover art.
:exact: Load the media filename with an image file extension.
:fuzzy: Load all cover art containing the media filename and filenames
in an internal whitelist, such as ``cover.jpg`` (default).
:fuzzy: Load all cover art containing the media filename (default).
:all: Load all images in the current directory.
See ``--cover-art-files`` for details about what constitutes cover art.
@ -6914,6 +6913,13 @@ Miscellaneous
See ``--audio-display`` how to control display of cover art (this can be
used to disable cover art that is part of the file).
``--cover-art-whitelist=<no|yes>``
Whether to load filenames in an internal whitelist, such as ``cover.jpg``,
as cover art. If ``cover-art-auto`` is set to ``no``, the whitelisted
filenames are never loaded even if this option is set to ``yes``.
Default: ``yes``.
``--autoload-files=<yes|no>``
Automatically load/select external files (default: yes).

View File

@ -611,6 +611,7 @@ static const m_option_t mp_opts[] = {
{"no", -1}, {"exact", 0}, {"fuzzy", 1}, {"all", 2})},
{"cover-art-auto", OPT_CHOICE(coverart_auto,
{"no", -1}, {"exact", 0}, {"fuzzy", 1}, {"all", 2})},
{"cover-art-whitelist", OPT_BOOL(coverart_whitelist)},
{"", OPT_SUBSTRUCT(subs_rend, mp_subtitle_sub_opts)},
{"", OPT_SUBSTRUCT(subs_filt, mp_sub_filter_opts)},
@ -1033,6 +1034,7 @@ static const struct MPOpts mp_default_opts = {
.sub_auto = 0,
.audiofile_auto = -1,
.coverart_auto = 1,
.coverart_whitelist = true,
.osd_bar_visible = 1,
.screenshot_template = "mpv-shot%n",
.play_dir = 1,

View File

@ -306,6 +306,7 @@ typedef struct MPOpts {
int sub_auto;
int audiofile_auto;
int coverart_auto;
bool coverart_whitelist;
int osd_bar_visible;
int w32_priority;

View File

@ -246,7 +246,7 @@ static void append_dir_subtitles(struct mpv_global *global, struct MPOpts *opts,
if (bstr_find(tmp_fname_trim, f_fname_trim) >= 0 && fuzz >= 1)
prio |= 2; // contains the movie name
if (type == STREAM_VIDEO && fuzz >= 1 && prio == 0)
if (type == STREAM_VIDEO && opts->coverart_whitelist && prio == 0)
prio = test_cover_filename(dename);
// doesn't contain the movie name