diff --git a/src/libdanbooru/konachan.cpp b/src/libdanbooru/konachan.cpp index a40b9ea..f0c6fc5 100644 --- a/src/libdanbooru/konachan.cpp +++ b/src/libdanbooru/konachan.cpp @@ -106,7 +106,7 @@ void KonachanDanbooruService::getPostList() { } -void KonachanDanbooruService::getPoolList() +void KonachanDanbooruService::getPoolList(int limit) { QUrl danbooruUrl; @@ -130,7 +130,7 @@ void KonachanDanbooruService::getPoolList() // connect(job, &KIO::StoredTransferJob::result, this, &DanbooruService::processPoolList); - connect(job, &KIO::StoredTransferJob::result, [this](KJob * job) { + connect(job, &KIO::StoredTransferJob::result, [this, limit](KJob * job) { if (job->error()) { Q_EMIT(downloadError(job->errorString())); @@ -148,6 +148,10 @@ void KonachanDanbooruService::getPoolList() return; } + if (limit > 0 && poolList.length() > limit) { + poolList = poolList.mid(0, limit); + } + for (auto element : poolList) { QVariantMap map = element.toMap(); @@ -378,7 +382,13 @@ void KonachanDanbooruService::processPostList(KJob *job) } m_postsToFetch = postList.length(); -// qCDebug(LIBDANBOORU) << "Found " << m_postsToFetch << "posts to fetch"; + qCDebug(LIBDANBOORU) << "Found " << m_postsToFetch << "posts to fetch" << "with limit" << m_maxPosts; + + // This is mostly needed for pools + if (postList.length() > m_maxPosts) { + m_postsToFetch = m_maxPosts; + postList = postList.mid(0, m_maxPosts); + } for (auto element : postList) { @@ -446,7 +456,6 @@ void KonachanDanbooruService::processPostList(KJob *job) m_cache->insertPixmap(post->thumbnailUrl().url(), pix); } - m_postsToFetch--; // One less post to do qCDebug(LIBDANBOORU) << "Current posts remaining: " << m_postsToFetch; diff --git a/src/libdanbooru/konachan.h b/src/libdanbooru/konachan.h index e959d4a..777d879 100644 --- a/src/libdanbooru/konachan.h +++ b/src/libdanbooru/konachan.h @@ -48,7 +48,7 @@ public: Danbooru::ApiType apiType() const override; void getPostList() override; - void getPoolList() override; + void getPoolList(int limit = -1) override; void getPool(int poolId, int page = 1) override; void getTagList(int limit = 10, QString name = "") override; void getRelatedTags(const QStringList &tags, diff --git a/src/libdanbooru/servicebase.h b/src/libdanbooru/servicebase.h index 58ee479..ebf58f1 100644 --- a/src/libdanbooru/servicebase.h +++ b/src/libdanbooru/servicebase.h @@ -282,7 +282,7 @@ public: * This does not actually retrieve pool contents, only their definitions. * **/ - virtual void getPoolList() = 0; + virtual void getPoolList(int limit = -1) = 0; /** * @brief retrieve posts associated to a specific pool from a Danbooru board.