Strona 1 z 1

Wget i wykonywanie czynności po pobraniu pliku

: 12 lutego 2011, 00:22
autor: konradr25
Witam.
Mam takie polecenie:

Kod: Zaznacz cały

wget -r -nc --no-parent -nd -A jpg [url=http://redirect.lightspeedgaming.net/css/maps/]http://strona.pl/www/ [/URL]
I chciałbym napisać skrypt, który po pobraniu każdego pliku, np. kompresuje go do bz2. Tylko nie w ten sposób: zostają pobierane wszystkie pliki, a następnie wszystkie kompresowane, bo w tym przypadku to wystarczy dopisać polecenie:

Kod: Zaznacz cały

bzip2.exe -9 -z *.*
i będzie po problemie.

Schematycznie to by wyglądało tak:
  • Zostaje pobrany plik 1.jpg.
  • Zostaje wykonana jakaś tam czynność na pliku 1.jpg.
  • Zostaje pobrany plik 42dfc.jpg.
  • Zostaje wykonana jakaś tam czynność na pliku 42dfc.jpg.
  • Dałoby się tak zrobić? Proszę bardzo o pokazanie mi sposobu.
Z góry dziękuję za pomoc.

: 20 lutego 2011, 15:13
autor: Van
Może po prostu wrzucić instrukcje pobrania i pakowania w jakąś pętlę?

: 20 lutego 2011, 15:36
autor: pioruns
Zainteresowałem się opcją

Kod: Zaznacz cały

wget --execute
Tak jak napisali w Linux Magazine z marca 2011:
Another option is to streamline operations by setting a command to run after a download is finished with -e COMMAND or --execute COMMAND. For example, if I use wget to download myfile.deb (...), I might use:

Kod: Zaznacz cały

wget -e dpkg -i ./myfile.deb
to have the package installed automatically when the download is done.
Ale wychodzi na to, że redaktor tego pisma nie miał racji.
Przynajmniej u mnie na Debianie tak to nie działa. --execute nadpisuje ustawienia w pliku konfiguracji .wgetrc pozwalając na konfigurację parametru tylko dla wybranego pliku, na przykład:

Kod: Zaznacz cały

wget -e cookies=off www.wp.pl

: 20 lutego 2011, 20:45
autor: Mateush
Trochę na około, ale może skrypt w pythonie?

Edycja:
Napisałem coś takiego. Jeśli chodzi Ci o inny język możesz po prostu wziąć stąd tok postępowania. Przy okazji fajnie gdyby ktoś rzucił okiem, czy na pewno dobrze, dopiero się uczę.

Kod: Zaznacz cały

import sys

def urls(infile):
	file = open(infile, 'r')
	urls = []
	for i in file.readlines():
		urls.append(i.strip())
	file.close()
	return urls

def main(urls, execute):
	for i in urls:
		os.system('wget %s' % i)
		os.system('execute %s' % i)



if __name__ == "__main__":
	urls = urls(sys.argv[1])
	main(urls, sys.argv[2])