C#基于BencodeNET实现批量torrent种子文件大小统计

最近有个案子需要对大量的种子文件进行下载,但是硬盘容量有限,需要提前对种子文件的大小进行统计,没有找到好用的工具,所以用BencodeNET做一个简单的实现。

0X00.引用

using BencodeNET.Parsing;

0X01.声明Torrent类

internal class Torrent
{
    public string displayName { get; set; } 
    public string torrentPath { get; set; } 
    public string totalSize { get; set; } 
    public bool isChecked { get; set; } 
}

0X02.功能实现

private void ReadToDataSet(IReadOnlyListfiles)
{
    foreach(var file in files) {
        Torrent t = new Torrent(); 
        try {
            var info = new BencodeParser().Parse(file.Path);
            t.displayName = info.DisplayName;
            t.torrentPath = file.Path;
            t.totalSize = FormatSize(Convert.ToInt64(info.TotalSize)); 
            t.isChecked = true;
            torrents.Add(t);
            totalFileSize += Convert.ToInt64(info.TotalSize);
        } catch (Exception ex) {
            t.torrentPath = file.Path;
            t.isChecked = false;
            torrents.Add(t);
        }
    }
}

0X03.FormatSize方法

static string FormatSize(long bytes)
        {
            string[] sizes = { "B", "KB", "MB", "GB", "TB" };
            int order = 0;
            double size = bytes;
            while (size >= 1024 && order < sizes.Length - 1)
            {
                order++;
                size /= 1024;
            }
            return $"{size:0.##} {sizes[order]}";
        }
C#基于BencodeNET实现批量torrent种子文件大小统计
https://blog.async.website/index.php/archives/3378/
本文作者 snowysong@live.com
发布时间 2025-04-22
许可协议 CC BY-NC-SA 4.0
发表新评论