From 7c7c991fabe07b6e6e2ad427ed98664df3f3dc35 Mon Sep 17 00:00:00 2001 From: Martin Rotter <rotter@praktik.cz> Date: Wed, 4 Aug 2021 13:24:37 +0200 Subject: [PATCH] greader new algo working with reedah too --- .../services/greader/greadernetwork.cpp | 26 ++++++++++++++++++- .../services/greader/greadernetwork.h | 2 ++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/librssguard/services/greader/greadernetwork.cpp b/src/librssguard/services/greader/greadernetwork.cpp index 91ae3accd..595153e6b 100755 --- a/src/librssguard/services/greader/greadernetwork.cpp +++ b/src/librssguard/services/greader/greadernetwork.cpp @@ -213,8 +213,17 @@ void GreaderNetwork::prepareFeedFetching(GreaderServiceRoot* root, } Feed::Status error; + QList<QString> to_download_list(to_download.begin(), to_download.end()); - m_prefetchedMessages = itemContents(root, QList<QString>(to_download.begin(), to_download.end()), error, proxy); + if (!to_download_list.isEmpty()) { + if (m_service == GreaderServiceRoot::Service::Reedah) { + for (int i = 0; i < to_download_list.size(); i++) { + to_download_list.replace(i, convertLongStreamIdToShortStreamId(to_download_list.at(i))); + } + } + + m_prefetchedMessages = itemContents(root, to_download_list, error, proxy); + } } QList<Message> GreaderNetwork::getMessagesIntelligently(ServiceRoot* root, @@ -283,6 +292,12 @@ QList<Message> GreaderNetwork::getMessagesIntelligently(ServiceRoot* root, QList<QString> to_download_list(to_download.begin(), to_download.end()); if (!to_download_list.isEmpty()) { + if (m_service == GreaderServiceRoot::Service::Reedah) { + for (int i = 0; i < to_download_list.size(); i++) { + to_download_list.replace(i, convertLongStreamIdToShortStreamId(to_download_list.at(i))); + } + } + msgs = itemContents(root, to_download_list, error, proxy); } } @@ -849,7 +864,16 @@ bool GreaderNetwork::ensureLogin(const QNetworkProxy& proxy, QNetworkReply::Netw return true; } +QString GreaderNetwork::convertLongStreamIdToShortStreamId(const QString& stream_id) const { + return QString::number(QString(stream_id).replace(QSL("tag:google.com,2005:reader/item/"), + QString()).toULongLong(nullptr, 16)); +} + QString GreaderNetwork::convertShortStreamIdToLongStreamId(const QString& stream_id) const { + if (stream_id.startsWith(QSL("tag:google.com,2005:reader/item/"))) { + return stream_id; + } + if (m_service == GreaderServiceRoot::Service::TheOldReader) { return QSL("tag:google.com,2005:reader/item/%1").arg(stream_id); } diff --git a/src/librssguard/services/greader/greadernetwork.h b/src/librssguard/services/greader/greadernetwork.h index bc2178b37..2c4994ebb 100755 --- a/src/librssguard/services/greader/greadernetwork.h +++ b/src/librssguard/services/greader/greadernetwork.h @@ -98,7 +98,9 @@ class GreaderNetwork : public QObject { // Make sure we are logged in and if we are not, return error. bool ensureLogin(const QNetworkProxy& proxy, QNetworkReply::NetworkError* output = nullptr); + QString convertLongStreamIdToShortStreamId(const QString& stream_id) const; QString convertShortStreamIdToLongStreamId(const QString& stream_id) const; + QString simplifyStreamId(const QString& stream_id) const; QStringList decodeItemIds(const QString& stream_json_data, QString& continuation); QList<Message> decodeStreamContents(ServiceRoot* root, const QString& stream_json_data, const QString& stream_id, QString& continuation);