Skrypt automatyzujący pobieranie z rapidshare.com
Serwis rapidshare.com kilka dni temu wprowadził kolejne zmiany odnośnie darmowego pobierania plików z ich serwerów. Przed pobraniem pliku trzeba czekać od 30 do 120 sekund (w zależności od rozmiaru pobieranego pliku), a po ściągnięciu pliku odczekać musimy 15 minut. Jeśli jednak korzystamy z jakiegoś systemu linuksowego czy też uniksowego możemy ułatwić sobie ściąganie większej ilości plików, za pomocą prostego skryptu w powłoce bash.
Skrypt jest napisany w możliwie jak najprostszej postaci, a z używaniem jego nie powinno być problemów.
Poprawiona wersja przez vytah:
#!/bin/bash
while read line
do
base=$(basename ${line})
echo "Uruchamiam pobieranie $line"
link=$(curl -s ${line} | grep "<form id=\"ff\" action=\"" | grep -o 'http://[^"]*'$base)
while [ -n "$(curl -s -d "dl.start=Free" "$link" | grep "is already downloading a file")" ]
do
echo "Z twojego komputera lub sieci jest aktualnie pobierany plik."
echo "Ponowna proba za 5 min..."
sleep 300
done
if [ -z "$(curl -s -d "dl.start=Free" "$link" | grep "document.dlf.action=" | grep -o 'http://[^"]*'$base | head -n 1)" ]
then
echo -n "Musisz odczekac "
czas=$(curl -s -d "dl.start=Free" "$link" | grep "try again in" | sed -e 's/<p><b>Get your own premium account now!<\/b> Instant download access! Or try again in about //g' | sed -e 's/ minutes.<\/p>//g')
echo "${czas} minut(y) przed pobraniem pliku."
sleep ${czas}m
fi
plik=$(curl -s -d "dl.start=Free" "$link" | grep "document.dlf.action=" | grep -o 'http://[^"]*'$base | head -n 1)
echo "Czekam 2 minuty, aby zaczac pobieranie."
sleep 120
wget $plik
done
Skrypt należy zapisać w /usr/bin/ jako np. rapid oraz nadać mu prawa wykonywania.
chmod +x /usr/bin/rapid
Najłatwiejszym sposobem użycia jest wklejenie odnośnika/ów do pliku tekstowego, a następnie przekazanie ich na standardowe wejście naszego skryptu.
cat sciezka_do_pliku_z_linkami | rapid
Lub poprzez uruchomienie skryptu i zwyczajne wklejenie do niego linków (jeżeli tylko jeden link, to po wprowadzeniu należy zatwierdzić klawiszem Enter). Kiedy skrypt zostanie uruchomiony będzie na bieżąco informował nas o swoich poczynaniach. Skrypt nie sprawdza, czy pobierany plik wciąż istnieje na serwerze. W razie problemów, proszę pisać w komentarzach lub kontaktować się osobiście. Pozdrawiam.
Napisane dnia 13 października 2008 r. o godz. 13:53:58.
Słowa kluczowe:
rapidshare,
bash,
linux
• Dodaj komentarz

Hahaha!!! Działa w cygwinie!!!
Dzięki za skrypt. Przyda się
zmieniłbym parę rzeczy:
#!/bin/bash (w debianopochodnych sh jest linkiem nie do basha, ale do dasha)
sleep ${czas}m (bo po co mnożyć, jak jest składnia do spania przez minuty?)
No i warto dodać, że nie wszystkie dystrybucje mają domyślnie zainstalowanego curla
vytah, poprawilem skrypt ale wyskakuje:
Musisz odczekac minut(y) przed pobraniem pliku.
sleep: błędny odstęp czasowy `m\'
Poprawiona wersja, która jest w stanie pobierać pliki wszystkich typów, a nie tylko rary:
#!/bin/bash
while read line
do
base=$(basename ${line})
echo "Uruchamiam pobieranie $line";
link=$(curl -s ${line} | grep "<form id=\"ff\" action=\"" | grep -o 'http://[^"]*'$base)
while [ -n "$(curl -s -d "dl.start=Free" "$link" | grep "is already downloading a file")" ]
do
echo "Z twojego komputera lub sieci jest aktualnie pobierany plik."
echo "Ponowna proba za 5 min..."
sleep 300
done
if [ -z "$(curl -s -d "dl.start=Free" "$link" | grep "document.dlf.action=" | grep -o 'http://[^"]*'$base | head -n 1)" ]
then
echo -n "Musisz odczekac "
czas=$(curl -s -d "dl.start=Free" "$link" | grep "try again in" | sed -e 's/<p><b>Get your own premium account now!<\/b> Instant download access! Or try again in about //g' | sed -e 's/ minutes.<\/p>//g')
echo "${czas} minut(y) przed pobraniem pliku."
sleep ${czas}m
fi
plik=$(curl -s -d "dl.start=Free" "$link" | grep "document.dlf.action=" | grep -o 'http://[^"]*'$base | head -n 1)
echo "Czekam 2 minuty, aby zaczac pobieranie."
sleep 120
wget $plik
done
vytah, poprawilem skrypt ale wyskakuje:
Musisz odczekac minut(y) przed pobraniem pliku.
sleep: błędny odstęp czasowy `m\'
/bin/rapid2: line 20: błąd składni w pobliżu nieoczekiwanego tokenu '('
/bin/rapid2: line 20: `echo \"${czas} minut(y) przed pobraniem pliku.\"'
/bin/rapid2: line 20: błąd składni w pobliżu nieoczekiwanego tokenu '('
/bin/rapid2: line 20: `echo \"${czas} minut(y) przed pobraniem pliku.\"'
/bin/rapid2: line 20: błąd składni w pobliżu nieoczekiwanego tokenu '('
/bin/rapid2: line 20: `echo \"${czas} minut(y) przed pobraniem pliku.\"'
xxx@host:~/Pulpit$ cat down | rapid2
"Uruchamiam pobieranie http://rapidshare.com/files/xxxxxx/xxx_xxx_xx.pdf"
/bin/rapid2: line 7: form: No such file or directory
grep: already: No such file or directory
grep: downloading: No such file or directory
grep: a: No such file or directory
grep: file": No such file or directory
cos tu nie dziala :/
W komentarzach dodawane były znaki ucieczki, przez co poprawiona wersja skryptu była kopiowana z błędami. System komentarzy przy okazji poprawiłem, a sam skrypt zmodyfikowany przez vytah umieściłem w artykule. Pozdrawiam.
problem:
jakisplik.part.rar
nie za bardzo chce działać :(
Komunikat:
sleep: błędny odstęp czasowy `m'