diff --git a/src/lyrics.cpp b/src/lyrics.cpp
index c15cbcf3..bdb9c722 100644
--- a/src/lyrics.cpp
+++ b/src/lyrics.cpp
@@ -34,6 +34,21 @@ size_t write_data(char *buffer, size_t size, size_t nmemb, string data)
return result;
}
+void EscapeHtml(string &str)
+{
+ for (int i = str.find("<"); i != string::npos; i = str.find("<"))
+ {
+ int j = str.find(">")+1;
+ str.replace(i, j-i, "");
+ }
+ for (int i = str.find("'"); i != string::npos; i = str.find("'"))
+ str.replace(i, 6, "'");
+ for (int i = str.find("""); i != string::npos; i = str.find("""))
+ str.replace(i, 6, "\"");
+ for (int i = str.find("&"); i != string::npos; i = str.find("&"))
+ str.replace(i, 6, "&");
+}
+
string GetLyrics(string artist, string song)
{
const string filename = artist + " - " + song + ".txt";
@@ -87,30 +102,12 @@ string GetLyrics(string artist, string song)
if (result == "Not found")
return result;
- for (int i = result.find("'"); i != string::npos; i = result.find("'"))
- result.replace(i, 6, "'");
- for (int i = result.find("""); i != string::npos; i = result.find("""))
- result.replace(i, 6, "\"");
for (int i = result.find("<"); i != string::npos; i = result.find("<"))
result.replace(i, 4, "<");
for (int i = result.find(">"); i != string::npos; i = result.find(">"))
result.replace(i, 4, ">");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 7, "");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 8, "");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 8, "");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 9, "");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 3, "");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 4, "");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 3, "");
- for (int i = result.find(""); i != string::npos; i = result.find(""))
- result.replace(i, 4, "");
+
+ EscapeHtml(result);
std::ofstream output(fullpath.c_str());
diff --git a/src/lyrics.h b/src/lyrics.h
index 6a4008d8..5ae8ce9d 100644
--- a/src/lyrics.h
+++ b/src/lyrics.h
@@ -28,6 +28,7 @@
# include "curl/curl.h"
#endif
+void EscapeHtml(string &);
string GetLyrics(string, string);
#endif