LINUX.ORG.RU

Не сохраняются длинные имена в Wget

 


0

2

Нужно мне выкачать ~500 файлов. Перечень файлов находится в файле files.txt (использую опцию -i). Имена файлов примерно такие:

toyota-corolla-e120-compressed-131-638cb1432141220data-full=image.slidesharecdn.toyotacorollae120compressed-150520165732-lva1-app6892%2F95%2Ftoyota-corolla-e120-compressed-131-1024%3Fcb=1432141220%22data-small=image.slidesharecdn.toyotacorollae120compressed-150520165732-lva1-app6892%2F85%2Ftoyota-corolla-e120-compressed-131-320%3Fcb=1432141220.jpg

Wget ругается что имя файла слишком длинное, и не может сохранить. Попробовал опцию -O, но тогда запись всех картинок идет непрерывно в один файл.

★★★★★

Потому, что это не имя файла, а адрес, %2F - это кодированный символ /, %3F - ?, %22 - ”, преобразуй файл

toyota-corolla-e120-compressed-131-638cb1432141220data-full=image.slidesharecdn.toyotacorollae120compressed-150520165732-lva1-app6892/95/toyota-corolla-e120-compressed-131-1024?cb=1432141220”data-small=image.slidesharecdn.toyotacorollae120compressed-150520165732-lva1-app6892/85/toyota-corolla-e120-compressed-131-320?cb=1432141220.jpg

Вообще это не имена файлов, а часть GET запроса.

kostik87 ★★★★★
()

Это не wget, а ограничение на длину имени файла в линукс (255 байт, под разными ecryptfs/encfs - еще меньше).

anonymous
()

Я эту задачу решал как-то так:

export c=0
for i in `cat files.txt`; do
  wget -O `printf %05d $c`.jpg "$i"
  c=$((c+1))
done
anonymous
()
Ответ на: комментарий от anonymous

Нужно только средствами WGET, я его щас под виндой пускаю.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от kostik87

Да пофигу какое имя, пусть хоть

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.jpg

Вопрос в том, как при загрузке таких файлов с опцией -i, сохранять их так, чтобы имена сокращались.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

опрос в том, как при загрузке таких файлов с опцией -i

Ни как.

Нужно только средствами WGET, я его щас под виндой пускаю.

Пиши скрипт:

@echo off
setlocal enableextensions enabledelayedexpansion
set inc=0

for /f "tokens=* delims=""" %%i in ( файл_со_ссылками ) do (
 set /a inc+=1
 echo  wget "%%i" -O !inc!.jpg
)
endlocal
Тут в качестве имени файла будет номер ссылки плюс расширение jpg. Если нужно как-то по другому - усложняй.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Вместо

echo  wget "%%i" -O !inc!.jpg
естественно должно быть
wget "%%i" -O !inc!.jpg

kostik87 ★★★★★
()

Добавь опцию --content-disposition
wget будет пытаться определить имя файла.

DiMoN ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.