aboutsummaryrefslogtreecommitdiff
path: root/src/DownloadUtils.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-05-10 18:49:44 +0200
committerdec05eba <dec05eba@protonmail.com>2021-05-10 22:41:04 +0200
commitcdf8d103f1ed6a932eb30b589b578d23ca66a514 (patch)
tree0782751764748be50c4203b8e1af14907046e3d2 /src/DownloadUtils.cpp
parent2eac1e3d3ece90d1c522e15cb57ee41baa3dd822 (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.cpp23
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");