使用 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>
您需要提取此<hash>
并将其传递给构造函数:
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 脚本快?