Download RSS enclosure element if no proper MIME type is found

In the case where an RSS feed doesn't have the "enclosure" element
with type "application/x-bittorrent", fallback to the last enclosure
element which has no "type" attribute.
This commit is contained in:
Matan Bareket 2019-05-08 06:36:10 -04:00 committed by Chocobo1
parent 9a4dd3ea9d
commit 8f29b70c1e
No known key found for this signature in database
GPG key ID: 210D9C873253A68C

View file

@ -590,6 +590,7 @@ void Parser::parse_impl(const QByteArray &feedData)
void Parser::parseRssArticle(QXmlStreamReader &xml)
{
QVariantHash article;
QString altTorrentUrl;
while (!xml.atEnd()) {
xml.readNext();
@ -605,6 +606,8 @@ void Parser::parseRssArticle(QXmlStreamReader &xml)
else if (name == QLatin1String("enclosure")) {
if (xml.attributes().value("type") == QLatin1String("application/x-bittorrent"))
article[Article::KeyTorrentURL] = xml.attributes().value(QLatin1String("url")).toString();
else if (xml.attributes().value("type").isEmpty())
altTorrentUrl = xml.attributes().value(QLatin1String("url")).toString();
}
else if (name == QLatin1String("link")) {
const QString text {xml.readElementText().trimmed()};
@ -631,6 +634,9 @@ void Parser::parseRssArticle(QXmlStreamReader &xml)
}
}
if (article[Article::KeyTorrentURL].toString().isEmpty())
article[Article::KeyTorrentURL] = altTorrentUrl;
m_result.articles.prepend(article);
}