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, linuxDodaj komentarz

Komentarze do wpisu "Skrypt automatyzujący pobieranie z rapidshare.com":

  1. Koziołek (dnia 14.10.2008 o godz. 15:54) napisał:

    Hahaha!!! Działa w cygwinie!!!
    Dzięki za skrypt. Przyda się

  2. vytah (dnia 14.10.2008 o godz. 21:31) napisał:

    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

  3. kamil (dnia 14.10.2008 o godz. 23:16) napisał:

    vytah, poprawilem skrypt ale wyskakuje:

    Musisz odczekac minut(y) przed pobraniem pliku.
    sleep: błędny odstęp czasowy `m\'

  4. vytah (dnia 14.10.2008 o godz. 23:16) napisał:

    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

  5. kamil (dnia 15.10.2008 o godz. 00:24) napisał:

    vytah, poprawilem skrypt ale wyskakuje:

    Musisz odczekac minut(y) przed pobraniem pliku.
    sleep: błędny odstęp czasowy `m\'

  6. yyy (dnia 15.10.2008 o godz. 00:29) napisał:

    /bin/rapid2: line 20: błąd składni w pobliżu nieoczekiwanego tokenu '('
    /bin/rapid2: line 20: `echo \"${czas} minut(y) przed pobraniem pliku.\"'

  7. yyy (dnia 15.10.2008 o godz. 00:32) napisał:

    /bin/rapid2: line 20: błąd składni w pobliżu nieoczekiwanego tokenu '('
    /bin/rapid2: line 20: `echo \"${czas} minut(y) przed pobraniem pliku.\"'

  8. yyy (dnia 15.10.2008 o godz. 00:37) napisał:

    /bin/rapid2: line 20: błąd składni w pobliżu nieoczekiwanego tokenu '('
    /bin/rapid2: line 20: `echo \"${czas} minut(y) przed pobraniem pliku.\"'

  9. miro (dnia 15.10.2008 o godz. 16:01) napisał:

    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 :/

  10. MiSHu (dnia 16.10.2008 o godz. 00:51) napisał:

    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.

  11. Koziołek (dnia 24.11.2008 o godz. 21:59) napisał:

    problem:
    jakisplik.part.rar
    nie za bardzo chce działać :(
    Komunikat:
    sleep: błędny odstęp czasowy `m'

Dodaj komentarz do wpisu "Skrypt automatyzujący pobieranie z rapidshare.com":