From 68daf44032784a5b5b74781a9bf3826053eff4a2 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Wed, 24 Jul 2024 21:39:11 +0200 Subject: [PATCH] Don't treat unknown lyrics fetchers as errors --- src/settings.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/settings.cpp b/src/settings.cpp index f1dd56b5..221febbe 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -458,9 +458,24 @@ bool Configuration::read(const std::vector &config_paths, bool igno p.add("titles_visibility", &titles_visibility, "yes", yes_no); p.add("header_text_scrolling", &header_text_scrolling, "yes", yes_no); p.add("cyclic_scrolling", &use_cyclic_scrolling, "no", yes_no); - p.add("lyrics_fetchers", &lyrics_fetchers, - "genius, tekstowo, plyrics, justsomelyrics, jahlyrics, zeneszoveg, internet", - list_of); + p.add("lyrics_fetchers", nullptr, + "genius, tekstowo, plyrics, justsomelyrics, jahlyrics, zeneszoveg, internet", [this](std::string v) { + lyrics_fetchers = list_of(v, [](std::string s) { + LyricsFetcher_ fetcher; + try { + fetcher = boost::lexical_cast(s); + } catch (boost::bad_lexical_cast &) { + std::clog << "Unknown lyrics fetcher: " << s << "\n"; + } + return fetcher; + }); + auto it = std::remove_if( + lyrics_fetchers.begin(), lyrics_fetchers.end(), + [](const auto &f) { return f.get() == nullptr; }); + lyrics_fetchers.resize(it - lyrics_fetchers.begin()); + if (lyrics_fetchers.empty()) + invalid_value(v); + }); p.add("follow_now_playing_lyrics", &now_playing_lyrics, "no", yes_no); p.add("fetch_lyrics_for_current_song_in_background", &fetch_lyrics_in_background, "no", yes_no);