Estou tentando baixar uma coleção de arquivos de um site. Onde a coleção é retirada de "TAGS". Eu tentei usar muitas combinações de wget
e bash scripts
sem sorte. Cada arquivo é aninhado em sua própria página da web e parece que o site usa .htaccess
e URL rewriting
para manipular o redirecionamento de links. Existe uma maneira de fazer isso, preservando a estrutura dir?
home
├──Foo
│ ├──paul.mp3
│ ├──saul.mp3
│ ├──micheal.mp3
│ ├──ring.mp3
├──Bar
├──nancy.mp3
├──jan.mp3
├──mary.mp3
Eu tenho tentado variações de
wget -m -x -e robots=off --no-parent --accept "*.mp3" http://example.com
Mas não houve sucesso.
EDIT
Depois de usar uma variedade de combinações de wget com opções diferentes -m -r -spider. Eu não consegui alcançar nenhum sucesso. Consegui obter dir
pastas e vários arquivos, mas continuei tendo problemas com links em execução em loops. Então eu criei esse trabalho por aí. Funciona mas é lento. Algum conselho sobre como aumentar a eficiência?
O arquivo com os TAGS dos arquivos que eu quero
taglist.txt
foo
bar
O script
#!/bin/bash
#this script seems to work until the download part
URL="http://www.example.com"
LINK_FILE=taglist.txt
while read TAG; do
mkdir "$TAG"
cd "$TAG"
# Get the URLs from the page
wget -q $URL/$TAG -O - | \tr "\t\r\n'" ' "' | \grep -i -o '<a[^>]\+href[ ]*=[ \t]*"\(ht\|f\)tps\?:[^"]\+"' | \sed -e 's/^.*"\([^"]\+\)".*$//g' > tmp.urls.txt
# Clean and sort URLs
grep -i 'http://www.example.com/storage_dir/*' tmp.urls.txt | sort -u > tmp.curls.txt
# Download the page with the URL
while read TAPE_URL; do
#wget -r -A.mp3 $TAPE_URL
wget -O tmp.$RANDOM $TAPE_URL
done <tmp.curls.txt
# Find all the .mp3 links in the files
grep -r -o -E 'href="([^"#]+)[.mp3]"' * | cut -d'"' -f2 | sort | uniq > $TAG.mp3.list
# Clean Up
rm tmp.*
# Download the collected URLs
wget -i $TAG.mp3.list
cd ..
done <"$LINK_FILE"