29427_1600x1200-wallpaper

National Geographic tapety [2010]

Nedávno jsem na internetu narazil na zajímavý script, který stahoval z webu National Geographic všechny jejich vydané tapety. Musím podotknout, že některé vypadají opravdu úžasně. Tak jsem si řekl, proč si nenapsat vlastní script i pro rok 2010? V případě tapet vydávaných skoro každý den v měsíci to nebyl problém – stačilo si trochu pohrát s WGETem a bylo po starostech. Pak jsem ale narazil na kategorii Photo Contest, kde jsou fotografie ,dle mého názoru, daleko hezčí. Menší problém ale nastal u stahování fotografií – nenalezl jsem v hierarchii řazení fotografií žádnou logiku, a proto se musí zkoušet 1…99 fotografie v každé kategorii. To ovšem způsobuje značné zpomalení stažení tapet, jelikož se script snaží stáhnout i neexistující obrázky.

Nicméně si myslím, že script je to povedený. Vždy jsem se snažil najít nějakou pěknou tapetu na plochu, dlouhou dobu jsem byl i s „parketami“ z balíčku elementary-wallpapers, ale toto mne naprosto uchvátilo. Proto jsem se rozhodl napsat další script, který bude náhodně vybírat tapety z předem definovaného umístění a po zvoleném čase je umísťovat na plochu.

Za zmínku ještě stojí, že se celkem jedná o zhruba 500 souborů s tapetami o celkové velikosti cca 420 MB. Zde je menší ukázka:

I když oba scripty fungují dobře, netvrdím že jsou perfektní. Určitě se najdou nějaké metody, jak by se dala spousta věcí napsat jinak – lépe. A proto se nebráním kritice a v komentářích ji rád uvítám. Obsah obou souborů si můžete přímo zkopírovat z této stránky.

wallpapers.sh

#!/bin/bash
clear
dir="/home/"$USER"/.ng_tapety"
wall_dir="./2010_wallpapers"
con_dir="./2010_photo_contest"
month=1
month2="01"
month_names="
jan
feb
mar
apr
may
jun
jul
aug
sept
oct
nov
dec"
wall_url="http://ngm.nationalgeographic.com/wallpaper/img/2010/"
con_numbers="
267
270
272
274
275
276
280
281
282
283
284
288
291
292
294
295
300"
if [ -e $dir ]; then
	echo "Directories are already created."
else
	mkdir $dir
	cd $dir
	mkdir $wall_dir
	mkdir $con_dir
	echo "Directories was successfully created."
fi

function wallpapers_download() {
	cd $wall_dir
	for i in $month_names; do
		a=1
			for b in {1..30}; do
				wget -c -nc $wall_url$month2"/"$i"10wallpaper-"$a"_1600.jpg"
				a=$((a+1))
			done

		month=$((month+1))
		if [ $month -le 9 ]; then
			month2="0"$month
		else
			month2=$month
		fi
	done
	cd ../
}
function contest_download() {
	cd $con_dir
	for b in $con_numbers; do
		a=1
		for i in {1..99}; do
			wget -nc -c "http://images.nationalgeographic.com/wpf/media-live/photos/000/"$b"/custom/"$b$a"_1600x1200-wallpaper.jpg"
			a=$((a+1))
		done
	done
	cd ../
}

function menu() {
echo "
*****************************************
National Geographic wallpapers downloader
Created by Kamil Hanus, 2011
GNU/GPL license
*****************************************
Choose from the list:
1) Download National Geographic photo contest wallpapers 2010 (slow, but I recommend)
2) Download National Geographic wallpapers for year 2010
3) Download both options
--------------------------------------------------------
4) Exit

enter nuber:
"
read response
case $response in
	"1" )
	contest_download
	echo "
	Contest wallpapers was downloaded.
	Press Enter to exit...
	"; read
	return ;;
	"2"	)
	wallpapers_download
	echo "
	National Geographic wallpapers for year 2010 was downloaded.
	Press Enter to exit...
	"; read
	return ;;
	"3" )
	contest_download
	wallpapers_download
	echo "
	National Geographic wallpapers for year 2010 and contest wallpapers was downloaded.
	Press Enter to exit...
	"; read
	return ;;
	"4" )
	return ;;
	*)
	echo "Invalid option, try it again..."
	menu ;;
esac
}
menu
exit 0

random-wallpaper.sh

#!/bin/bash
time=3600 #zadejte čas ve vteřinách
wall_dir="/home/"$USER"/.ng_tapety/2010_wallpapers"
conn_dir="/home/"$USER"/.ng_tapety/2010_photo_contest"
dir=$[ ( $RANDOM % 2)  + 1 ]
wall_count=0
conn_count=0
a=`ls $wall_dir`
b=`ls $conn_dir`
for i in $a; do
	wall_count=$((wall_count+1))
done
for i in $b; do
	conn_count=$((conn_count+1))
done

function tapeta(){
cislo=$[ ( $RANDOM % wall_count)  + 1 ]
tmp=1
for i in `ls $wall_dir`; do
	if [ $cislo -eq $tmp ]; then
		/usr/bin/gconftool-2 --type string --set /desktop/gnome/background/picture_filename $wall_dir"/"$i
	fi
	tmp=$((tmp+1))
done
}
function contest(){
cislo=$[ ( $RANDOM % conn_count)  + 1 ]
tmp=1
for i in `ls $conn_dir`; do
	if [ $cislo -eq $tmp ]; then
		/usr/bin/gconftool-2 --type string --set /desktop/gnome/background/picture_filename $conn_dir"/"$i
	fi
	tmp=$((tmp+1))
done
}

while [ 1 -eq 1 ]; do
	dir=$[ ( $RANDOM % 2)  + 1 ]
	if [ $dir -eq 1 ]; then
		tapeta
	fi
	if [ $dir -eq 2 ]; then
		contest
	fi
	sleep $time

done

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *