4

Я новичок в использовании wget, поэтому я надеюсь, что это не глупый вопрос:

Как я могу сохранить файл в локальном каталоге, который был назван в честь ссылки на файл?

Кажется, это не работает, если в загрузке было задействовано перенаправление.

Например: скажем, я загружаю файл с www.abc.com/news/xyz.jif , я могу получить wget для сохранения локальной копии в каталог с именем www.abc.com с news подкаталога, а затем файл xyz.jif

Однако, если файл xyz.jif был перемещен на www.qwerty.com/old/xyz.jif и поиск был перенаправлен туда, файл все еще сохраняется на www.abc.com ... и т.д.

Как я уже сказал, я новичок в этом, поэтому я надеюсь, что я правильно объяснил проблему.

Вот простой пример из реальной жизни (с использованием wget):

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

он сохраняется в: c:\www.smugmug.com/photos/1235566-S.jpg, что не соответствует действительности. Он должен был сохранить его в c:\suz.smugmug.com/photos/1235566-S.jpg , куда он был перенаправлен.

1 ответ1

0

Извините, изначально не понял. Итак, полный новый ответ (быстрый и грязный - и поскольку это bash-программирование, он работает только с linux): используйте cURL, чтобы определить, существует ли перенаправление (с помощью параметра -w ); в зависимости от результата, используйте wget, чтобы получить исходный URL или цель перенаправления:

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

Или на нескольких строках:

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 устанавливается на цель перенаправления, если таковая имеется. Если нет, wget вызывается с оригинальным URL; если да, wget вызывает цель перенаправления. Параметр -x заставляет wget создавать подкаталоги.

Конечно, это обрабатывает только один уровень перенаправления. Чтобы сделать его более надежным, вам придется рекурсивно проверять наличие перенаправления. Таким образом, дело не только в параметрах командной строки, если вы хотите решить эту проблему надежным способом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .