Wget - Salvando um arquivo em um diretório local com o nome do link

Wget - Salvando um arquivo em um diretório local com o nome do link

Sou novo no uso do wget, então espero que esta não seja uma pergunta idiota:

Como posso salvar um arquivo em um diretório local que recebeu o nome do link para o arquivo?

Parece não funcionar se um redirecionamento estiver envolvido no download.

Por exemplo: digamos que estou baixando um arquivo de www.abc.com/news/xyz.jif, posso fazer com que o wget salve uma cópia local em um diretório chamado www.abc.comsubdiretório newse depois file xyz.jif.

Se, no entanto, o arquivo xyz.jiffoi movido www.qwerty.com/old/xyz.jife a pesquisa foi redirecionada para lá, o arquivo ainda será salvo em www.abc.com...etc.

Como eu disse, sou novo nisso, então espero ter explicado o problema corretamente.

Aqui está um exemplo simples do mundo real (usando wget):

wget --force-directories www.smugmug.com/photos/1235566-S.jpg

ele é salvo em: c:\www.smugmug.com/photos/1235566-S.jpg , que éincorreto. Deveria ter salvo em c:\suz.smugmug.com/photos/1235566-S.jpg, para onde foi redirecionado.

Responder1

Desculpe, não entendi inicialmente. Então, uma resposta completamente nova (rápida e suja - e como é uma programação bash, funciona apenas com Linux): use cURL para determinar se há um redirecionamento (usando -wparâmetro); dependendo do resultado, use wget para obter o URL original ou o destino de redirecionamento:

url=www.smugmug.com/photos/1235566-S.jpg; redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`; if [ -z $redirurl ]; then wget -x $url; else wget -x $redirurl; fi

Ou, em várias linhas:

url=www.smugmug.com/photos/1235566-S.jpg;
redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`;
if
    [ -z $redirurl ];
then wget -x $url;
else wget -x $redirurl; fi

redirurlé definido para o destino de redirecionamento, se houver algum. Caso contrário, wgeté chamado com a url original; se sim, wgetchama o alvo de redirecionamento. O -xparâmetro cria wgetos subdiretórios.

Claro, isso lida com apenas um nível de redirecionamento. Para torná-lo mais robusto, você terá que verificar recursivamente se há um redirecionamento. Portanto, não é apenas uma questão de opções de linha de comando se você deseja resolver esse problema de forma confiável.

informação relacionada