aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp79
1 files changed, 41 insertions, 38 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 4b645d4..fd679ff 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -3,9 +3,8 @@
#include "../plugins/Mangadex.hpp"
#include "../plugins/MangaGeneric.hpp"
#include "../plugins/MangaCombined.hpp"
+#include "../plugins/MediaGeneric.hpp"
#include "../plugins/Youtube.hpp"
-#include "../plugins/Pornhub.hpp"
-#include "../plugins/Spankbang.hpp"
#include "../plugins/Fourchan.hpp"
#include "../plugins/NyaaSi.hpp"
#include "../plugins/Matrix.hpp"
@@ -789,6 +788,22 @@ namespace QuickMedia {
.manga_id_handler("/manga/", nullptr);
}
+ static void add_pornhub_handlers(MediaGenericSearchPage *media_generic_search_page) {
+ media_generic_search_page->search_handler("https://www.pornhub.com/video/search?search=%s&page=%p", 1)
+ .text_handler({{"//div[class='nf-videos']//div[class='phimage']//a", "title", "href", "/view_video.php"}})
+ .thumbnail_handler({{"//div[class='nf-videos']//div[class='phimage']//img", "data-src", "/videos/"}})
+ .related_media_text_handler({{"//div[class='phimage']//a", "title", "href", "/view_video.php"}})
+ .related_media_thumbnail_handler({{"//div[class='phimage']//img", "data-src", nullptr}});
+ }
+
+ static void add_spankbang_handlers(MediaGenericSearchPage *media_generic_search_page) {
+ media_generic_search_page->search_handler("https://spankbang.com/s/%s/%p/", 1)
+ .text_handler({{"//div[class='main_results']//div[class='video-item']//a[class='n']", "text", "href", "/video/"}})
+ .thumbnail_handler({{"//div[class='main_results']//div[class='video-item']//img", "data-src", nullptr}})
+ .related_media_text_handler({{"//div[class='right']//div[class='video-item']//a[class='n']", "text", "href", "/video/"}})
+ .related_media_thumbnail_handler({{"//div[class='right']//div[class='video-item']//img", "data-src", nullptr}});
+ }
+
void Program::load_plugin_by_name(std::vector<Tab> &tabs, const char *start_dir) {
if(!plugin_name || plugin_name[0] == '\0')
return;
@@ -831,58 +846,48 @@ namespace QuickMedia {
pipe_body->items.push_back(create_launcher_body_item("YouTube (audio only)", "youtube-audio", resources_root + "icons/yt_launcher.png"));
tabs.push_back(Tab{std::move(pipe_body), std::make_unique<PipePage>(this, "Select plugin to launch"), create_search_bar("Search...", SEARCH_DELAY_FILTER)});
} else if(strcmp(plugin_name, "manganelo") == 0) {
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<ManganeloSearchPage>(this), create_search_bar("Search...", 400)});
+ tabs.push_back(Tab{create_body(), std::make_unique<ManganeloSearchPage>(this), create_search_bar("Search...", 400)});
- auto history_body = create_body();
auto search_bar = create_search_bar("Search...", SEARCH_DELAY_FILTER);
auto history_page = std::make_unique<HistoryPage>(this, tabs.front().page.get(), search_bar.get(), HistoryType::MANGA);
- tabs.push_back(Tab{std::move(history_body), std::move(history_page), std::move(search_bar)});
+ tabs.push_back(Tab{create_body(), std::move(history_page), std::move(search_bar)});
} else if(strcmp(plugin_name, "manganelos") == 0) {
- auto search_body = create_body();
auto search_page = std::make_unique<MangaGenericSearchPage>(this, plugin_name, "http://manganelos.com/");
add_manganelos_handlers(search_page.get());
- tabs.push_back(Tab{std::move(search_body), std::move(search_page), create_search_bar("Search...", 400)});
+ tabs.push_back(Tab{create_body(), std::move(search_page), create_search_bar("Search...", 400)});
- auto history_body = create_body();
auto search_bar = create_search_bar("Search...", SEARCH_DELAY_FILTER);
auto history_page = std::make_unique<HistoryPage>(this, tabs.front().page.get(), search_bar.get(), HistoryType::MANGA);
- tabs.push_back(Tab{std::move(history_body), std::move(history_page), std::move(search_bar)});
+ tabs.push_back(Tab{create_body(), std::move(history_page), std::move(search_bar)});
} else if(strcmp(plugin_name, "mangatown") == 0) {
- auto search_body = create_body();
- auto search_page = std::make_unique<MangaGenericSearchPage>(this, plugin_name, "https://www.mangatown.com");
+ auto search_page = std::make_unique<MangaGenericSearchPage>(this, plugin_name, "https://www.mangatown.com/");
add_mangatown_handlers(search_page.get());
- tabs.push_back(Tab{std::move(search_body), std::move(search_page), create_search_bar("Search...", 400)});
+ tabs.push_back(Tab{create_body(), std::move(search_page), create_search_bar("Search...", 400)});
- auto history_body = create_body();
auto search_bar = create_search_bar("Search...", SEARCH_DELAY_FILTER);
auto history_page = std::make_unique<HistoryPage>(this, tabs.front().page.get(), search_bar.get(), HistoryType::MANGA);
- tabs.push_back(Tab{std::move(history_body), std::move(history_page), std::move(search_bar)});
+ tabs.push_back(Tab{create_body(), std::move(history_page), std::move(search_bar)});
} else if(strcmp(plugin_name, "mangakatana") == 0) {
- auto search_body = create_body();
- auto search_page = std::make_unique<MangaGenericSearchPage>(this, plugin_name, "https://mangakatana.com", false);
+ auto search_page = std::make_unique<MangaGenericSearchPage>(this, plugin_name, "https://mangakatana.com/", false);
add_mangakatana_handlers(search_page.get());
- tabs.push_back(Tab{std::move(search_body), std::move(search_page), create_search_bar("Search...", 400)});
+ tabs.push_back(Tab{create_body(), std::move(search_page), create_search_bar("Search...", 400)});
- auto history_body = create_body();
auto search_bar = create_search_bar("Search...", SEARCH_DELAY_FILTER);
auto history_page = std::make_unique<HistoryPage>(this, tabs.front().page.get(), search_bar.get(), HistoryType::MANGA);
- tabs.push_back(Tab{std::move(history_body), std::move(history_page), std::move(search_bar)});
+ tabs.push_back(Tab{create_body(), std::move(history_page), std::move(search_bar)});
} else if(strcmp(plugin_name, "mangadex") == 0) {
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<MangadexSearchPage>(this), create_search_bar("Search...", 400)});
+ tabs.push_back(Tab{create_body(), std::make_unique<MangadexSearchPage>(this), create_search_bar("Search...", 400)});
- auto history_body = create_body();
auto search_bar = create_search_bar("Search...", SEARCH_DELAY_FILTER);
auto history_page = std::make_unique<HistoryPage>(this, tabs.front().page.get(), search_bar.get(), HistoryType::MANGA);
- tabs.push_back(Tab{std::move(history_body), std::move(history_page), std::move(search_bar)});
+ tabs.push_back(Tab{create_body(), std::move(history_page), std::move(search_bar)});
} else if(strcmp(plugin_name, "manga") == 0) {
auto manganelo = std::make_unique<ManganeloSearchPage>(this);
auto manganelos = std::make_unique<MangaGenericSearchPage>(this, "manganelos", "http://manganelos.com/");
add_manganelos_handlers(manganelos.get());
- auto mangatown = std::make_unique<MangaGenericSearchPage>(this, "mangatown", "https://www.mangatown.com");
+ auto mangatown = std::make_unique<MangaGenericSearchPage>(this, "mangatown", "https://www.mangatown.com/");
add_mangatown_handlers(mangatown.get());
- auto mangakatana = std::make_unique<MangaGenericSearchPage>(this, "mangakatana", "https://mangakatana.com", false);
+ auto mangakatana = std::make_unique<MangaGenericSearchPage>(this, "mangakatana", "https://mangakatana.com/", false);
add_mangakatana_handlers(mangakatana.get());
std::vector<MangaPlugin> pages;
@@ -918,8 +923,7 @@ namespace QuickMedia {
PipePage::load_body_items_from_stdin(pipe_body->items);
tabs.push_back(Tab{std::move(pipe_body), std::make_unique<PipePage>(this), create_search_bar("Search...", SEARCH_DELAY_FILTER)});
} else if(strcmp(plugin_name, "youtube") == 0) {
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<YoutubeSearchPage>(this), create_search_bar("Search...", 350)});
+ tabs.push_back(Tab{create_body(), std::make_unique<YoutubeSearchPage>(this), create_search_bar("Search...", 350)});
auto history_body = create_body();
auto history_search_bar = create_search_bar("Search...", SEARCH_DELAY_FILTER);
@@ -931,23 +935,22 @@ namespace QuickMedia {
tabs.push_back(Tab{create_body(), std::move(recommended_page), std::move(recommended_search_bar)});
tabs.push_back(Tab{create_body(), std::make_unique<YoutubeSubscriptionsPage>(this), create_search_bar("Search...", SEARCH_DELAY_FILTER)});
} else if(strcmp(plugin_name, "pornhub") == 0) {
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<PornhubSearchPage>(this), create_search_bar("Search...", 500)});
+ auto search_page = std::make_unique<MediaGenericSearchPage>(this, "https://www.pornhub.com/", sf::Vector2i(320, 180));
+ add_pornhub_handlers(search_page.get());
+ tabs.push_back(Tab{create_body(), std::move(search_page), create_search_bar("Search...", 500)});
} else if(strcmp(plugin_name, "spankbang") == 0) {
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<SpankbangSearchPage>(this), create_search_bar("Search...", 500)});
+ auto search_page = std::make_unique<MediaGenericSearchPage>(this, "https://spankbang.com/", sf::Vector2i(500/2, 281/2));
+ add_spankbang_handlers(search_page.get());
+ tabs.push_back(Tab{create_body(), std::move(search_page), create_search_bar("Search...", 500)});
} else if(strcmp(plugin_name, "spotify") == 0) {
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<SpotifyPodcastSearchPage>(this), create_search_bar("Search...", 350)});
+ tabs.push_back(Tab{create_body(), std::make_unique<SpotifyPodcastSearchPage>(this), create_search_bar("Search...", 350)});
no_video = true;
} else if(strcmp(plugin_name, "soundcloud") == 0) {
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<SoundcloudSearchPage>(this), create_search_bar("Search...", 500)});
+ tabs.push_back(Tab{create_body(), std::make_unique<SoundcloudSearchPage>(this), create_search_bar("Search...", 500)});
no_video = true;
} else if(strcmp(plugin_name, "mastodon") == 0 || strcmp(plugin_name, "pleroma") == 0) {
auto pleroma = std::make_shared<Pleroma>();
- auto search_body = create_body();
- tabs.push_back(Tab{std::move(search_body), std::make_unique<PleromaHomePage>(this, pleroma), create_search_bar("Search...", 350)});
+ tabs.push_back(Tab{create_body(), std::make_unique<PleromaHomePage>(this, pleroma), create_search_bar("Search...", 350)});
} else if(strcmp(plugin_name, "matrix") == 0) {
assert(!matrix);
matrix = new Matrix();