Browse Source

Ignore RSS articles with non-unique identifiers

adaptive-webui-19844
Vladimir Golovnev (Glassez) 6 years ago
parent
commit
68ee071331
No known key found for this signature in database
GPG Key ID: 52A2C7DEE2DFA6F7
  1. 17
      src/base/rss/private/rss_parser.cpp
  2. 2
      src/base/rss/private/rss_parser.h

17
src/base/rss/private/rss_parser.cpp

@ -583,6 +583,7 @@ void Parser::parse_impl(const QByteArray &feedData)
emit finished(m_result); emit finished(m_result);
m_result.articles.clear(); // clear articles only m_result.articles.clear(); // clear articles only
m_articleIDs.clear();
} }
void Parser::parseRssArticle(QXmlStreamReader &xml) void Parser::parseRssArticle(QXmlStreamReader &xml)
@ -774,6 +775,20 @@ void Parser::addArticle(QVariantHash article)
if (localId.toString().isEmpty()) if (localId.toString().isEmpty())
localId = article.value(Article::KeyTitle); localId = article.value(Article::KeyTitle);
if (!localId.toString().isEmpty()) if (localId.toString().isEmpty()) {
// The article could not be uniquely identified
// since it has no appropriate data.
// Just ignore it.
return;
}
if (m_articleIDs.contains(localId.toString())) {
// The article could not be uniquely identified
// since the Feed has duplicate identifiers.
// Just ignore it.
return;
}
m_articleIDs.insert(localId.toString());
m_result.articles.prepend(article); m_result.articles.prepend(article);
} }

2
src/base/rss/private/rss_parser.h

@ -31,6 +31,7 @@
#include <QList> #include <QList>
#include <QObject> #include <QObject>
#include <QSet>
#include <QString> #include <QString>
#include <QVariantHash> #include <QVariantHash>
@ -69,6 +70,7 @@ namespace RSS
QString m_baseUrl; QString m_baseUrl;
ParsingResult m_result; ParsingResult m_result;
QSet<QString> m_articleIDs;
}; };
} }
} }

Loading…
Cancel
Save