diff options
author | dec05eba <dec05eba@protonmail.com> | 2021-05-10 18:49:44 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2021-05-10 22:41:04 +0200 |
commit | cdf8d103f1ed6a932eb30b589b578d23ca66a514 (patch) | |
tree | 0782751764748be50c4203b8e1af14907046e3d2 /src/DownloadUtils.cpp | |
parent | 2eac1e3d3ece90d1c522e15cb57ee41baa3dd822 (diff) |
Add downloader, fix room navigation lag
Fix bug where getting next page fails if there is no search bar
Diffstat (limited to 'src/DownloadUtils.cpp')
-rw-r--r-- | src/DownloadUtils.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/DownloadUtils.cpp b/src/DownloadUtils.cpp index 4afba38..53f8bb0 100644 --- a/src/DownloadUtils.cpp +++ b/src/DownloadUtils.cpp @@ -2,7 +2,10 @@ #include "../include/Program.hpp" #include "../include/Storage.hpp" #include "../external/cppcodec/base64_url.hpp" +#include <unistd.h> +#include <limits.h> #include <SFML/System/Clock.hpp> +#include <SFML/Window/Event.hpp> #include <rapidjson/document.h> #include <rapidjson/filereadstream.h> @@ -54,7 +57,8 @@ namespace QuickMedia { args.push_back("-f"); for(const CommandArg &arg : additional_args) { args.push_back(arg.option.c_str()); - args.push_back(arg.value.c_str()); + if(!arg.value.empty()) + args.push_back(arg.value.c_str()); } if(use_browser_useragent) { args.push_back("-H"); @@ -137,6 +141,20 @@ namespace QuickMedia { return DownloadResult::OK; } + bool download_async_gui(const std::string &url, bool use_youtube_dl, bool no_video) { + char quickmedia_path[PATH_MAX]; + if(readlink("/proc/self/exe", quickmedia_path, sizeof(quickmedia_path)) == -1) + return false; + + std::vector<const char*> args = { quickmedia_path, "download", "-u", url.c_str() }; + if(use_youtube_dl) + args.push_back("--youtube-dl"); + if(no_video) + args.push_back("--no-video"); + args.push_back(nullptr); + return exec_program_async(args.data(), nullptr) == 0; + } + // TODO: Add timeout DownloadResult download_to_json(const std::string &url, rapidjson::Document &result, const std::vector<CommandArg> &additional_args, bool use_browser_useragent, bool fail_on_error) { sf::Clock timer; @@ -146,7 +164,8 @@ namespace QuickMedia { args.push_back("-f"); for(const CommandArg &arg : additional_args) { args.push_back(arg.option.c_str()); - args.push_back(arg.value.c_str()); + if(!arg.value.empty()) + args.push_back(arg.value.c_str()); } if(use_browser_useragent) { args.push_back("-H"); |