wget e URL codificado

12

Eu tenho um URL como este:

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

Eu quero baixar este URL usando wget . Se eu passar diretamente para wget , tudo vai bem. Mas estou em uma situação em que tenho apenas as versões codificadas de URLs de download. Se eu passar a versão codificada do URL acima para wget , isso gerará o seguinte erro:

$ 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'

Observe que wget alterou a cobertura do URL (por exemplo, Khumba para khumba ). O que devo fazer para resolver este problema?

    
por melmi 02.03.2014 / 21:03

5 respostas

18

Como isso é irritantemente tão comum, existem vários conversores disponíveis - por exemplo, este site . Você pode usá-los para decodificar o URL - assim, ele converterá isso:

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

para:

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

Seria necessário ter uma versão de linha de comando embora ...

EDITAR:

Encontrou uma versão de linha de comando - basicamente:

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

Isso pode ser implementado em um script como este para decodificar o URL:

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

que, se salvos e executados, funciona muito bem.

também este script, que também baixará o UL:

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

N.B. Acho que o caso em que o URL está não é importante para a maioria dos sites - por exemplo, HTTP://WWW.UBUNTU.COM

    
por Wilf 02.03.2014 / 21:42
7

Você deve usá-lo assim

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

Apenas substitua todos os espaços por %20 . Ou melhor, copie o link original e cole-o na barra de endereço do navegador do Chromium. Ele irá formatá-lo automaticamente para você. Agora copie de lá para o seu terminal.

    
por g_p 02.03.2014 / 21:17
4

O Wget espera que o URL tenha o seguinte formato:

[protocol://]host/path

O protocolo é opcional. Na ausência de protocolo , Wget assume HTTP.

O Wget aceita URLs percentualmente codificadas, mas os delimitadores entre protocolo , host e caminho não podem ser codificados por percentual.

É também por isso que o Wget alterou o invólucro do URL. Como não encontrou uma única barra não codificada, supõe-se que

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

é o nome do host (que não faz distinção entre maiúsculas e minúsculas). O nome do host atual é, obviamente, dl.minitoons.ir .

Para uma solução automática, substituir %3A%2F%2F e %2F após o nome do host por :// e / seria suficiente, mas é tão fácil decodificar o URL em um. @Wilf já deu uma boa solução para isso.

No entanto, se você for digitar o comando Wget manualmente, faça o seguinte:

wget "dl.minitoons.ir/longs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"
    
por Dennis 03.03.2014 / 04:27
1

Você só precisa colocar aspas no URL e pronto:

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          

É mais fácil assim e você não precisa se envergonhar de coisas.

    
por Braiam 03.03.2014 / 01:41
0

Acabei de escrever um script python para ele.

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))
    
por frigen 30.06.2017 / 17:07

Tags