实现123盘主备域名下载
This commit is contained in:
196
Form1.cs
196
Form1.cs
@@ -43,8 +43,10 @@ namespace CheckDownload
|
||||
private const string OneDriveAuthKey = "6SwdpWdSJuJRSh";
|
||||
// 123盘UID
|
||||
private const string OneDriveUid = "1826795402";
|
||||
// 123盘链接地址
|
||||
private const string OneDriveLink = "http://123.54sxh.cn/1826795402/KeyAuth";
|
||||
// 123盘主域名链接地址
|
||||
private const string OneDriveLink = "http://vip.123pan.cn/1826795402/KeyAuth";
|
||||
// 123盘备用域名链接地址
|
||||
private const string OneDriveBackupLink = "http://vip.123yx.com/1826795402/KeyAuth";
|
||||
// 123盘鉴权有效时间(秒)
|
||||
private const int OneDriveAuthTimeout = 600; // 10分钟
|
||||
|
||||
@@ -468,7 +470,98 @@ namespace CheckDownload
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从123盘下载单个文件
|
||||
/// 从123盘下载在线MD5文件(主域名+备用域名)
|
||||
/// </summary>
|
||||
/// <param name="baseUrl">123盘基础链接地址</param>
|
||||
/// <param name="fileName">要下载的文件名</param>
|
||||
/// <param name="localPath">本地保存路径</param>
|
||||
/// <returns>下载是否成功</returns>
|
||||
private async Task<bool> DownloadFromOneDrive(string baseUrl, string fileName, string localPath)
|
||||
{
|
||||
// 1. 首先尝试主域名
|
||||
try
|
||||
{
|
||||
UpdateStatus($"正在从123盘下载: {fileName}");
|
||||
|
||||
// 生成123盘鉴权URL(主域名)
|
||||
string authUrl = GenerateAuthUrl(OneDriveLink, fileName);
|
||||
|
||||
UpdateStatus($"使用主域名下载文件...");
|
||||
|
||||
// 创建HTTP请求
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, authUrl);
|
||||
request.Headers.Add("User-Agent", "CheckDownload/1.0");
|
||||
|
||||
// 发送请求并获取响应
|
||||
var response = await _httpClient.SendAsync(request);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
// 读取文件数据
|
||||
byte[] fileData = await response.Content.ReadAsByteArrayAsync();
|
||||
|
||||
// 确保本地目录存在
|
||||
string localDir = Path.GetDirectoryName(localPath);
|
||||
if (!Directory.Exists(localDir))
|
||||
{
|
||||
Directory.CreateDirectory(localDir);
|
||||
}
|
||||
|
||||
// 保存文件到本地
|
||||
File.WriteAllBytes(localPath, fileData);
|
||||
|
||||
UpdateStatus($"123盘主域名下载成功: {fileName}");
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateStatus($"123盘主域名下载失败,尝试备用域名: {fileName}");
|
||||
Debug.WriteLine($"123盘主域名下载异常: {ex}");
|
||||
}
|
||||
|
||||
// 2. 如果主域名失败,尝试备用域名
|
||||
try
|
||||
{
|
||||
UpdateStatus($"正在从123盘备用域名下载: {fileName}");
|
||||
|
||||
// 生成123盘鉴权URL(备用域名)
|
||||
string authUrl = GenerateAuthUrl(OneDriveBackupLink, fileName);
|
||||
|
||||
UpdateStatus($"使用备用域名下载文件...");
|
||||
|
||||
// 创建HTTP请求
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, authUrl);
|
||||
request.Headers.Add("User-Agent", "CheckDownload/1.0");
|
||||
|
||||
// 发送请求并获取响应
|
||||
var response = await _httpClient.SendAsync(request);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
// 读取文件数据
|
||||
byte[] fileData = await response.Content.ReadAsByteArrayAsync();
|
||||
|
||||
// 确保本地目录存在
|
||||
string localDir = Path.GetDirectoryName(localPath);
|
||||
if (!Directory.Exists(localDir))
|
||||
{
|
||||
Directory.CreateDirectory(localDir);
|
||||
}
|
||||
|
||||
// 保存文件到本地
|
||||
File.WriteAllBytes(localPath, fileData);
|
||||
|
||||
UpdateStatus($"123盘备用域名下载成功: {fileName}");
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateStatus($"123盘备用域名下载失败: {fileName} - {ex.Message}");
|
||||
Debug.WriteLine($"123盘备用域名下载异常: {ex}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从123盘下载单个文件(主域名+备用域名)
|
||||
/// </summary>
|
||||
/// <param name="filePath">文件相对路径</param>
|
||||
/// <param name="expectedMd5">期望的MD5值</param>
|
||||
@@ -476,12 +569,13 @@ namespace CheckDownload
|
||||
/// <returns>下载是否成功</returns>
|
||||
private async Task<bool> DownloadFileFromOneDrive(string filePath, string expectedMd5, string localPath)
|
||||
{
|
||||
// 在123盘中,文件是通过MD5值存储的,路径为 /File/{MD5值}
|
||||
string fileName = $"File/{expectedMd5}";
|
||||
|
||||
// 1. 首先尝试主域名
|
||||
try
|
||||
{
|
||||
// 在123盘中,文件是通过MD5值存储的,路径为 /File/{MD5值}
|
||||
string fileName = $"File/{expectedMd5}";
|
||||
|
||||
// 生成123盘鉴权URL
|
||||
// 生成123盘鉴权URL(主域名)
|
||||
string authUrl = GenerateAuthUrl(OneDriveLink, fileName);
|
||||
|
||||
// 创建HTTP请求
|
||||
@@ -509,7 +603,41 @@ namespace CheckDownload
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine($"123盘下载文件失败: {filePath} - {ex.Message}");
|
||||
Debug.WriteLine($"123盘主域名下载文件失败: {filePath} - {ex.Message}");
|
||||
}
|
||||
|
||||
// 2. 如果主域名失败,尝试备用域名
|
||||
try
|
||||
{
|
||||
// 生成123盘鉴权URL(备用域名)
|
||||
string authUrl = GenerateAuthUrl(OneDriveBackupLink, fileName);
|
||||
|
||||
// 创建HTTP请求
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, authUrl);
|
||||
request.Headers.Add("User-Agent", "CheckDownload/1.0");
|
||||
|
||||
// 发送请求并获取响应
|
||||
var response = await _httpClient.SendAsync(request);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
// 读取文件数据
|
||||
byte[] fileData = await response.Content.ReadAsByteArrayAsync();
|
||||
|
||||
// 确保本地目录存在
|
||||
string localDir = Path.GetDirectoryName(localPath);
|
||||
if (!Directory.Exists(localDir))
|
||||
{
|
||||
Directory.CreateDirectory(localDir);
|
||||
}
|
||||
|
||||
// 保存文件到本地
|
||||
File.WriteAllBytes(localPath, fileData);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine($"123盘备用域名下载文件失败: {filePath} - {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1107,7 +1235,7 @@ namespace CheckDownload
|
||||
{
|
||||
// 1. 首先尝试从123盘下载
|
||||
UpdateStatus("尝试从123盘下载MD5文件...");
|
||||
if (await DownloadFromOneDrive(OneDriveLink, fileName, localPath))
|
||||
if (await DownloadFromOneDrive(fileName, fileName, localPath))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -1123,55 +1251,5 @@ namespace CheckDownload
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从123盘下载在线MD5文件
|
||||
/// </summary>
|
||||
/// <param name="baseUrl">123盘基础链接地址</param>
|
||||
/// <param name="fileName">要下载的文件名</param>
|
||||
/// <param name="localPath">本地保存路径</param>
|
||||
/// <returns>下载是否成功</returns>
|
||||
private async Task<bool> DownloadFromOneDrive(string baseUrl, string fileName, string localPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
UpdateStatus($"正在从123盘下载: {fileName}");
|
||||
|
||||
// 生成123盘鉴权URL
|
||||
string authUrl = GenerateAuthUrl(baseUrl, fileName);
|
||||
|
||||
UpdateStatus($"使用鉴权URL下载文件...");
|
||||
|
||||
// 创建HTTP请求
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, authUrl);
|
||||
request.Headers.Add("User-Agent", "CheckDownload/1.0");
|
||||
|
||||
// 发送请求并获取响应
|
||||
var response = await _httpClient.SendAsync(request);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
// 读取文件数据
|
||||
byte[] fileData = await response.Content.ReadAsByteArrayAsync();
|
||||
|
||||
// 确保本地目录存在
|
||||
string localDir = Path.GetDirectoryName(localPath);
|
||||
if (!Directory.Exists(localDir))
|
||||
{
|
||||
Directory.CreateDirectory(localDir);
|
||||
}
|
||||
|
||||
// 保存文件到本地
|
||||
File.WriteAllBytes(localPath, fileData);
|
||||
|
||||
UpdateStatus($"123盘下载成功: {fileName}");
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateStatus($"123盘下载失败: {fileName} - {ex.Message}");
|
||||
Debug.WriteLine($"123盘下载异常: {ex}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user