使用 c# 将 Torrent Magnet 链接转换为 .torrent 文件

Posted

技术标签:

【中文标题】使用 c# 将 Torrent Magnet 链接转换为 .torrent 文件【英文标题】:Convert Torrent Magnet link to a .torrent file with c# 【发布时间】:2015-12-21 20:56:14 【问题描述】:

有办法吗?我已经尝试过使用 monotorrent,但由于缺乏最新的文档,我无法让它工作。我已经用 monotorrent 尝试过 this,但我仍然找不到获取 .torrent 文件的方法,甚至无法开始下载以获取 .torrent ...

以下代码以that question 为基础,但它不会将任何内容保存到“D:\A”或“D:\TorrentSave”

    private void GerarTorrent(string magnet)
    
        MonoTorrent.Client.TorrentManager b = new MonoTorrent.Client.TorrentManager(new MonoTorrent.MagnetLink(magnet), "D:\\A", new MonoTorrent.Client.TorrentSettings(), "D:\\TorrentSave");
        MonoTorrent.Client.EngineSettings engineSettings = new MonoTorrent.Client.EngineSettings();
        MonoTorrent.Client.ClientEngine clientEngine = new MonoTorrent.Client.ClientEngine(engineSettings);
        clientEngine.Register(b);
        clientEngine.StartAll();
        b.Start();
    

要生成 .torrent,它不必是 monotorrent,实际上这个 api 的唯一用途就是从磁力链接生成 .torrent 文件...

编辑:用我尝试做 Fᴀʀʜᴀɴ Aɴᴀᴍ 所说的更新代码:

    private void GerarTorrent(string hash)
    
        MonoTorrent.Client.TorrentManager b = new MonoTorrent.Client.TorrentManager(MonoTorrent.InfoHash.FromHex(hash), "D:\\A", new MonoTorrent.Client.TorrentSettings(), "D:\\TorrentSave", new List<List<string>>());
        MonoTorrent.Client.EngineSettings engineSettings = new MonoTorrent.Client.EngineSettings();
        MonoTorrent.Client.ClientEngine clientEngine = new MonoTorrent.Client.ClientEngine(engineSettings);
        clientEngine.Register(b);
        clientEngine.StartAll();
        b.Start();
    

使用的哈希 = "5FC86BA08451CF4221E0091F31AF1A52C2219009"

【问题讨论】:

【参考方案1】:

您只需将哈希值而不是整个磁力​​链接传递给TorrentManager 构造函数。

磁力链接如下所示:

magnet:?xt=urn:btih:18981bc9759950b4715ad46adcaf514e6a773cfe

所以,更通用的形式:

magnet:?xt=urn:btih:<hash>

您需要提取此&lt;hash&gt; 并将其传递给构造函数:

manager = new TorrentManager(InfoHash.FromHex(hash), downloadsPath, torrentDefaults, downloadsPathForTorrent, new List<List<string>>());

【讨论】:

那个构造函数不存在......更接近这个的是最后一个附加的 List>() ,但它仍然什么都不做...我已经用我试图做的事情更新了代码 那个构造函数对我来说不存在......它只有 4 个,它们是: public TorrentManager(Torrent torrent, string savePath, TorrentSettings settings);公共 TorrentManager(MagnetLink 磁链,字符串 savePath,TorrentSettings 设置,字符串 torrentSave); public TorrentManager(Torrent torrent, string savePath, TorrentSettings settings, string baseDirectory); public TorrentManager(InfoHash infoHash, string savePath, TorrentSettings settings, string torrentSave, List> 宣布); @GabrielDuarte 我在关闭括号之前关闭了括号。现在看到它。以及它所说的任何列表/集合,只需将其初始化并将其传递给构造函数。 @GabrielDuarte 好的,现在请查看最新的编辑。它应该工作:/ 但我已经在第一次尝试中尝试了完全相同的构造函数,我已经对问题进行了编辑,但它没有工作......我做得对吗?我必须开始任何事情还是像您在回答中那样创建对象?

以上是关于使用 c# 将 Torrent Magnet 链接转换为 .torrent 文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥 utorrents Magnet to Torrent 文件的获取比我的 python 脚本快?

Libtorrent torrent->磁铁

torrent hash怎么用

需要帮助使用带有外部链接处理(如“磁铁”)的 webView 制作网站

使用 monotorrent c# 创建 torrent

torrent hash怎么用