diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index eaa8f105d..8f8463d9b 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -650,11 +650,17 @@ QStringList Updateify(const QStringList &list) { QString DecodeHtmlEntities(const QString &text) { QString copy(text); - copy.replace("&", "&"); - copy.replace(""", "\""); - copy.replace("'", "'"); - copy.replace("<", "<"); - copy.replace(">", ">"); + copy.replace("&", "&") + .replace("&", "&") + .replace(""", "\"") + .replace(""", "\"") + .replace("'", "'") + .replace("'", "'") + .replace("<", "<") + .replace("<", "<") + .replace(">", ">") + .replace(">", ">"); + return copy; } diff --git a/src/lyrics/auddlyricsprovider.cpp b/src/lyrics/auddlyricsprovider.cpp index 70f636eba..e2a9a5268 100644 --- a/src/lyrics/auddlyricsprovider.cpp +++ b/src/lyrics/auddlyricsprovider.cpp @@ -37,6 +37,7 @@ #include "core/logging.h" #include "core/network.h" +#include "core/utilities.h" #include "jsonlyricsprovider.h" #include "lyricsfetcher.h" #include "lyricsprovider.h" @@ -129,6 +130,7 @@ void AuddLyricsProvider::HandleSearchReply(QNetworkReply *reply, const quint64 i if (result.artist.toLower() != artist.toLower() && result.title.toLower() != title.toLower()) continue; result.lyrics = json_obj["lyrics"].toString(); if (result.lyrics.isEmpty() || result.lyrics.length() > kMaxLength || result.lyrics == "error") continue; + result.lyrics = Utilities::DecodeHtmlEntities(result.lyrics); //qLog(Debug) << "AudDLyrics:" << result.artist << result.title << result.lyrics.length(); diff --git a/src/lyrics/chartlyricsprovider.cpp b/src/lyrics/chartlyricsprovider.cpp index 7fb8d4209..b4579ee6d 100644 --- a/src/lyrics/chartlyricsprovider.cpp +++ b/src/lyrics/chartlyricsprovider.cpp @@ -127,6 +127,7 @@ void ChartLyricsProvider::HandleSearchReply(QNetworkReply *reply, const quint64 else if (type == QXmlStreamReader::EndElement) { if (name == "GetLyricResult") { if (!result.artist.isEmpty() && !result.title.isEmpty() && !result.lyrics.isEmpty() && (result.artist.toLower() == artist.toLower() || result.title.toLower() == title.toLower())) { + result.lyrics = Utilities::DecodeHtmlEntities(result.lyrics); results << result; } result = LyricsSearchResult(); diff --git a/src/lyrics/geniuslyricsprovider.cpp b/src/lyrics/geniuslyricsprovider.cpp index 2a8f98ff3..a1d1a6552 100644 --- a/src/lyrics/geniuslyricsprovider.cpp +++ b/src/lyrics/geniuslyricsprovider.cpp @@ -515,7 +515,7 @@ void GeniusLyricsProvider::HandleLyricReply(QNetworkReply *reply, const int sear LyricsSearchResult result; result.artist = lyric.artist; result.title = lyric.title; - result.lyrics = lyrics; + result.lyrics = Utilities::DecodeHtmlEntities(lyrics); search->results.append(result); } diff --git a/src/lyrics/lololyricsprovider.cpp b/src/lyrics/lololyricsprovider.cpp index 7a586aa89..1a9eab888 100644 --- a/src/lyrics/lololyricsprovider.cpp +++ b/src/lyrics/lololyricsprovider.cpp @@ -35,6 +35,7 @@ #include "core/logging.h" #include "core/network.h" +#include "core/utilities.h" #include "lyricsprovider.h" #include "lyricsfetcher.h" #include "lololyricsprovider.h" @@ -137,6 +138,7 @@ void LoloLyricsProvider::HandleSearchReply(QNetworkReply *reply, const quint64 i else if (type == QXmlStreamReader::EndElement) { if (name == "result") { if (!result.lyrics.isEmpty()) { + result.lyrics = Utilities::DecodeHtmlEntities(result.lyrics); results << result; } result = LyricsSearchResult(); diff --git a/src/lyrics/musixmatchlyricsprovider.cpp b/src/lyrics/musixmatchlyricsprovider.cpp index 111cf21fa..69abd2a07 100644 --- a/src/lyrics/musixmatchlyricsprovider.cpp +++ b/src/lyrics/musixmatchlyricsprovider.cpp @@ -34,6 +34,7 @@ #include "core/logging.h" #include "core/network.h" +#include "core/utilities.h" #include "jsonlyricsprovider.h" #include "lyricsfetcher.h" #include "lyricsprovider.h" @@ -200,6 +201,7 @@ void MusixmatchLyricsProvider::HandleSearchReply(QNetworkReply *reply, const qui result.lyrics = obj_lyrics["body"].toString(); if (!result.lyrics.isEmpty() && (artist.toLower() == result.artist.toLower() || title.toLower() == result.title.toLower())) { + result.lyrics = Utilities::DecodeHtmlEntities(result.lyrics); results.append(result); } diff --git a/src/lyrics/ovhlyricsprovider.cpp b/src/lyrics/ovhlyricsprovider.cpp index ed5021ac1..31b88ee86 100644 --- a/src/lyrics/ovhlyricsprovider.cpp +++ b/src/lyrics/ovhlyricsprovider.cpp @@ -32,6 +32,7 @@ #include "core/logging.h" #include "core/network.h" +#include "core/utilities.h" #include "lyricsfetcher.h" #include "jsonlyricsprovider.h" #include "ovhlyricsprovider.h" @@ -107,6 +108,7 @@ void OVHLyricsProvider::HandleSearchReply(QNetworkReply *reply, const quint64 id emit SearchFinished(id, LyricsSearchResults()); } else { + result.lyrics = Utilities::DecodeHtmlEntities(result.lyrics); qLog(Debug) << "OVHLyrics: Got lyrics for" << artist << title; emit SearchFinished(id, LyricsSearchResults() << result); }