1、视频下载失败-403,重新切换其他下载地址尝试下载

2、支持动态视频下载(抖音里面属于图文-但是又不是图文)--实际是多个视频组合的这种。(没有将视频做合并的计划)
This commit is contained in:
jianzhichu
2025-12-07 23:09:02 +08:00
parent 123124bb51
commit 41e2bf6ce0
11 changed files with 374 additions and 47 deletions
+78
View File
@@ -0,0 +1,78 @@
namespace dy.net.utils
{
public class DouyinFileUtils
{
/// <summary>
/// 将字节数转换为GB(采用二进制换算:1GB = 1024^3 Byte
/// </summary>
/// <param name="bytes">字节数(需使用long类型避免大数值溢出)</param>
/// <param name="decimalPlaces">保留的小数位数</param>
/// <returns>转换后的GB值</returns>
public static string ConvertBytesToGb(long bytes, int decimalPlaces = 2)
{
// 1GB = 1024 * 1024 * 1024 = 1073741824 Byte
double gb = (double)bytes / 1073741824;
// 四舍五入保留指定小数位数
return Math.Round(gb, decimalPlaces).ToString("F2");
}
/// <summary>
/// 获取宿主机所有本地固定磁盘的总空间(GB)
/// </summary>
/// <returns>总空间字符串(如 "1408.35 GB"),失败时返回错误信息</returns>
public static string GetHostTotalDiskSpaceGB()
{
try
{
// 1. 获取所有驱动器
DriveInfo[] allDrives = DriveInfo.GetDrives();
// 2. 筛选:仅保留“就绪的本地固定磁盘”(DriveType.Fixed
var fixedDrives = allDrives.Where(drive =>
drive.IsReady &&
drive.DriveType == DriveType.Fixed
).ToList();
if (!fixedDrives.Any())
{
return "未找到可用的本地固定磁盘";
}
// 3. 累加所有固定磁盘的总空间(字节)
long totalBytes = fixedDrives.Sum(drive => drive.TotalSize);
// 4. 转换为GB并保留2位小数
return ConvertBytesToGb(totalBytes);
}
catch (UnauthorizedAccessException)
{
return "权限不足,无法访问部分磁盘";
}
catch (Exception ex)
{
return $"获取宿主机总磁盘空间失败:{ex.Message}";
}
}
/// <summary>
/// 极简版:计算多个文件的总大小(字节)
/// </summary>
/// <param name="filePaths">文件路径列表</param>
/// <returns>总字节数</returns>
public static long GetTotalFileSize(List<string> filePaths)
{
long totalSize = 0;
foreach (var path in filePaths)
{
// 仅判断文件是否存在,存在则累加大小
if (File.Exists(path))
{
totalSize += new FileInfo(path).Length;
}
}
return totalSize;
}
}
}