aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Manganelo.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2019-10-13 03:32:07 +0200
committerdec05eba <dec05eba@protonmail.com>2019-10-13 03:32:10 +0200
commit2ba21aa9aa91b975fe0c8be630dde05d0d9b5366 (patch)
tree272124e9068febe01630acc23ddea36866f77484 /src/plugins/Manganelo.cpp
parentcc25c30cf177ee83d800925c72b7d334b76fb83d (diff)
Manganelo: Download all images at once, and show page after it has downloaded
Diffstat (limited to 'src/plugins/Manganelo.cpp')
-rw-r--r--src/plugins/Manganelo.cpp43
1 files changed, 20 insertions, 23 deletions
diff --git a/src/plugins/Manganelo.cpp b/src/plugins/Manganelo.cpp
index cd22cb0..7af35a6 100644
--- a/src/plugins/Manganelo.cpp
+++ b/src/plugins/Manganelo.cpp
@@ -93,29 +93,8 @@ namespace QuickMedia {
return SuggestionResult::OK;
}
- ImageResult Manganelo::get_image_by_index(const std::string &url, int index, std::string &image_data) {
- ImageResult image_result = get_image_urls_for_chapter(url);
- if(image_result != ImageResult::OK)
- return image_result;
-
- int num_images = last_chapter_image_urls.size();
- if(index < 0 || index >= num_images)
- return ImageResult::END;
-
- // TODO: Cache image in file/memory
- switch(download_to_string(last_chapter_image_urls[index], image_data)) {
- case DownloadResult::OK:
- return ImageResult::OK;
- case DownloadResult::ERR:
- return ImageResult::ERR;
- case DownloadResult::NET_ERR:
- return ImageResult::NET_ERR;
- default:
- return ImageResult::ERR;
- }
- }
-
ImageResult Manganelo::get_number_of_images(const std::string &url, int &num_images) {
+ std::lock_guard<std::mutex> lock(image_urls_mutex);
num_images = 0;
ImageResult image_result = get_image_urls_for_chapter(url);
if(image_result != ImageResult::OK)
@@ -147,7 +126,7 @@ namespace QuickMedia {
if(src) {
// TODO: If image loads too slow, try switching mirror
std::string image_url = src;
- string_replace_all(image_url, "s3.mkklcdnv3.com", "bu.mkklcdnbuv1.com");
+ //string_replace_all(image_url, "s3.mkklcdnv3.com", "bu.mkklcdnbuv1.com");
urls->emplace_back(std::move(image_url));
}
}, &last_chapter_image_urls);
@@ -158,4 +137,22 @@ namespace QuickMedia {
last_chapter_url = url;
return result == 0 ? ImageResult::OK : ImageResult::ERR;
}
+
+ ImageResult Manganelo::for_each_page_in_chapter(const std::string &chapter_url, PageCallback callback) {
+ std::vector<std::string> image_urls;
+ {
+ std::lock_guard<std::mutex> lock(image_urls_mutex);
+ ImageResult image_result = get_image_urls_for_chapter(chapter_url);
+ if(image_result != ImageResult::OK)
+ return image_result;
+
+ image_urls = last_chapter_image_urls;
+ }
+
+ for(const std::string &url : image_urls) {
+ if(!callback(url))
+ break;
+ }
+ return ImageResult::OK;
+ }
} \ No newline at end of file