remove submodule
This commit is contained in:
parent
498f95668d
commit
b942b58b34
|
@ -4,5 +4,5 @@ file(GLOB_RECURSE SOURCES "src/*.cpp")
|
||||||
add_executable (rpc ${SOURCES})
|
add_executable (rpc ${SOURCES})
|
||||||
set_property(TARGET rpc PROPERTY CXX_STANDARD 20)
|
set_property(TARGET rpc PROPERTY CXX_STANDARD 20)
|
||||||
add_subdirectory("vendor")
|
add_subdirectory("vendor")
|
||||||
target_link_libraries(rpc PUBLIC WindowsApp discord-rpc)
|
target_link_libraries(rpc PUBLIC WindowsApp discord-rpc libcurl_static mbedcrypto mbedx509 mbedtls)
|
||||||
target_include_directories(rpc PRIVATE vendor)
|
target_include_directories(rpc PRIVATE vendor)
|
53
src/main.cpp
53
src/main.cpp
|
@ -54,34 +54,41 @@ int main() {
|
||||||
|
|
||||||
std::string currentMediaSource = mediaInformation->playbackSource;
|
std::string currentMediaSource = mediaInformation->playbackSource;
|
||||||
std::cout << currentMediaSource << std::endl;
|
std::cout << currentMediaSource << std::endl;
|
||||||
if (currentMediaSource != lastMediaSource)
|
if (currentMediaSource != lastMediaSource)
|
||||||
Discord_Shutdown(); //reinitialize with new client id
|
Discord_Shutdown(); // reinitialize with new client id
|
||||||
|
|
||||||
std::string serviceName = utils::getAppName(lastMediaSource);
|
std::string serviceName = utils::getAppName(lastMediaSource);
|
||||||
DiscordRichPresence activity{};
|
DiscordRichPresence activity{};
|
||||||
activity.type = ActivityType::LISTENING;
|
activity.type = ActivityType::LISTENING;
|
||||||
activity.details = mediaInformation->songTitle.c_str();
|
activity.details = mediaInformation->songTitle.c_str();
|
||||||
activity.state = std::string("by " + mediaInformation->songArtist).c_str();
|
activity.state = std::string("by " + mediaInformation->songArtist).c_str();
|
||||||
activity.smallImageText = serviceName.c_str();
|
activity.smallImageText = serviceName.c_str();
|
||||||
activity.smallImageKey = "icon";
|
std::string artworkURL = utils::getArtworkURL(mediaInformation->songTitle + " " + mediaInformation->songArtist +
|
||||||
|
" " + mediaInformation->songAlbum);
|
||||||
|
|
||||||
activity.largeImageText = mediaInformation->songAlbum.c_str();
|
activity.smallImageKey = "icon";
|
||||||
activity.largeImageKey = "";
|
if (artworkURL == "") {
|
||||||
|
activity.smallImageKey = "";
|
||||||
|
activity.largeImageText = "icon";
|
||||||
|
} else {
|
||||||
|
activity.largeImageText = mediaInformation->songAlbum.c_str();
|
||||||
|
activity.largeImageKey = artworkURL.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
if(mediaInformation->songDuration != 0) {
|
if (mediaInformation->songDuration != 0) {
|
||||||
int64_t remainingTime = mediaInformation->songDuration - mediaInformation->songElapsedTime;
|
int64_t remainingTime = mediaInformation->songDuration - mediaInformation->songElapsedTime;
|
||||||
activity.startTimestamp = time(nullptr) - mediaInformation->songElapsedTime;
|
activity.startTimestamp = time(nullptr) - mediaInformation->songElapsedTime;
|
||||||
activity.endTimestamp = time(nullptr) + remainingTime;
|
activity.endTimestamp = time(nullptr) + remainingTime;
|
||||||
}
|
}
|
||||||
std::string endpointURL = utils::getSearchEndpoint(lastMediaSource);
|
std::string endpointURL = utils::getSearchEndpoint(lastMediaSource);
|
||||||
|
|
||||||
if(endpointURL != "") {
|
if (endpointURL != "") {
|
||||||
activity.button1name = std::string("Search on " + serviceName).c_str();
|
activity.button1name = std::string("Search on " + serviceName).c_str();
|
||||||
std::string searchQuery = mediaInformation->songTitle + " " + mediaInformation->songArtist;
|
std::string searchQuery = mediaInformation->songTitle + " " + mediaInformation->songArtist;
|
||||||
activity.button1link = std::string(endpointURL + utils::urlEncode(searchQuery)).c_str();
|
activity.button1link = std::string(endpointURL + utils::urlEncode(searchQuery)).c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
lastMediaSource = currentMediaSource;
|
lastMediaSource = currentMediaSource;
|
||||||
Discord_UpdatePresence(&activity);
|
Discord_UpdatePresence(&activity);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
#ifndef _UTILS_
|
#ifndef _UTILS_
|
||||||
#define _UTILS_
|
#define _UTILS_
|
||||||
|
#include <curl/include/curl/curl.h>
|
||||||
|
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <nlohmann-json/single_include/nlohmann/json.hpp>
|
#include <nlohmann-json/single_include/nlohmann/json.hpp>
|
||||||
|
@ -11,6 +13,62 @@
|
||||||
#define CONFIG_FILENAME "known.json"
|
#define CONFIG_FILENAME "known.json"
|
||||||
|
|
||||||
namespace utils {
|
namespace utils {
|
||||||
|
inline std::string urlEncode(std::string str) {
|
||||||
|
std::string new_str = "";
|
||||||
|
char c;
|
||||||
|
int ic;
|
||||||
|
const char* chars = str.c_str();
|
||||||
|
char bufHex[10];
|
||||||
|
int len = strlen(chars);
|
||||||
|
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
c = chars[i];
|
||||||
|
ic = c;
|
||||||
|
if (c == ' ')
|
||||||
|
new_str += '+';
|
||||||
|
else if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~')
|
||||||
|
new_str += c;
|
||||||
|
else {
|
||||||
|
sprintf_s(bufHex, sizeof(bufHex), "%X", c);
|
||||||
|
if (ic < 16)
|
||||||
|
new_str += "%0";
|
||||||
|
else
|
||||||
|
new_str += "%";
|
||||||
|
new_str += bufHex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new_str;
|
||||||
|
}
|
||||||
|
inline size_t curlWriteCallback(char* contents, size_t size, size_t nmemb, void* userp) {
|
||||||
|
((std::string*)userp)->append((char*)contents, size * nmemb);
|
||||||
|
return size * nmemb;
|
||||||
|
}
|
||||||
|
inline std::string getRequest(std::string url) {
|
||||||
|
CURL* curl;
|
||||||
|
CURLcode res;
|
||||||
|
std::string buf;
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if (curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curlWriteCallback);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buf);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
curl_global_cleanup();
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
inline std::string getArtworkURL(std::string query) {
|
||||||
|
std::string response =
|
||||||
|
getRequest("https://itunes.apple.com/search?media=music&entity=song&term=" + urlEncode(query));
|
||||||
|
nlohmann::json j = nlohmann::json::parse(response);
|
||||||
|
auto results = j["results"];
|
||||||
|
if (results.size() > 0) {
|
||||||
|
return results[0]["artworkUrl100"].get<std::string>();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
inline nlohmann::json getApp(std::string processName) {
|
inline nlohmann::json getApp(std::string processName) {
|
||||||
std::ifstream i("known.json");
|
std::ifstream i("known.json");
|
||||||
std::stringstream s;
|
std::stringstream s;
|
||||||
|
@ -52,33 +110,6 @@ namespace utils {
|
||||||
auto app = getApp(processName);
|
auto app = getApp(processName);
|
||||||
return app["search_endpoint"] == "" ? "" : app["search_endpoint"];
|
return app["search_endpoint"] == "" ? "" : app["search_endpoint"];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::string urlEncode(std::string str) {
|
|
||||||
std::string new_str = "";
|
|
||||||
char c;
|
|
||||||
int ic;
|
|
||||||
const char* chars = str.c_str();
|
|
||||||
char bufHex[10];
|
|
||||||
int len = strlen(chars);
|
|
||||||
|
|
||||||
for (int i = 0; i < len; i++) {
|
|
||||||
c = chars[i];
|
|
||||||
ic = c;
|
|
||||||
if (c == ' ')
|
|
||||||
new_str += '+';
|
|
||||||
else if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~')
|
|
||||||
new_str += c;
|
|
||||||
else {
|
|
||||||
sprintf(bufHex, "%X", c);
|
|
||||||
if (ic < 16)
|
|
||||||
new_str += "%0";
|
|
||||||
else
|
|
||||||
new_str += "%";
|
|
||||||
new_str += bufHex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new_str;
|
|
||||||
}
|
|
||||||
} // namespace utils
|
} // namespace utils
|
||||||
|
|
||||||
#undef DEFAULT_APP_NAME
|
#undef DEFAULT_APP_NAME
|
||||||
|
|
|
@ -3,6 +3,7 @@ SET(ENABLE_PROGRAMS OFF)
|
||||||
SET(ENABLE_TESTING OFF)
|
SET(ENABLE_TESTING OFF)
|
||||||
add_subdirectory("mbedtls")
|
add_subdirectory("mbedtls")
|
||||||
SET(CURL_USE_MBEDTLS ON)
|
SET(CURL_USE_MBEDTLS ON)
|
||||||
|
SET(CURL_USE_LIBPSL OFF)
|
||||||
SET(BUILD_STATIC_LIBS ON)
|
SET(BUILD_STATIC_LIBS ON)
|
||||||
SET(BUILD_SHARED_LIBS OFF)
|
SET(BUILD_SHARED_LIBS OFF)
|
||||||
SET(BUILD_CURL_EXE OFF)
|
SET(BUILD_CURL_EXE OFF)
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit d6b2214e96fdb7cad468cbe7fc100c0b80522d43
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit cd0fb1d17852077297816e30823b8125ba073357
|
Subproject commit 107ea89daaefb9867ea9121002fbbdf926780e98
|
Loading…
Reference in New Issue