NyaaSi.hpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. #include "Page.hpp"
  3. namespace QuickMedia {
  4. void get_nyaa_si_categories(BodyItems &result_items);
  5. void get_sukebei_categories(BodyItems &result_items);
  6. class NyaaSiCategoryPage : public Page {
  7. public:
  8. NyaaSiCategoryPage(Program *program, bool is_sukebei) : Page(program), is_sukebei(is_sukebei) {}
  9. const char* get_title() const override { return is_sukebei ? "Select sukebei category" : "Select nyaa.si category"; }
  10. PluginResult submit(const SubmitArgs &args, std::vector<Tab> &result_tabs) override;
  11. const bool is_sukebei;
  12. };
  13. enum class NyaaSiSortType {
  14. SIZE_DESC,
  15. UPLOAD_DATE_DESC,
  16. SEEDERS_DESC,
  17. LEECHERS_DESC,
  18. DOWNLOADS_DESC,
  19. SIZE_ASC,
  20. UPLOAD_DATE_ASC,
  21. SEEDERS_ASC,
  22. LEECHERS_ASC,
  23. DOWNLOADS_ASC
  24. };
  25. class NyaaSiSearchPage : public Page, public TrackablePage {
  26. public:
  27. NyaaSiSearchPage(Program *program, std::string category_name, std::string category_id, std::string domain);
  28. const char* get_title() const override { return title.c_str(); }
  29. bool search_is_filter() override { return false; }
  30. SearchResult search(const std::string &str, BodyItems &result_items) override;
  31. PluginResult get_page(const std::string &str, int page, BodyItems &result_items) override;
  32. PluginResult submit(const SubmitArgs &args, std::vector<Tab> &result_tabs) override;
  33. TrackResult track(const std::string &str) override;
  34. bool is_trackable() const override { return true; }
  35. void set_sort_type(NyaaSiSortType sort_type);
  36. const std::string category_name;
  37. const std::string category_id;
  38. const std::string domain;
  39. private:
  40. NyaaSiSortType sort_type = NyaaSiSortType::UPLOAD_DATE_DESC;
  41. std::string title;
  42. };
  43. class NyaaSiSortOrderPage : public Page {
  44. public:
  45. NyaaSiSortOrderPage(Program *program, Body *body, NyaaSiSearchPage *search_page) : Page(program), body(body), search_page(search_page) {}
  46. const char* get_title() const override { return "Sort order"; }
  47. PluginResult submit(const SubmitArgs &args, std::vector<Tab> &result_tabs) override;
  48. bool submit_is_async() const override { return false; }
  49. private:
  50. Body *body;
  51. NyaaSiSearchPage *search_page;
  52. };
  53. class NyaaSiTorrentPage : public Page, public TrackablePage {
  54. public:
  55. NyaaSiTorrentPage(Program *program, std::string title) : Page(program), TrackablePage(std::move(title), "") {}
  56. const char* get_title() const override { return content_title.c_str(); }
  57. PluginResult submit(const SubmitArgs &args, std::vector<Tab> &result_tabs) override;
  58. bool submit_is_async() const override { return false; }
  59. TrackResult track(const std::string &str) override;
  60. bool is_trackable() const override { return true; }
  61. };
  62. }