Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: National Geographic tapety  (Přečteno 5818 krát)

Kamil Hanus

  • Aktivní člen
  • *
  • Příspěvků: 221
    • kamilhanus.cz
National Geographic tapety
« kdy: 01 Března 2011, 08:56:15 »
Ahoj,
někdy dříve jsem si na netu všiml, že je napsaný script pro stažení tapet z National Geographic pro rok 2008 a 2009. Pro minulý rok ale nic nebylo, tak jsem si řekl, co bych pro lidi neudělal, že :) Takže tady je můj script (snad tam nejsou chyby):
Kód: [Vybrat]
#!/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

Jako první možnost je tam stažení tapet z fotografické soutěže NG, avšak je to dost pomalé. Nenalezl jsem v řazení fotek žádnou logiku a tak se musí wgetem prostě zkusit stáhnout obrázek a buď tam je, a nebo ne. Mělo by se jednat pouze o fotky z roku 2010.

Druhá volba jsou fotografie z časopisu NG, ze kterých udělali tapety. Tam to bylo dost jednoduché :)

Snad se to tedy někomu bude líbit, případně mi prosím napište, jestli jsem někde neudělal ve scriptu chybu...

PS: Ne že uděláte automatické měnění tapet, to si chci ještě vychutnat   :D

//EDIT
Dohromady to je ~500 tapet o velikosti 420MB
« Poslední změna: 01 Března 2011, 10:57:39 od Kamil Hanus »
Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it ;)

Kamil Hanus

  • Aktivní člen
  • *
  • Příspěvků: 221
    • kamilhanus.cz
Re: National Geographic tapety
« Odpověď #1 kdy: 03 Března 2011, 17:52:52 »
Přikládám ještě slíbený script na automatické měnění tapet.
Kód: [Vybrat]
#!/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
Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it ;)

LS

  • Závislák
  • ***
  • Příspěvků: 3849
    • http://linux.euweb.cz
Re: National Geographic tapety
« Odpověď #2 kdy: 09 Března 2011, 00:26:23 »
Vynikající, děkuji za tip.

jenda93

  • Stálý člen
  • **
  • Příspěvků: 653
  • software engineer
Re: National Geographic tapety
« Odpověď #3 kdy: 09 Března 2011, 01:55:15 »
I když nejsem zrovna tapetář, připojuji se.
Hlavním úkolem vývojářů je chválit nový software

Petr R.

  • Aktivní člen
  • *
  • Příspěvků: 154
  • ...
Re: National Geographic tapety
« Odpověď #4 kdy: 09 Března 2011, 11:17:06 »
Supr, ale ve skriptu na měnění tapet tě už dávno někdo předběhl:

https://launchpad.net/crebs
Ubuntu 11.10 "Oneiric Ocelot" | Oddíly (ext 4): /, /home, /www | PC Intel | Linux user #482261

jenda93

  • Stálý člen
  • **
  • Příspěvků: 653
  • software engineer
Re: National Geographic tapety
« Odpověď #5 kdy: 09 Března 2011, 15:12:58 »
Ehm, důležité je, že skript dal Kamil Hanus taky sem pro zdejší uživatele.
Hlavním úkolem vývojářů je chválit nový software

a.arnost

  • Návštěvník
  • Příspěvků: 87
Re: National Geographic tapety
« Odpověď #6 kdy: 09 Března 2011, 16:40:06 »
Úžasný,ale jak to funguje a kde to stahovat?Jediný skript který používám je na převod audia to chápu,ale toto moc ne.

jenda93

  • Stálý člen
  • **
  • Příspěvků: 653
  • software engineer
Re: National Geographic tapety
« Odpověď #7 kdy: 09 Března 2011, 18:56:09 »
Teď sem nepochopil, jestli se ptáš na ten první nebo druhý skript. Ten první skript stačí normálně spustit a udělá v domovském adresáři skrytý adresář /.ng_tapety a obrázky automaticky stáhne do podadresáře ./2010_wallpapers. Šetřím místem, zkoušel sem jenom pár tapet, ale fungovalo to nadějně.

Jinak tapety jsou samozřejmě např. tady:

http://ngm.nationalgeographic.com/ngm/photo-contest/
Hlavním úkolem vývojářů je chválit nový software

Kamil Hanus

  • Aktivní člen
  • *
  • Příspěvků: 221
    • kamilhanus.cz
Re: National Geographic tapety
« Odpověď #8 kdy: 09 Března 2011, 20:51:59 »
Petr R.: Určitě existuje i spousta dalších (a určitě lepších) programů/skriptů pro měnění tapet, ale člověk je vždycky rád ,když si to napíše sám... Navíc pro tyhle účely IMHO bohatě stačí něco jako je toto - jednoúčelové a nezabírá to moc místa...

Btw nevíte někdo, jak v Bashi napsat něco jako je v Pythonu while True? Myslím, že dělat to přes while [ 1 -eq 1 ] je celkem prasárnička...
Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it ;)

Petr R.

  • Aktivní člen
  • *
  • Příspěvků: 154
  • ...
Re: National Geographic tapety
« Odpověď #9 kdy: 09 Března 2011, 21:18:59 »
K tomu odkazu jsem přišel na tomto fóru v jednom teď už zapadlém tématě, a tak jsem si říkal, že to sem dám taky. Za ten skript jsem pochopitelně rád a vážím si ho.
Ubuntu 11.10 "Oneiric Ocelot" | Oddíly (ext 4): /, /home, /www | PC Intel | Linux user #482261

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: National Geographic tapety
« Odpověď #10 kdy: 10 Března 2011, 11:14:49 »
Petr R.: Určitě existuje i spousta dalších (a určitě lepších) programů/skriptů pro měnění tapet, ale člověk je vždycky rád ,když si to napíše sám... Navíc pro tyhle účely IMHO bohatě stačí něco jako je toto - jednoúčelové a nezabírá to moc místa...

Btw nevíte někdo, jak v Bashi napsat něco jako je v Pythonu while True? Myslím, že dělat to přes while [ 1 -eq 1 ] je celkem prasárnička...

while true můžeš použít i v Bashi, nebo while :. Ta tvá prasárnička se dá logicky zjednodušit na while [ 1 ], to jen tak na okraj.

a.arnost

  • Návštěvník
  • Příspěvků: 87
Re: National Geographic tapety
« Odpověď #11 kdy: 10 Března 2011, 13:16:22 »
todle je apsolutně perfektní krása
moc děkuji

Kamil Hanus

  • Aktivní člen
  • *
  • Příspěvků: 221
    • kamilhanus.cz
Re: National Geographic tapety
« Odpověď #12 kdy: 10 Března 2011, 14:02:30 »
...

while true můžeš použít i v Bashi, nebo while :. Ta tvá prasárnička se dá logicky zjednodušit na while [ 1 ], to jen tak na okraj.
Díky, koukám, že bash rozeznává malá a velká písmena, s velkým mi to nefungovalo..
Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it ;)

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: National Geographic tapety
« Odpověď #13 kdy: 10 Března 2011, 14:56:25 »
...

while true můžeš použít i v Bashi, nebo while :. Ta tvá prasárnička se dá logicky zjednodušit na while [ 1 ], to jen tak na okraj.
Díky, koukám, že bash rozeznává malá a velká písmena, s velkým mi to nefungovalo..

true/false jsou vlastně jen prográmky, které nedělají nic, ale dělají to úspěšně, či neúspěšně, nejsou přímo součástí Bashe. A na velkých/malých písmenech záleží vždy.

Edit: On má vlastně Bash true i false vestavěné, ale mimo to jsou v systému i zmíněné samostatné programy se stejným jménem. To může být teoreticky komplikace, protože volání těchto externích programů způsobí několikanásobné zpomalení oproti vestavěným. Při výše uvedeném použití k záměně nedochází, jak vyplynulo z mého testování. Nicméně proto mnozí zřejmě doporučují použít dvojtečku, která také vždy vrátí true..
« Poslední změna: 10 Března 2011, 18:32:58 od GdH »

 

Provoz zaštiťuje spolek OpenAlt.