wget и закодированный URL

У меня есть URL как это:

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar

Я хочу загрузить это использование URL wget. Если я передаю его непосредственно wget, все подходит. Но я нахожусь в ситуации, что у меня есть только закодированные версии URL загрузки. Если я передаю закодированную версию URL выше к wget, это бросает следующую ошибку:

$ wget "http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"
wget: unable to resolve host address `http://dl.minitoons.ir/longs/khumba (2013) [en] [br-rip 720p] - [www.minitoons.ir].rar'

Заметьте это wget измененный преобразование регистра URL (например, Khumba кому: khumba). Что я должен сделать для решения этой проблемы?

12
задан 3 March 2014 в 03:57

5 ответов

Поскольку это раздражающе настолько распространено, существуют различные доступные преобразователи - например, этот сайт . Можно использовать их для декодирования URL - таким образом, он преобразует это:

http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar

к:

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar

было бы хорошо иметь версию командной строки хотя...

РЕДАКТИРОВАНИЕ:

Найденный версией командной строки - в основном:

echo "http%3A%2F%2F-REST-OF-URL" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e

Это может быть реализовано в сценарии как это для декодирования URL:

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e
exit

, который, если сохранено и сделано исполняемый файл, работы вполне приятно.

также этот сценарий, который загрузит UL также:

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e | wget -c -i -
exit

N.B. я думаю случай, в котором находится URL, не важно для большинства сайтов - например, HTTP://WWW.UBUNTU.COM

19
ответ дан 16 November 2019 в 14:20

Необходимо использовать его как это

wget "http://dl.minitoons.ir/longs/Khumba%20(2013)%20[EN]%20[BR-Rip%20720p]%20-%20[www.minitoons.ir].rar"`

, Просто заменяют каждое пространство %20. Или Лучшая копия Ваша исходная ссылка и вставка это на Адресной строке браузера Хрома. Это автоматически отформатирует его для Вас. Теперь скопируйте его оттуда в Ваш терминал.

7
ответ дан 16 November 2019 в 14:20

Wget ожидает, что URL будет иметь следующий формат:

[protocol://]host/path

Протокол является дополнительным. В отсутствие протокола Wget принимает HTTP.

Wget принимает закодированные процентом URL очень хорошо, но разделители между протоколом, хостом и путем не могут быть закодированы процентом.

Это также, почему Wget изменил преобразование регистра URL. Так как это не нашло единственную незакодированную наклонную черту, это принимает это

http://dl.minitoons.ir/longs/khumba (2013) [en] [br-rip 720p] - [www.minitoons.ir].rar

имя хоста (который был бы нечувствителен к регистру). Фактическое имя хоста, конечно, dl.minitoons.ir.

Для автоматического решения, занимая место %3A%2F%2F и %2F после имени хоста :// и / был бы достаточен, но столь же легко декодировать URL в одном. @Wilf уже дал хорошее решение для этого.

Однако, если Вы собираетесь ввести команду Wget вручную, просто сделайте это:

wget "dl.minitoons.ir/longs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"
4
ответ дан 16 November 2019 в 14:20

Только необходимо поместить кавычки вокруг URL и сделанный:

wget "http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar"
Warning: wildcards not supported in HTTP.
--2014-03-02 20:40:20--  http://dl.minitoons.ir/longs/Khumba%20(2013)%20[EN]%20[BR-Rip%20720p]%20-%20[www.minitoons.ir].rar
Resolving dl.minitoons.ir (dl.minitoons.ir)... 79.127.127.41
Connecting to dl.minitoons.ir (dl.minitoons.ir)|79.127.127.41|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 594062365 (567M) [application/x-rar-compressed]
Saving to: ‘Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar’

 0% [                                       ] 73,288      44.9KB/s          

легче тот путь, и Вы не должны позориться с материалом.

1
ответ дан 16 November 2019 в 14:20

Я закончил тем, что писал сценарий Python для него.

from os import listdir, rename
from urllib.parse import unquote  # py2: from urllib import unquote

os.chdir('/mydir/')
for filename in listdir('.'):
    rename(filename, unquote(filename))
0
ответ дан 16 November 2019 в 14:20

Другие вопросы по тегам:

Похожие вопросы: