From 89383cff1ba5d8a928262fcb4c40382a981c78c8 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 11 Jun 2021 04:51:03 +0200 Subject: Remove dependency on youtube-dl for streaming youtube, resulting in faster video startup --- plugins/youtube/Signature.hpp | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 plugins/youtube/Signature.hpp (limited to 'plugins/youtube') diff --git a/plugins/youtube/Signature.hpp b/plugins/youtube/Signature.hpp new file mode 100644 index 0000000..7456615 --- /dev/null +++ b/plugins/youtube/Signature.hpp @@ -0,0 +1,46 @@ +#pragma once + +#include "../../include/AsyncTask.hpp" +#include +#include +#include +#include +#include + +namespace QuickMedia { + // Thread safe + class YoutubeSignatureDecryptor { + public: + static YoutubeSignatureDecryptor& get_instance(); + bool decrypt(const std::string &s, const std::string &sp, std::string &sig_key, std::string &sig_value); + private: + YoutubeSignatureDecryptor(); + ~YoutubeSignatureDecryptor(); + YoutubeSignatureDecryptor(const YoutubeSignatureDecryptor&) = delete; + YoutubeSignatureDecryptor& operator=(const YoutubeSignatureDecryptor&) = delete; + + struct DecryptFuncCall { + std::string func_name; + long arg; + }; + + enum class DecryptFunction { + REVERSE, + SPLICE, + SWAP + }; + + bool js_code_to_operations(const std::string &function_body_str, const std::string &var_body_str, std::vector &new_func_calls, std::map &new_func_decls); + int update_decrypt_function(); + private: + AsyncTask poll_task; + std::mutex update_signature_mutex; + std::string decryption_function; + time_t decrypt_function_last_updated = 0; + bool running = false; + bool up_to_date = false; + + std::vector func_calls; + std::map func_decls; + }; +} \ No newline at end of file -- cgit v1.2.3