Загрузка магнитной ссылки с помощью Powershell 3

Я новичок в PowerShell и пытаюсь создать короткий скрипт, который найдет магнитные ссылки на странице и загрузит их.

У меня нет особого понимания того, как работают магнитные URI, и я не могу заставить свой скрипт загружать файлы через них.

Я использую следующий фрагмент кода:

$webclient = New-Object System.Net.WebClient
$url = "magnet:?xt=urn:btih:44bb5e0325b7dad0bdc5abce459b85b014766ec0&dn=MY_TORRENT&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp"

$file = "C:\Some\Path\myfile.torrent"
$webclient.DownloadFile($url, $file)

Что приводит к следующему исключению

    System.Management.Automation.MethodInvocationException: Exception calling "DownloadFile" with "2" argument(s): "An exception occurred during a WebClient request." ---> System.Net.We
bException: An exception occurred during a WebClient request. ---> System.NotSupportedException: The URI prefix is not recognized.
   at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
   at System.Net.WebClient.GetWebRequest(Uri address)
   at System.Net.WebClient.DownloadFile(Uri address, String fileName)
   --- End of inner exception stack trace ---
   at System.Net.WebClient.DownloadFile(Uri address, String fileName)
   at CallSite.Target(Closure , CallSite , Object , Object , Object )
   --- End of inner exception stack trace ---
   at System.Management.Automation.ExceptionHandlingOps.ConvertToMethodInvocationException(Exception exception, Type typeToThrow, String methodName, Int32 numArgs, MemberInfo member
Info)
   at CallSite.Target(Closure , CallSite , Object , Object , Object )
   at System.Management.Automation.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)

Есть ли другой способ загрузки в PowerShell или это невозможно с магнитной ссылкой.

Моя конечная цель — начать качать торрент по магнитной ссылке, поэтому, возможно, можно просто открыть торрент-клиент по ссылке, но я не уверен, как бы я это сделал.


person Alex    schedule 14.10.2013    source источник


Ответы (3)


Если у вас установлен торрент-клиент, такой как µTorrent, и он настроен на обработку магнитных ссылок, вы можете просто открыть ссылку из Powershell:

start "magnet:?xt=urn:btih:44bb5e0325b7dad0bdc5abce459b85b014766ec0&dn=MY_TORRENT&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp"

Это должно открыть торрент-клиент.

Вы также можете использовать торрент-клиент командной строки aria2 и скачать:

aria2c "magnet:?xt=urn:btih:44bb5e0325b7dad0bdc5abce459b85b014766ec0&dn=MY_TORRENT&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp"
person manojlds    schedule 15.10.2013

Магнитные ссылки использовать протокол magnet, изначально не поддерживаемый Windows и не поддерживаемый DownloadFile().

Если вы устанавливаете клиент, который поддерживает протокол magnet, он установит ссылку обработчик протокола для схемы magnet URI.

Это должно позволить вам использовать Start-Process, передавая только магнитный URL-адрес в качестве аргумента, чтобы вызвать этого клиента и заставить его выполнять любую обработку, которую он обычно выполняет с этим URL-адресом.

person Eric J.    schedule 14.10.2013

У меня есть проект github (FirefoxMagnetMimeHandler), в котором показано, как отправить магнитную ссылку на локальный или удаленный сервер передачи. через передачу JSON RPC API с помощью powershell. По сути, это сводится к отправке небольших фрагментов JSON на сервер передачи. Трудная часть - получить правильный идентификатор сеанса.

Вот ссылка на соответствующий скрипт: magnet_add.ps1 . Другие скрипты имеют дело только с настройкой обработчиков mime firefox.

person jmik    schedule 31.03.2019