首页 > 解决方案 > 将 Jackett api 直接 URL 转换为磁铁 URL

问题描述

我正在开发一个使用 Jackett 索引器和 torznab API 下载种子的 Perl 程序。对于直接在 XML 中提供磁力链接的索引器,这非常简单,但其他人提供了一个链接(经过一些研究,这似乎是一个“确切来源”磁力链接)

目标:将此直接链接转换为“磁铁:?” 用于 qbittorrent 的 URL 或 .torrent 文件

这是我到目前为止所尝试的:

WWW::Mechanize(在 xs 磁铁 URL 上调用“get”)

Error GETing magnet:?<rest of magnet link>: Protocol scheme 'magnet' is not supported

wget

HTTP request sent, awaiting response... 302 Found
Location: magnet:?<rest of magnet link>: Unsupported scheme ‘magnet’.

curlcurl -o

没有返回值/空白文件

我觉得有一个简单的解决方案,到目前为止我还没有成功,当然我可以过滤来自 mech 或 wget 的错误消息并以这种方式提取 URL,但这似乎不是正确的方法这个。

提前致谢!

更新: 这似乎是 Jackett(或者更确切地说是正在访问的索引器)的限制,因为无法通过 api 提供直接链接。

解决方案是从 URL 标头中获取重定向链接

curl '$URL' -si | grep -oP 'Location: \K.*'

在这种情况下将返回磁铁链接

标签: perlbittorrent

解决方案


这不是协议的真正工作方式。而且,这并不简单。

磁铁方案解决的是内容(因此,这就是您将看到的散列)而不是单个位置。您必须将该哈希值提供给某物,以便它返回您可以抓取内容块的位置(多个)。像Mojo::Transmission这样的东西可能会有所帮助。在 MetaCPAN 中搜索 BitTorrent 有很多成功率。

有许多命令行程序可以做你想做的事。


推荐阅读