diff --git a/CMakeLists.txt b/CMakeLists.txt index 92fe822c..0a8adc07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -206,6 +206,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES ) set_source_files_properties( wiliwili/source/utils/config_helper.cpp + wiliwili/source/utils/version_helper.cpp wiliwili/source/activity/setting_activity.cpp wiliwili/source/activity/dlna_activity.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) diff --git a/wiliwili/include/utils/config_helper.hpp b/wiliwili/include/utils/config_helper.hpp index c935f43c..09441710 100644 --- a/wiliwili/include/utils/config_helper.hpp +++ b/wiliwili/include/utils/config_helper.hpp @@ -117,6 +117,8 @@ class APPVersion : public brls::Singleton { std::string getPlatform(); + std::string getDeviceName(); + static std::string getPackageName(); bool needUpdate(std::string latestVersion); diff --git a/wiliwili/source/fragment/mine_qr_login.cpp b/wiliwili/source/fragment/mine_qr_login.cpp index c9becd1a..75620352 100644 --- a/wiliwili/source/fragment/mine_qr_login.cpp +++ b/wiliwili/source/fragment/mine_qr_login.cpp @@ -82,7 +82,7 @@ void MineQrLogin::checkLogin() { brls::Logger::debug("check login"); ASYNC_RETAIN bilibili::BilibiliClient::get_login_info_v2( - this->oauthKey, "wiliwili - " + APPVersion::instance().getPlatform(), ProgramConfig::instance().getDeviceID(), + this->oauthKey, APPVersion::instance().getDeviceName(), ProgramConfig::instance().getDeviceID(), [ASYNC_TOKEN](bilibili::LoginInfo info) { this->loginCb.fire(info); brls::Logger::debug("return code:{}", (int)info); diff --git a/wiliwili/source/utils/activity_helper.cpp b/wiliwili/source/utils/activity_helper.cpp index 9809043a..4bf4ce71 100644 --- a/wiliwili/source/utils/activity_helper.cpp +++ b/wiliwili/source/utils/activity_helper.cpp @@ -33,7 +33,7 @@ void Intent::openAV(const std::string& avid, uint64_t cid, int progress) { return; tmp = (tmp | MAX) ^ XOR; std::string x = "0000000000"; - int i = 0; + size_t i = 0; while (i < x.length()) { x[i++] = table[tmp % BASE]; tmp /= BASE; diff --git a/wiliwili/source/utils/version_helper.cpp b/wiliwili/source/utils/version_helper.cpp index df1ad613..2cf676c6 100644 --- a/wiliwili/source/utils/version_helper.cpp +++ b/wiliwili/source/utils/version_helper.cpp @@ -10,12 +10,17 @@ #include #include #include -#include - #include "utils/config_helper.hpp" #include "utils/dialog_helper.hpp" #include "api/bilibili/util/http.hpp" #include "fragment/latest_update.hpp" +#ifdef __SWITCH__ +#include +#elif defined(__APPLE__) +#include +#elif defined(__linux__) +#include +#endif using namespace brls::literals; @@ -69,6 +74,37 @@ std::string APPVersion::getPlatform() { #endif } +std::string APPVersion::getDeviceName() { +#ifdef __SWITCH__ + SetSysDeviceNickName nick; + if (R_SUCCEEDED(setsysGetDeviceNickname(&nick))) { + return nick.nickname; + } +#elif defined(_WIN32) + DWORD bufsize = MAX_PATH; + std::vector buf(bufsize); + if (GetComputerNameW(buf.data(), &bufsize)) { + std::string name(bufsize * 3, '\0'); + WideCharToMultiByte(CP_UTF8, 0, buf.data(), bufsize, name.data(), name.size(), nullptr, nullptr); + return name.data(); + } +#elif defined(__APPLE__) + CFStringRef nameRef = SCDynamicStoreCopyComputerName(nullptr, nullptr); + if (nameRef) { + std::string name(CFStringGetLength(nameRef) * 3, '\0'); + CFStringGetCString(nameRef, name.data(), name.size(), kCFStringEncodingUTF8); + CFRelease(nameRef); + return name.data(); + } +#elif defined(__linux__) + std::vector buf(128); + if (gethostname(buf.data(), buf.size()) == 0) { + return buf.data(); + } +#endif + return fmt::format("wiliwili - {}", getPlatform()); +} + std::string APPVersion::getPackageName() { return std::string{STR(BUILD_PACKAGE_NAME)}; } bool APPVersion::needUpdate(std::string latestVersion) { @@ -115,7 +151,7 @@ void APPVersion::checkUpdate(int delay, bool showUpToDateDialog) { return; } const nlohmann::json res = nlohmann::json::parse(r.text); - auto info = res.get(); + auto info = res.get(); if (info.tag_name.empty()) { brls::Logger::error("Cannot parse update info, tag_name is empty"); return;