czyli np. w przypadku neostrady zmienia IP i ściąga dalej.
Co i jak działa?
W folderze ze skryptem tworzymy plik base.txt, w nim zapisujemy linki do rapida (jeden pod drugim każdy odnośnik w osobnej linii) oraz folder Download, do którego zapisywane będą pobrane pliki. Może się komuś przyda:
#!/bin/bash
#
# Autor: Piotr Jachacy <[email protected]>
# Modyfikował: £ukasz Kubsz < [url]http://lukaszkubsz.org[/url] >
#
# ostatnia modyfikacja: 28.12.2008
#
# /* This program is free software. It comes without any warranty, to
# * the extent permitted by applicable law. You can redistribute it
# * and/or modify it under the terms of the Do What The Fuck You Want
# * To Public License, Version 2, as published by Sam Hocevar. See
# * [url]http://sam.zoy.org/wtfpl/COPYING[/url] for more details. */
#
# kolorki
clear
red="\e[1;31m"
zaden="\033[0m"
green="\e[1;92m"
white="\e[1;37m"
liczba=0
function restart
{
GATEIP="192.168.0.1"
LINK="http://$GATEIP/doc/index.htm?WINDWEB_URL=/doc/adsltop.htm&ADSL_Action=0"
USER="admin"
PASS="haselko_nasze"
wget --quiet --http-user=$USER --http-password=$PASS ${LINK} -O /tmp/wget_router
rm -f /tmp/wget_router
rm -rf .ip
mkdir .ip
cd .ip
while [ 1 ]; do
ip=`wget --quiet [url]http://checkip.dyndns.org/index.html[/url] && cat index.html | cut -d ' ' -f 6 | cut -d '<' -f 1`
sleep 1
if [ -n "$ip" ]; then
break
fi
done
cd ..
rm -rf .ip
}
function odliczanie
{
x=$1
while [ $x -ge 1 ]; do
printf "\r%-5s" $x"s"
x=$[x -1]
sleep "1"
done
printf "\r%-5s" ""
}
function pobierz
{
link=$1
sciezka=$2
link=$(wget "$link" -q -O - | grep 'form id="ff"' | sed -e 's/.*action="\(.*\)"\s.*/\1/')
if [ -n "$link" ]; then
link=$(wget --post-data "dl.start=Free" $link -q -O -)
if [ -n "$(echo "$link" | grep "Please wait until the download is completed")" ]; then
echo -e ''$red'Sciągasz inne pliki!'$zaden''
exit
elif [ -n "$(echo "$link" | grep "You have reached the download limit for free-users. Would you like more?")" ]; then
echo -e ''$green'Trwa resetowanie Twojego rutera'$zaden''
restart
pobierz $1 $sciezka
else
czas=$(echo "$link" | grep "var c" | sed -e "s/var c=\([0-9]*\);.*/\1/")
echo -e ''$green'Trwa odliczanie'$zaden''
odliczanie $czas
echo -e ''
echo -e ''$red'----------------------------------------------------------'$zaden''
echo -e ''$red''$liczba'/'$ilosc''$green' Trwa pobieranie: '$1''$zaden''
link=$(echo "$link" | grep 'form name="dlf"'| sed -e 's/.*action="\(.*\)"\s.*/\1/')
wget --post-data "mirror=on" "$link" -P "$sciezka"
if [ "$?" == "0" ]; then
kdialog --passivepopup "Pobrano $link"
else
kdialog --passivepopup "Nie udało się pobrać pliku: $link"
fi
echo -e ''$red'----------------------------------------------------------'$zaden''
fi
else
echo -e ''$red'Nie udało się pobrać pliku: '$green''$1''$zaden''
fi
}
sciezka_zapisu=`kdialog --getexistingdirectory /`
typ=`kdialog --radiolist "Wybierz typ:" 1 "Wprowadź listę" on 2 "Wprowadź linki ręcznie" off`
if [ $typ == "1" ]; then
sciezka=`kdialog --getopenfilename ~`
ilosc=`cat $sciezka |grep -E -v "^#|^$" | wc -l`
for x in $(cat $sciezka)
do
if [ -n "$x" ]; then
liczba=$(($liczba+1))
pobierz "$x" "$sciezka_zapisu"
fi
done
elif [ $typ == "2" ]; then
touch ~/tmp.rapid
kdialog --textinputbox 'Podaj linki, [b]każdy link w osobnej linijce[/b]' > ~/tmp.rapid
ilosc=`cat ~/tmp.rapid | grep -E -v "^#|^$" | wc -l`
for x in $(cat ~/tmp.rapid)
do
if [ -n "$x" ]; then
liczba=$(($liczba+1))
pobierz "$x" "$sciezka_zapisu"
fi
done
rm ~/tmp.rapid
fi
ma jeszcze trochę błędów, ale działa... Na noc wrzuciłem dużo linków, pobrał wszystkie. Zmodyfikowany by można było wybierać ścieżkę zapisu i wklejać linki, ew dawać gotowy plik z linkami.
Modyfikacje mojego skryptu będą sobie leżały: http://qbsiu.palarnia.org/Skrypty
Pozdrawiam!
P.s. Może potem się zabawię i będzie się tylko wybierało lokalizację zapisu...
Bardzo miłe, sam ostatnio nad czymś takim pracowałem.
Niestety (albo i stety) posiadam stałe ip i w związku z tym trick z ifdown -a && ifup -a u mnie nie zadziała, więc robię to trochę inaczej - muszę odczytać ile muszę czekać i przeczekać ten czas, a by nadrobić to jakoś to stosuję proxy.
Orientujesz się może, jakie zwykle są limity czasowe?
#! /bin/bash
# rsgetd.sh - Download Service
# Version 0.2
# Copyright (C) 2007 George Notaras ([url]http://www.g-loaded.eu/[/url])
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# Special thanks to 'Zart' from the #fedora channel on FreeNode
# CONFIG START
HOMEDIR="/var/www/rapidshare.xxxxxxxxxx.pl"
DLBASKET="$HOMEDIR/pending"
DLDIR="/home/download/rapid/"
LOGFILE="$HOMEDIR/rsget.log"
WGETLOG="$HOMEDIR/wget.log"
CACHEFILE="$HOMEDIR/done"
CURRENTFILE="$HOMEDIR/current"
LIMIT="90k"
WGETBIN="/usr/bin/wget"
RSCOOKIE="$HOMEDIR/rapidshare"
# CONFIG END
cat <> $DLBASKET | (
while read url ; do
echo "`date` Starting with rate $LIMIT/s: $url" >> $LOGFILE
echo $url > $CURRENTFILE
if [ $(expr match "$url" '[rapidshare.com]') = 1 ] ; then
$WGETBIN -o $WGETLOG -c --limit-rate=$LIMIT --directory-prefix=$DLDIR --load-cookies $RSCOOKIE $url
else
$WGETBIN -o $WGETLOG -c --limit-rate=$LIMIT --directory-prefix=$DLDIR $url
fi
echo "`date` Finished: $url" >> $LOGFILE
echo $url >> $CACHEFILE
done )
exit 0
Do jego obsługi napisałem interfejs www w php. ¦ciągam głównie z rapidshare premium więc w skrypcie jest zrobiona autoryzacja za pomocą ciastka. Planuje to przepisać tak by możliwa była zmiana kolejności i usówanie plików z kolejki.
Pies pisze:Orientujesz się może, jakie zwykle są limity czasowe?
15 minut, i ten skrypt (autora) na którym bazowałem, czekał limit czasu :-) Poszukaj na jego stronie! Ja musiałem przebudować, bo po co mam czekać 15 minut, skoro mogę 1:20 czekać ;-) (bo tak średnio resetuje się neo)
qbsiu pisze:Zmodyfikowany by można było wybierać ścieżkę zapisu
Dziwne... tylko pierwszy plik zostaje zapisany w miejscu wskazanym przez okienko dialogowe. Kolejne lądują w katalogu z którego odpalam skrypt.
Wybrałem opcję z linkami w pliku.
Poza tym skrypcik działa bez zarzutu.
U mnie się wysypywało, jak dawałem lokalizacje montowanych partycji w kde, przez media:/. Wget nie potrafi zapisać do media:/, trzeba pisać /normalny/pkt/montowania :/
qbsiu pisze:U mnie się wysypywało, jak dawałem lokalizacje montowanych partycji w kde, przez media:/. Wget nie potrafi zapisać do media:/, trzeba pisać /normalny/pkt/montowania :/
Podawałem standardowo (wybierając przez kdialog) katalog w moim domowym i taką też ścieżkę wyświetlał skrypt (/home/i/tak/dalej)za pierwszym przebiegiem.
Z tego co sprawdzałem dodając w kilku miejscach skryptu wyświetlanie aktualnej wartości zmiennej ze ścieżką to w drugim przebiegu (i następnych) do funkcji pobierz nie zostaje przekazana wartość ścieżki (lub "ginie gdzieś" w funkcji). Jest pusta.
Raptem kilka linii prostego kodu a dzieją się dziwne rzeczy... Pierwszy raz coś takiego widzę.
Pies pisze:Orientujesz się może, jakie zwykle są limity czasowe?
15 minut, i ten skrypt (autora) na którym bazowałem, czekał limit czasu :-) Poszukaj na jego stronie! Ja musiałem przebudować, bo po co mam czekać 15 minut, skoro mogę 1:20 czekać ]
Tylko po co czekać 1:20 przecież to wieczność ;-). Ja zamiast restartować cały router resetuje tylko połączenie przez telnet co jest o wiele szybsze. Sprawdź czy twój cerberus obsługuje komendę