Compare commits

..

No commits in common. "5e1a810ca51a676f38a799d8fc22b61fd0711305" and "53608087a1f67889009b1b1ce71b72439c14fb49" have entirely different histories.

20 changed files with 61 additions and 78 deletions

2
.gitignore vendored
View File

@ -1,7 +1,6 @@
/.idea/
/AIDocumentation/
/Lampac/
/lampac/
/BanderaBackend/
/Kinovezha/
/.clinerules/moduls.md
@ -9,4 +8,3 @@
/.clinerules/
/.qodo/
.DS_Store
AGENTS.md

View File

@ -32,9 +32,6 @@ namespace AnimeON
if (!ApnHelper.IsAshdiUrl(url))
return url;
if (!string.IsNullOrWhiteSpace(_init.webcorshost))
return url;
return ApnHelper.WrapUrl(_init, url);
}
@ -56,7 +53,7 @@ namespace AnimeON
string searchUrl = $"{_init.host}/api/anime/search?text={System.Web.HttpUtility.UrlEncode(query)}";
_onLog($"AnimeON: using proxy {_proxyManager.CurrentProxyIp} for {searchUrl}");
string searchJson = await Http.Get(_init.cors(searchUrl), headers: headers, proxy: _proxyManager.Get());
string searchJson = await Http.Get(searchUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(searchJson))
return null;
@ -119,7 +116,7 @@ namespace AnimeON
string fundubsUrl = $"{_init.host}/api/player/{animeId}/translations";
_onLog($"AnimeON: using proxy {_proxyManager.CurrentProxyIp} for {fundubsUrl}");
string fundubsJson = await Http.Get(_init.cors(fundubsUrl), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
string fundubsJson = await Http.Get(fundubsUrl, headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(fundubsJson))
return null;
@ -145,7 +142,7 @@ namespace AnimeON
string episodesUrl = $"{_init.host}/api/player/{animeId}/episodes?take=100&skip=-1&playerId={playerId}&translationId={fundubId}";
_onLog($"AnimeON: using proxy {_proxyManager.CurrentProxyIp} for {episodesUrl}");
string episodesJson = await Http.Get(_init.cors(episodesUrl), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
string episodesJson = await Http.Get(episodesUrl, headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(episodesJson))
return null;
@ -164,7 +161,7 @@ namespace AnimeON
};
_onLog($"AnimeON: using proxy {_proxyManager.CurrentProxyIp} for {requestUrl}");
string html = await Http.Get(_init.cors(requestUrl), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(requestUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html))
return null;
@ -194,7 +191,7 @@ namespace AnimeON
string requestUrl = AshdiRequestUrl(url);
_onLog($"AnimeON: using proxy {_proxyManager.CurrentProxyIp} for {requestUrl}");
string html = await Http.Get(_init.cors(requestUrl), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(requestUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html))
return null;
@ -219,7 +216,7 @@ namespace AnimeON
string url = $"{_init.host}/api/player/{episodeId}/episode";
_onLog($"AnimeON: using proxy {_proxyManager.CurrentProxyIp} for {url}");
string json = await Http.Get(_init.cors(url), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
string json = await Http.Get(url, headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(json))
return null;

View File

@ -248,7 +248,7 @@ namespace AnimeON.Controllers
{
string fundubsUrl = $"{init.host}/api/player/{animeId}/translations";
string fundubsJson = await Http.Get(init.cors(fundubsUrl), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", init.host) });
string fundubsJson = await Http.Get(fundubsUrl, headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", init.host) });
if (string.IsNullOrEmpty(fundubsJson))
return null;
@ -273,7 +273,7 @@ namespace AnimeON.Controllers
{
string episodesUrl = $"{init.host}/api/player/{animeId}/episodes?take=100&skip=-1&playerId={playerId}&translationId={fundubId}";
string episodesJson = await Http.Get(init.cors(episodesUrl), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", init.host) });
string episodesJson = await Http.Get(episodesUrl, headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", init.host) });
if (string.IsNullOrEmpty(episodesJson))
return null;
@ -297,7 +297,7 @@ namespace AnimeON.Controllers
string searchUrl = $"{init.host}/api/anime/search?text={HttpUtility.UrlEncode(query)}";
string searchJson = await Http.Get(init.cors(searchUrl), headers: headers);
string searchJson = await Http.Get(searchUrl, headers: headers);
if (string.IsNullOrEmpty(searchJson))
return null;

View File

@ -25,7 +25,7 @@ namespace AnimeON
{
public class ModInit
{
public static double Version => 3.5;
public static double Version => 3.4;
public static OnlinesSettings AnimeON;
public static bool ApnHostProvided;
@ -159,7 +159,7 @@ namespace AnimeON
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -50,7 +50,7 @@ namespace Bamboo
};
_onLog?.Invoke($"Bamboo search: {searchUrl}");
string html = await Http.Get(_init.cors(searchUrl), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(searchUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html))
return null;
@ -109,7 +109,7 @@ namespace Bamboo
};
_onLog?.Invoke($"Bamboo series page: {href}");
string html = await Http.Get(_init.cors(href), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(href, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html))
return null;
@ -183,7 +183,7 @@ namespace Bamboo
};
_onLog?.Invoke($"Bamboo movie page: {href}");
string html = await Http.Get(_init.cors(href), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(href, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html))
return null;

View File

@ -24,7 +24,7 @@ namespace Bamboo
{
public class ModInit
{
public static double Version => 3.6;
public static double Version => 3.5;
public static OnlinesSettings Bamboo;
public static bool ApnHostProvided;
@ -158,7 +158,7 @@ namespace Bamboo
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -46,7 +46,7 @@ namespace Makhno
new HeadersModel("User-Agent", Http.UserAgent)
};
string response = await Http.Get(_init.cors(url), timeoutSeconds: 4, headers: headers, proxy: _proxyManager.Get());
string response = await Http.Get(url, timeoutSeconds: 4, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrWhiteSpace(response))
return null;
@ -98,7 +98,7 @@ namespace Makhno
new HeadersModel("User-Agent", Http.UserAgent)
};
var response = await Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get());
var response = await Http.Get(url, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(response))
return null;
@ -127,7 +127,7 @@ namespace Makhno
{
new HeadersModel("User-Agent", Http.UserAgent)
};
var response = await Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get());
var response = await Http.Get(url, headers: headers, proxy: _proxyManager.Get());
return response;
}
@ -212,12 +212,12 @@ namespace Makhno
headers.Add(new HeadersModel("Referer", "https://ashdi.vip/"));
}
if (ApnHelper.IsAshdiUrl(playerUrl) && ApnHelper.IsEnabled(_init) && string.IsNullOrWhiteSpace(_init.webcorshost))
if (ApnHelper.IsAshdiUrl(playerUrl) && ApnHelper.IsEnabled(_init))
requestUrl = ApnHelper.WrapUrl(_init, playerUrl);
_onLog($"Makhno getting player data from: {requestUrl}");
var response = await Http.Get(_init.cors(requestUrl), headers: headers, proxy: _proxyManager.Get());
var response = await Http.Get(requestUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(response))
return null;
@ -725,7 +725,7 @@ namespace Makhno
};
string json = JsonConvert.SerializeObject(payload, Formatting.None);
await Http.Post(_init.cors(WormholeHost), json, timeoutSeconds: 6, headers: headers, proxy: _proxyManager.Get());
await Http.Post(WormholeHost, json, timeoutSeconds: 6, headers: headers, proxy: _proxyManager.Get());
return true;
}
catch (Exception ex)

View File

@ -23,7 +23,7 @@ namespace Makhno
{
public class ModInit
{
public static double Version => 1.8;
public static double Version => 1.7;
public static OnlinesSettings Makhno;
public static bool ApnHostProvided;
@ -159,7 +159,7 @@ namespace Makhno
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -44,7 +44,7 @@ namespace Mikai
var headers = DefaultHeaders();
_onLog($"Mikai: using proxy {_proxyManager.CurrentProxyIp} for {searchUrl}");
string json = await Http.Get(_init.cors(searchUrl), headers: headers, proxy: _proxyManager.Get());
string json = await Http.Get(searchUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(json))
return null;
@ -88,7 +88,7 @@ namespace Mikai
var headers = DefaultHeaders();
_onLog($"Mikai: using proxy {_proxyManager.CurrentProxyIp} for {url}");
string json = await Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get());
string json = await Http.Get(url, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(json))
return null;
@ -139,7 +139,7 @@ namespace Mikai
};
_onLog($"Mikai: using proxy {_proxyManager.CurrentProxyIp} for {requestUrl}");
string html = await Http.Get(_init.cors(requestUrl), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(requestUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html))
return null;
@ -160,9 +160,6 @@ namespace Mikai
if (!ApnHelper.IsAshdiUrl(url))
return url;
if (!string.IsNullOrWhiteSpace(_init.webcorshost))
return url;
return ApnHelper.WrapUrl(_init, url);
}
@ -178,7 +175,7 @@ namespace Mikai
string requestUrl = AshdiRequestUrl(url);
_onLog($"Mikai: using proxy {_proxyManager.CurrentProxyIp} for {requestUrl}");
string html = await Http.Get(_init.cors(requestUrl), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(requestUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html))
return null;

View File

@ -24,7 +24,7 @@ namespace Mikai
{
public class ModInit
{
public static double Version => 3.6;
public static double Version => 3.5;
public static OnlinesSettings Mikai;
public static bool ApnHostProvided;
@ -160,7 +160,7 @@ namespace Mikai
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -60,7 +60,6 @@ modules - optional, if not specified, all modules from the repository will be in
"enable": true,
"domain": "https://uaflix.net",
"displayname": "Uaflix",
"webcorshost": null,
"streamproxy": false,
"useproxy": false,
"proxy": {
@ -77,11 +76,6 @@ modules - optional, if not specified, all modules from the repository will be in
}
```
Parameter compatibility:
- `webcorshost` + `useproxy`: work together (parsing via CORS host, and network output can go through a proxy with `useproxy`).
- `webcorshost` does not conflict with `streamproxy`: CORS is used for parsing, `streamproxy` is used for streaming.
- `webcorshost` does not conflict with `apn`: APN is used at the streaming stage, not for regular parsing.
## APN support
Sources with APN support:

View File

@ -24,7 +24,7 @@ namespace StarLight
{
public class ModInit
{
public static double Version => 3.3;
public static double Version => 3.2;
public static OnlinesSettings StarLight;
public static bool ApnHostProvided;
@ -158,7 +158,7 @@ namespace StarLight
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -54,7 +54,7 @@ namespace StarLight
try
{
_onLog?.Invoke($"StarLight search: {url}");
string payload = await Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get());
string payload = await Http.Get(url, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(payload))
return null;
@ -112,7 +112,7 @@ namespace StarLight
try
{
_onLog?.Invoke($"StarLight project: {href}");
string payload = await Http.Get(_init.cors(href), headers: headers, proxy: _proxyManager.Get());
string payload = await Http.Get(href, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(payload))
return null;
@ -193,7 +193,7 @@ namespace StarLight
try
{
_onLog?.Invoke($"StarLight season: {seasonUrl}");
string payload = await Http.Get(_init.cors(seasonUrl), headers: headers, proxy: _proxyManager.Get());
string payload = await Http.Get(seasonUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(payload))
continue;
@ -279,7 +279,7 @@ namespace StarLight
try
{
_onLog?.Invoke($"StarLight stream: {url}");
string payload = await Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get());
string payload = await Http.Get(url, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(payload))
return null;

View File

@ -24,7 +24,7 @@ namespace UaTUT
{
public class ModInit
{
public static double Version => 3.6;
public static double Version => 3.5;
public static OnlinesSettings UaTUT;
public static bool ApnHostProvided;
@ -159,7 +159,7 @@ namespace UaTUT
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -65,7 +65,7 @@ namespace UaTUT
_onLog($"UaTUT searching: {url}");
var headers = new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") };
var response = await Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get());
var response = await Http.Get(url, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(response))
return null;
@ -91,7 +91,7 @@ namespace UaTUT
_onLog($"UaTUT getting movie page: {url}");
var headers = new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") };
var response = await Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get());
var response = await Http.Get(url, headers: headers, proxy: _proxyManager.Get());
return response;
}
@ -130,13 +130,13 @@ namespace UaTUT
try
{
string requestUrl = playerUrl;
if (ApnHelper.IsAshdiUrl(playerUrl) && ApnHelper.IsEnabled(_init) && string.IsNullOrWhiteSpace(_init.webcorshost))
if (ApnHelper.IsAshdiUrl(playerUrl) && ApnHelper.IsEnabled(_init))
requestUrl = ApnHelper.WrapUrl(_init, playerUrl);
_onLog($"UaTUT getting player data from: {requestUrl}");
var headers = new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") };
var response = await Http.Get(_init.cors(requestUrl), headers: headers, proxy: _proxyManager.Get());
var response = await Http.Get(requestUrl, headers: headers, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(response))
return null;

View File

@ -56,7 +56,7 @@ namespace Uaflix.Controllers
string searchUrl = $"{init.host}/index.php?do=search&subaction=search&story={System.Web.HttpUtility.UrlEncode(filmTitle)}";
var headers = new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", init.host) };
var searchHtml = await Http.Get(init.cors(searchUrl), headers: headers, proxy: proxyManager.Get(), timeoutSeconds: 10);
var searchHtml = await Http.Get(searchUrl, headers: headers, proxy: proxyManager.Get(), timeoutSeconds: 10);
// Швидка перевірка наявності результатів без повного парсингу
if (!string.IsNullOrEmpty(searchHtml) &&

View File

@ -25,7 +25,7 @@ namespace Uaflix
{
public class ModInit
{
public static double Version => 3.6;
public static double Version => 3.5;
public static OnlinesSettings UaFlix;
public static bool ApnHostProvided;
@ -164,7 +164,7 @@ namespace Uaflix
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -38,9 +38,6 @@ namespace Uaflix
if (!ApnHelper.IsAshdiUrl(url))
return url;
if (!string.IsNullOrWhiteSpace(_init.webcorshost))
return url;
return ApnHelper.WrapUrl(_init, url);
}
@ -102,7 +99,7 @@ namespace Uaflix
}
}
string html = await Http.Get(_init.cors(AshdiRequestUrl(requestUrl)), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(AshdiRequestUrl(requestUrl), headers: headers, proxy: _proxyManager.Get());
// Знайти JSON у new Playerjs({file:'...'})
var match = Regex.Match(html, @"file:'(\[.+?\])'", RegexOptions.Singleline);
@ -213,7 +210,7 @@ namespace Uaflix
try
{
string html = await Http.Get(_init.cors(iframeUrl), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(iframeUrl, headers: headers, proxy: _proxyManager.Get());
// Знайти file:"url"
var match = Regex.Match(html, @"file:\s*""([^""]+\.m3u8)""");
@ -247,7 +244,7 @@ namespace Uaflix
try
{
string html = await Http.Get(_init.cors(iframeUrl), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(iframeUrl, headers: headers, proxy: _proxyManager.Get());
// Шукаємо Playerjs конфігурацію з file параметром
var match = Regex.Match(html, @"file:\s*'?([^'""\s,}]+\.m3u8)'?");
@ -353,7 +350,7 @@ namespace Uaflix
new HeadersModel("Referer", _init.host)
};
string html = await Http.Get(_init.cors(firstEpisode.url), headers: headers, proxy: _proxyManager.Get());
string html = await Http.Get(firstEpisode.url, headers: headers, proxy: _proxyManager.Get());
var doc = new HtmlDocument();
doc.LoadHtml(html);
@ -569,7 +566,7 @@ namespace Uaflix
string searchUrl = $"{_init.host}/index.php?do=search&subaction=search&story={System.Web.HttpUtility.UrlEncode(filmTitle)}";
var headers = new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) };
var searchHtml = await Http.Get(_init.cors(searchUrl), headers: headers, proxy: _proxyManager.Get());
var searchHtml = await Http.Get(searchUrl, headers: headers, proxy: _proxyManager.Get());
var doc = new HtmlDocument();
doc.LoadHtml(searchHtml);
@ -661,7 +658,7 @@ namespace Uaflix
try
{
var headers = new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) };
var filmHtml = await Http.Get(_init.cors(filmUrl), headers: headers, proxy: _proxyManager.Get());
var filmHtml = await Http.Get(filmUrl, headers: headers, proxy: _proxyManager.Get());
var doc = new HtmlDocument();
doc.LoadHtml(filmHtml);
@ -736,7 +733,7 @@ namespace Uaflix
try
{
var headers = new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) };
var filmHtml = await Http.Get(_init.cors(filmUrl), headers: headers, proxy: _proxyManager.Get());
var filmHtml = await Http.Get(filmUrl, headers: headers, proxy: _proxyManager.Get());
var filmDoc = new HtmlDocument();
filmDoc.LoadHtml(filmHtml);
@ -774,7 +771,7 @@ namespace Uaflix
if (safeSeasonUrls.Count == 0)
return null;
var seasonTasks = safeSeasonUrls.Select(url => Http.Get(_init.cors(url), headers: headers, proxy: _proxyManager.Get()));
var seasonTasks = safeSeasonUrls.Select(url => Http.Get(url, headers: headers, proxy: _proxyManager.Get()));
var seasonPagesHtml = await Task.WhenAll(seasonTasks);
foreach (var html in seasonPagesHtml)
@ -835,7 +832,7 @@ namespace Uaflix
var result = new Uaflix.Models.PlayResult() { streams = new List<(string, string)>() };
try
{
string html = await Http.Get(_init.cors(url), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
string html = await Http.Get(url, headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", _init.host) }, proxy: _proxyManager.Get());
var doc = new HtmlDocument();
doc.LoadHtml(html);
@ -941,7 +938,7 @@ namespace Uaflix
async Task<List<(string link, string quality)>> ParseAllZetvideoSources(string iframeUrl)
{
var result = new List<(string link, string quality)>();
var html = await Http.Get(_init.cors(iframeUrl), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", "https://zetvideo.net/") }, proxy: _proxyManager.Get());
var html = await Http.Get(iframeUrl, headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", "https://zetvideo.net/") }, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html)) return result;
var doc = new HtmlDocument();
@ -972,7 +969,7 @@ namespace Uaflix
async Task<List<(string link, string quality)>> ParseAllAshdiSources(string iframeUrl)
{
var result = new List<(string link, string quality)>();
var html = await Http.Get(_init.cors(AshdiRequestUrl(iframeUrl)), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", "https://ashdi.vip/") }, proxy: _proxyManager.Get());
var html = await Http.Get(AshdiRequestUrl(iframeUrl), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", "https://ashdi.vip/") }, proxy: _proxyManager.Get());
if (string.IsNullOrEmpty(html)) return result;
var doc = new HtmlDocument();
@ -992,7 +989,7 @@ namespace Uaflix
async Task<SubtitleTpl?> GetAshdiSubtitles(string id)
{
string url = $"https://ashdi.vip/vod/{id}";
var html = await Http.Get(_init.cors(AshdiRequestUrl(url)), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", "https://ashdi.vip/") }, proxy: _proxyManager.Get());
var html = await Http.Get(AshdiRequestUrl(url), headers: new List<HeadersModel>() { new HeadersModel("User-Agent", "Mozilla/5.0"), new HeadersModel("Referer", "https://ashdi.vip/") }, proxy: _proxyManager.Get());
string subtitle = new Regex("subtitle(\")?:\"([^\"]+)\"").Match(html).Groups[2].Value;
if (!string.IsNullOrEmpty(subtitle))
{

View File

@ -30,7 +30,7 @@ namespace Unimay
{
public class ModInit
{
public static double Version => 3.4;
public static double Version => 3.3;
public static OnlinesSettings Unimay;
@ -147,7 +147,7 @@ namespace Unimay
else
{
_disconnectTime = Connect?.IsNoiseEnabled == true
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 4))
? DateTime.UtcNow.AddHours(Random.Shared.Next(1, 16))
: DateTime.UtcNow;
}
}

View File

@ -39,7 +39,7 @@ namespace Unimay
string searchUrl = $"{_init.host}/release/search?page=0&page_size=10&title={searchQuery}";
var headers = httpHeaders(_init);
SearchResponse root = await Http.Get<SearchResponse>(_init.cors(searchUrl), timeoutSeconds: 8, proxy: _proxyManager.Get(), headers: headers);
SearchResponse root = await Http.Get<SearchResponse>(searchUrl, timeoutSeconds: 8, proxy: _proxyManager.Get(), headers: headers);
if (root == null || root.Content == null || root.Content.Count == 0)
{
@ -69,7 +69,7 @@ namespace Unimay
string releaseUrl = $"{_init.host}/release?code={code}";
var headers = httpHeaders(_init);
ReleaseResponse root = await Http.Get<ReleaseResponse>(_init.cors(releaseUrl), timeoutSeconds: 8, proxy: _proxyManager.Get(), headers: headers);
ReleaseResponse root = await Http.Get<ReleaseResponse>(releaseUrl, timeoutSeconds: 8, proxy: _proxyManager.Get(), headers: headers);
if (root == null)
{