diff options
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"); |