diff options
author | dec05eba <dec05eba@protonmail.com> | 2019-10-13 03:32:07 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2019-10-13 03:32:10 +0200 |
commit | 2ba21aa9aa91b975fe0c8be630dde05d0d9b5366 (patch) | |
tree | 272124e9068febe01630acc23ddea36866f77484 /src/plugins | |
parent | cc25c30cf177ee83d800925c72b7d334b76fb83d (diff) |
Manganelo: Download all images at once, and show page after it has downloaded
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/Manganelo.cpp | 43 |
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 |