sdraw_mods_cvr/ml_vpc/Main.cs

76 lines
3 KiB
C#

using System;
using ABI_RC.VideoPlayer;
using System.Reflection;
using System.IO;
namespace ml_vpc
{
public class VideoPlayerCookies : MelonLoader.MelonMod
{
static string ms_cookiesPath;
public override void OnInitializeMelon()
{
HarmonyInstance.Patch(typeof(YoutubeDl).GetMethod("GetVideoMetaDataAsync", BindingFlags.NonPublic | BindingFlags.Static),
new HarmonyLib.HarmonyMethod(typeof(VideoPlayerCookies).GetMethod(nameof(OnGetYoutubeVideoMetaData_Prefix), BindingFlags.NonPublic | BindingFlags.Static))
);
ms_cookiesPath = Path.Combine(MelonLoader.Utils.MelonEnvironment.UserDataDirectory, "cookies.txt");
}
public override void OnLateInitializeMelon()
{
Settings.Init();
}
static void OnGetYoutubeVideoMetaData_Prefix(ref string parameter)
{
try
{
if (!Settings.Enabled)
return;
switch (Settings.Mode)
{
case Settings.CookieMode.File:
if (File.Exists(ms_cookiesPath))
parameter += string.Format(" --cookies \"{0}\"", ms_cookiesPath);
else
MelonLoader.MelonLogger.Warning("Cookies file not found in: '" + ms_cookiesPath + "'");
break;
case Settings.CookieMode.BrowserFirefox:
parameter += " --cookies-from-browser firefox";
break;
case Settings.CookieMode.BrowserBrave:
parameter += " --cookies-from-browser brave";
break;
case Settings.CookieMode.BrowserChrome:
parameter += " --cookies-from-browser chrome";
break;
case Settings.CookieMode.BrowserChromium:
parameter += " --cookies-from-browser chromium";
break;
case Settings.CookieMode.BrowserEdge:
parameter += " --cookies-from-browser edge";
break;
case Settings.CookieMode.BrowserOpera:
parameter += " --cookies-from-browser opera";
break;
case Settings.CookieMode.BrowserSafari:
parameter += " --cookies-from-browser safari";
break;
case Settings.CookieMode.BrowserVivaldi:
parameter += " --cookies-from-browser vivaldi";
break;
case Settings.CookieMode.BrowserWhale:
parameter += " --cookies-from-browser whale";
break;
}
}
catch(Exception e)
{
MelonLoader.MelonLogger.Warning(e);
}
}
}
}