mirror of
https://github.com/Zaarrg/stremio-community-v5.git
synced 2026-04-21 09:01:55 +00:00
Added subtitle drag and drop support
This commit is contained in:
parent
bf83deab4b
commit
b69b78caa4
7 changed files with 24 additions and 5 deletions
|
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(stremio VERSION "5.0.14")
|
project(stremio VERSION "5.0.14")
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||||
|
|
||||||
# Locate MPV
|
# Locate MPV
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,12 @@ std::set<std::string> g_observedProps;
|
||||||
bool g_initialSet = false;
|
bool g_initialSet = false;
|
||||||
std::string g_initialVO = "gpu-next";
|
std::string g_initialVO = "gpu-next";
|
||||||
int g_currentVolume = 50;
|
int g_currentVolume = 50;
|
||||||
|
const std::vector<std::wstring> g_subtitleExtensions = {
|
||||||
|
L".srt", L".ass", L".ssa", L".sub", L".vtt", L".ttml",
|
||||||
|
L".dfxp", L".smi", L".sami", L".sup", L".scc",
|
||||||
|
L".xml", L".lrc", L".pjs", L".mpl", L".usf",
|
||||||
|
L".qtvr"
|
||||||
|
};
|
||||||
// Node
|
// Node
|
||||||
std::atomic_bool g_nodeRunning = false;
|
std::atomic_bool g_nodeRunning = false;
|
||||||
std::thread g_nodeThread;
|
std::thread g_nodeThread;
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ extern std::set<std::string> g_observedProps;
|
||||||
extern bool g_initialSet;
|
extern bool g_initialSet;
|
||||||
extern std::string g_initialVO;
|
extern std::string g_initialVO;
|
||||||
extern int g_currentVolume;
|
extern int g_currentVolume;
|
||||||
|
extern const std::vector<std::wstring> g_subtitleExtensions;
|
||||||
|
|
||||||
// custom messages
|
// custom messages
|
||||||
#define WM_MPV_WAKEUP (WM_APP + 2)
|
#define WM_MPV_WAKEUP (WM_APP + 2)
|
||||||
|
|
|
||||||
|
|
@ -17,5 +17,6 @@ void ToggleFullScreen(HWND hWnd, bool enable);
|
||||||
// Webview
|
// Webview
|
||||||
void HandleInboundJSON(const std::string &msg);
|
void HandleInboundJSON(const std::string &msg);
|
||||||
void SendToJS(const std::string &eventName, const nlohmann::json &eventData);
|
void SendToJS(const std::string &eventName, const nlohmann::json &eventData);
|
||||||
|
void HandleEvent(const std::string &ev, std::vector<std::string> &args);
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
#include <tlhelp32.h>
|
#include <tlhelp32.h>
|
||||||
#include <iostream>
|
#include "../core/globals.h"
|
||||||
|
|
||||||
std::string WStringToUtf8(const std::wstring &wstr)
|
std::string WStringToUtf8(const std::wstring &wstr)
|
||||||
{
|
{
|
||||||
|
|
@ -109,4 +109,11 @@ std::wstring GetExeDirectory()
|
||||||
if(pos!=std::wstring::npos)
|
if(pos!=std::wstring::npos)
|
||||||
path.erase(pos);
|
path.erase(pos);
|
||||||
return path;
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isSubtitle(const std::wstring& filePath) {
|
||||||
|
std::wstring lowerFilePath = filePath;
|
||||||
|
std::transform(lowerFilePath.begin(), lowerFilePath.end(), lowerFilePath.begin(), towlower);
|
||||||
|
return std::any_of(g_subtitleExtensions.begin(), g_subtitleExtensions.end(),
|
||||||
|
[&](const std::wstring& ext) { return lowerFilePath.ends_with(ext); });
|
||||||
}
|
}
|
||||||
|
|
@ -13,5 +13,6 @@ std::wstring GetExeDirectory();
|
||||||
bool FileExists(const std::wstring& path);
|
bool FileExists(const std::wstring& path);
|
||||||
bool DirectoryExists(const std::wstring& dirPath);
|
bool DirectoryExists(const std::wstring& dirPath);
|
||||||
bool IsDuplicateProcessRunning(const std::vector<std::wstring>& targetProcesses);
|
bool IsDuplicateProcessRunning(const std::vector<std::wstring>& targetProcesses);
|
||||||
|
bool isSubtitle(const std::wstring& filePath);
|
||||||
|
|
||||||
#endif // HELPERS_H
|
#endif // HELPERS_H
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#include "webview.h"
|
#include "webview.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
@ -400,13 +399,18 @@ static void SetupWebMessageHandler()
|
||||||
{
|
{
|
||||||
std::wstring filePath = wuri.substr(8);
|
std::wstring filePath = wuri.substr(8);
|
||||||
std::string utf8FilePath = WStringToUtf8(filePath);
|
std::string utf8FilePath = WStringToUtf8(filePath);
|
||||||
|
|
||||||
|
if (isSubtitle(filePath)) {
|
||||||
|
std::vector<std::string> subaddArgs = {"sub-add",utf8FilePath};
|
||||||
|
HandleEvent("mpv-command", subaddArgs);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
json j;
|
json j;
|
||||||
j["type"] = "FileDropped";
|
j["type"] = "FileDropped";
|
||||||
j["path"] = utf8FilePath;
|
j["path"] = utf8FilePath;
|
||||||
SendToJS("FileDropped", j);
|
SendToJS("FileDropped", j);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For non-file URIs, open externally
|
// For non-file URIs, open externally
|
||||||
ShellExecuteW(nullptr, L"open", uri.get(), nullptr, nullptr, SW_SHOWNORMAL);
|
ShellExecuteW(nullptr, L"open", uri.get(), nullptr, nullptr, SW_SHOWNORMAL);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue