Portál AbcLinuxu, 10. května 2025 02:13

Dotaz: Script pro rapidshare

19.10.2008 00:30 Sir Mikhail | skóre: 10
Script pro rapidshare
Přečteno: 1471×
Odpovědět | Admin
Zdravím,

jsem novacek v delani scriptu a prosim o redu. Mym cilem je skript, ktery bude stahovat z rapidshare. Do souborů si ulozim odkazy a pri spusteni se me skript dotaze, jaky soubor s odkazy ma pouzit a jakou max rychlosti ma stahovat ... to mi funguje ... chtel jsem jeste primo wgetu urcit, do jakeho adresare ma ukladat (ano, vim ze bude ukladat do adresare, v kterem se budu nachazet ve chvili spusteni, ale chtel jsem to primo urcit ve skriptu) ... takze jsem pouzil basename na oddeleni jmena souboru od cele adresy, podle prikazu ECHO uspesne ...

situace je ted takova, ze sice skutecne uklada, ale s podivnym nazvem souboru - např. ve windows se zobrazuje jmeno souboru PSC8YJ~S - a v linuxu po zadani prikazu ls je nazev souboru korektni, ale po pripone nasleduje otaznik - např. soubor.rar? ...

To je minimalne podivne, protoze kdyz stahuji pouze pomoci wget -i _sources/$soubor --limit-rate="$rychlost"K --http-user=$user tak to pouziva spravne nazvy souboru ...

Dekuji za vsechny rady! :)

#!/bin/bash

user="user"
pass="pass"

echo
echo "DOWNLOAD STARTING:"

echo
echo "Jmeno souboru s odkazy:"
read soubor

echo
echo "Maximalni rychlost stahovani [Kb/s]:"
read rychlost

for i in `cat $soubor`;
do 
o=`basename $i`;
echo "Stahuji:" $o
wget $i --limit-rate="$rychlost"K --http-user=$user --http-password=$pass -O pokus/$o;
done

echo
echo "DOWNLOAD FINISHED!!!"
echo
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.10.2008 01:07 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Script pro rapidshare
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nie je náhodou ten znak ? prechod na nový riadok (prípadne len časť prechodu na nový riadok ako sa používa vo Windows a teda znak 0x0D)?

Inak nebolo by jednoduchšie použiť niečo ako cd adresar && wget ...
19.10.2008 09:40 Sir Mikhail | skóre: 10
Rozbalit Rozbalit vše Re: Script pro rapidshare
adresar+wget - mozna bylo, ale pak by byl problem s urcenim adresy zdrojoveho souboru pro download ...

Navic to neresi z jakeho duvodu to misto puvodniho jmena pouziva takove paskvily ... a do tretice, uz dlouho me stvalo, ze nemuzu ukladat wgetem davkove do urceneho adresare, tak se s tim snazim neco udelat ... :)
19.10.2008 17:14 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Script pro rapidshare
Ako som už písal, pravdepodobne ten textový súbor obsahuje konce riadkov, ako sa používajú vo Windows, takže tam ostáva ten znak \r. Čo sa s tým dá urobiť je napísané v inom príspevku. :)
19.10.2008 10:35 petris
Rozbalit Rozbalit vše Re: Script pro rapidshare
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevytvoril jste ten soubor s adresami ve windows? Ty pouzivaji k oddeleni radku \r\n, kdezto unix jen \n. Takze to \r vam tam zustane.

Budto si to z toho souboru nejdriv odstrante, nebo dejte \r do $IFS
19.10.2008 18:32 Sir Mikhail | skóre: 10
Rozbalit Rozbalit vše Re: Script pro rapidshare
saaaakrafix, tak tim to bylo, mierda!!! Diky! :)
22.10.2008 16:26 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: Script pro rapidshare
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, mozna OT, ale tohle je muj skript na stahovani a ma featuru navic a to ze se mu da rict kolik souboru najednou ma tahat:
#!/bin/bash

#Kam se uklada
USERD="/media/disk/RAPID"
PUSER="nereknu"
PPASS="nereknu"
# Kolik simultane
COUNT="4"

function printhelp(){
echo "Usage: multirdown.sh [-c NUMBER] -f SOURE_LINKS_FILE"
echo "Pripadne prepinace psat v tomto poradi, jinak je mozne, ze budou ignorovany"
echo "Prepinac -c nastavuje kolik symultannich downloadu pobezi, default je 4"
echo "SOURE_LINKS_FILE je soubor, kde na kazdem radku je link na rapid"
echo "Priklad: multirdown.sh -c 5 -f linky.txt"
}

function rdown(){
while [ "$1" != "" ]; do
    wget -o /dev/null --http-user=$PUSER --http-passwd=$PPASS $1 -P $USERD

    shift

done
}

function runmultirdown(){
while [ "`ps aux | grep wget | grep passwd | wc -l`" -lt "$COUNT" -a "`cat $1 | wc -l`" -gt "0" ]
do
	LINK="`head -n 1 $1`"
	cp $1 /tmp/linky.tmp
	tail -n +2 /tmp/linky.tmp > $1
	echo "--------------------------------"
	echo "Starting wget for link $LINK"
	rdown $LINK  &>/dev/null &
	echo "Active wgets is `ps aux | grep wget | grep passwd | wc -l`"
	echo "Remaining `cat $1 | wc -l` links"
	echo "--------------------------------"
done
}

function multirdown(){
while [ "`cat $1 | wc -l`" -gt "0" ]
do
	runmultirdown $1
	sleep 1s
done
}

case "$1" in
  -c)
        COUNT="$2"
	shift 2
    ;;
  -f)
	cp $2 $2.backup
	multirdown "$2"
	exit 0
  ;;
  *)
    	printhelp
	exit 0
esac

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.