Преобразование прямого URL-адреса Jackett api в URL-адрес ma gnet - PullRequest
1 голос
/ 27 марта 2020

Я работаю над программой Perl для загрузки торрентов с помощью индексаторов Jackett и API-интерфейсов torznab. Для индексаторов, которые предоставляют ссылку ma gnet непосредственно в XML, это очень просто, но другие предоставляют ссылку (которая после некоторого исследования выглядит как «точный источник» ma gnet)

Цель: преобразовать эту прямую ссылку в 'ma gnet :?' URL или .torrent файл для использования с qbittorrent

Вот что я пробовал до сих пор:

WWW :: Mechanize (вызывая get для xs ма gnet URL)

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’.

curl или curl -o

Не возвращено значение / пустой файл

Мне кажется, что есть простое решение этого вопроса, но пока я не добился успеха, уверен, что смогу отфильтровать сообщение об ошибке из mech или wget и вытащить URL-адрес таким образом, но это не похоже на правильный способ сделать это.

Заранее спасибо!

Обновление: Похоже, это ограничение Jackett (или, точнее, к индексаторам, к которым осуществляется доступ), поскольку прямая ссылка не может быть предоставлена ​​через API.

Решение этого состоит в том, чтобы взять ссылку перенаправления из заголовков URL

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

, которые в этот случай вернет ма gnet ссылку

1 Ответ

1 голос
/ 27 марта 2020

Не совсем так работает протокол. И это не просто.

Схема ma gnet обращается к контенту (то есть, это хэши, которые вы увидите) вместо одного местоположения. Вы должны отдать это ha sh чему-либо, чтобы оно возвращало местоположения (несколько), где вы можете получить куски содержимого. Может помочь что-то вроде Mojo :: Transmission . Поиск в MetaCPAN для BitTorrent имеет множество совпадений.

Существует много программ командной строки , которые могут делать то, что вы хотите.

...