diff --git a/src/libdanbooru/utils.cpp b/src/libdanbooru/utils.cpp index 2464fd9..91604a8 100644 --- a/src/libdanbooru/utils.cpp +++ b/src/libdanbooru/utils.cpp @@ -31,6 +31,16 @@ #include "libdanbooru_debug.h" +namespace { + QUrl adjustUrl(QUrl baseUrl, QUrl boardUrl) { + if(baseUrl.host().isEmpty()) { + baseUrl.setHost(boardUrl.host()); + baseUrl.setScheme(boardUrl.scheme()); + } + return baseUrl; + } +} + namespace Danbooru { @@ -195,4 +205,17 @@ bool isPostBlacklisted(DanbooruPost *post, QSet blacklist, DanbooruPost } +void fixPostUrl(DanbooruPost *post, QUrl boardUrl) { + + auto thumbnailUrl = post->thumbnailUrl(); + auto sampleUrl = post->sampleUrl(); + auto fileUrl = post->fileUrl(); + + post->setThumbnailUrl(adjustUrl(thumbnailUrl, boardUrl)); + post->setSampleUrl(adjustUrl(sampleUrl, boardUrl)); + post->setFileUrl(adjustUrl(fileUrl, boardUrl)); + + +} + } // namespace Danbooru diff --git a/src/libdanbooru/utils.h b/src/libdanbooru/utils.h index 279fd67..b844869 100644 --- a/src/libdanbooru/utils.h +++ b/src/libdanbooru/utils.h @@ -119,5 +119,9 @@ QVariant parseDanbooruResult(QByteArray data, bool *result); */ bool isPostBlacklisted(DanbooruPost *post, QSet blacklist, DanbooruPost::Ratings maxRating); +void fixPostUrl(DanbooruPost *post, QUrl boardUrl); + } + + #endif // UTILS_H