Script για αλλαγή wallpaper στο Gnome από το Nat. Geographic "Photo of the Day"

smooth | Τρί, 11/09/2010 - 10:28 | 2' | 18

Βρήκα ένα script για να αλλάζει wallpaper απο το National Geographic Photo of the day. Δεν δούλευει όμως. Μπορεί να καταλάβει κανείς γιατί; 

Νάτο:

#!/bin/sh
#Based on code of APOD, you can really find everywhere on the web.

#Downloading html of the Picture-Of-The-Day
wget -N http://photography.nationalgeographic.com/photography/photo-of-the-day/ -O /tmp/ngpod.html

#Getting the URL of the image
img_location=`egrep -o "http://[^<]*1600x1200[^>]*\.jpg" /tmp/ngpod.html`

rm /tmp/ngpod.html

#Download image
TODAY=$(date +'%Y%m%d')
wget $img_location -O ~/Afbeeldingen/ngpod/$TODAY.jpg

# Setting background-image.
# NB: Use an absolute URL
gconftool-2 -t string -s /desktop/gnome/background/picture_filename "/home/vincent/Afbeeldingen/ngpod/$TODAY.jpg"
gconftool-2 -t string -s /desktop/gnome/background/picture_options "zoom"
# Possible values are "none", "wallpaper" (eg tiled), "centered", "scaled", "stretched", "zoom"

Φόρουμ
Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Βασικά είναι λάθος τα path που πάει να αποθηκεύσει την εικόνα που κατεβάζει.

Πρέπει να αλλάξεις τη γραμμή:

wget $img_location -O ~/Afbeeldingen/ngpod/$TODAY.jpg

Σε κάτι που υπάρχει στον υπολογιστή σου. Αν πχ στο home σου έχεις το φάκελο "Pictures", μπορείς να φτιάξεις εκεί ένα υποφάκελο "ngpod" (ή όπως αλλιώς θες), κ μετά να προσαρμόσεις τη παραπάνω γραμμή σε:

wget $img_location -O ~/Pictures/ngpod/$TODAY.jpg

(Afbeeldingen = εικόνες στα ολλανδικά)

Φυσικά το προσαρμόζεις όπως θες για να αποθηκεύει τις εικόνες εκεί που θες να τις έχεις.

Στη συνέχεια, πρέπει να πειράξεις άλλη μια γραμμή:

gconftool-2 -t string -s /desktop/gnome/background/picture_filename "/home/vincent/Afbeeldingen/ngpod/$TODAY.jpg"

Το τελευταίο τμήμα της γραμμής "δείχνει" εκεί που έχει αποθηκευτεί η εικόνα. Ότι έβαλες στη προηγούμενη αλλαγή, πρέπει να το βάλεις κ εδώ. Πχ:

gconftool-2 -t string -s /desktop/gnome/background/picture_filename "~/Pictures/ngpod/$TODAY.jpg"

Αν δεν πιάσει αυτό (αλλά δεις ότι η εικόνα κατεβαίνει στο φάκελο που είπες), άλλαξε το "~" με το πλήρες path του home σου (πχ /home/smooth). Εκτός κ αν το σε λένε vincent :D

-- gnu_labis

Το Linux ΔΕΝ είναι Windows!!!

ulver]
δεν μπορω να σε βοηθησω με το script αλλα αν θες καποια εφαρμογη εναλλαγης foto,δοκιμασε και το desktop nova.

http://killingtimegr.blogspot.com/2010/10/desktop-nova.html

Ευχαριστώ , θα το δοκιμάσω.

gnu_labis]
Αν δεν πιάσει αυτό (αλλά δεις ότι η εικόνα κατεβαίνει στο φάκελο που είπες), άλλαξε το "~" με το πλήρες path του home σου (πχ /home/smooth). Εκτός κ αν το σε λένε vincent :D

Δούλεψε! Ευχαριστώ. Έπρεπε να το μελετήσω καλύτερα.

Τίποτα! Παίρνει μερικές βελτιώσεις πάντως το script.

Πχ, αν η εικόνα δεν έχει αλλάξει, θα την ξανακατεβάσει τσάμπα, ενώ θα μπορούσε να το αποφύγει.

Επίσης, τί γίνεται με τις παλιές εικόνες, είναι σωστό να μένουν κ να μαζεύονται; Μάλλον εξαρτάται από τα γούστα του χρήστη...

-- gnu_labis

Το Linux ΔΕΝ είναι Windows!!!

Η εικονα κατεβενει κανονικα στον φακελο που ορισα, αφερει το παλιο wallpaper αλλα δεν βαζει το καινουριο αυτο που κατεβηκε?

Δημιουργει προβληματακια αυτο το script και καθυστερει γενικοτερα το desktop.

Μαλιστα επειδη δε λειτουργουσε καλα, απεφυγα και να το παρουσιασω στο Yaglb.

Πιο καλα καποια εφαρμογη που κανει αυτη τη δουλεια. 

Σε αρκετες αλλωστε μπορεις να τους ορισεις και on-line wallpapers να προβαλλουν, αρα εχει και τα National Geographic.

Αν θες καποιους τροπους για κινουμενη επιφανεια εργασιας δε αυτα:

1ος και 2ος τρόπος
3ος τρόπος
4ος τρόπος
5ος τρόπος
6ος τρόπος
7ος τρόπος

8ος τρόπος

 
Η σειρα ειναι τυχαια.

 

YET ANOTHER GREEK LINUX BLOG

Οκ το γνωρίζω ότι υπάρχουν εφαρμογές που κάνουν την ίδια δουλειά. Απλά ρώτησα γιατί το συγκεκριμένο σκριπτ δεν δούλεψε όπως έπρεπε στο σύστημα μου.
Έκανα κάνα δυο πειράματα δεν δούλεψαν, άλλα δεν το έψαξα λίγο καλύτερα ακόμη.

Constantinos]

Δημιουργει προβληματακια αυτο το script και καθυστερει γενικοτερα το desktop.

Γιατί το λες αυτό Κωνσταντίνε; Όσο το είδα (όχι κ πολύ είναι η αλήθεια), τρέχει όποτε το εκτελείς, κάνει τη δουλειά του, κ κλείνει. Το wallpaper το ορίζει με μια κλήση στο gconftool, κ αυτά...

Συμφωνώ ότι υπάρχουν καλύτεροι (κ έτοιμοι) τρόποι, απλά δεν καταλαβαίνω γιατί λες ότι "καθυστερεί το dekstop". Μπορείς να το εξηγήσεις λίγο καλύτερα;

-- gnu_labis

Το Linux ΔΕΝ είναι Windows!!!

Δουλεύει στο δικό μου.

 Δηλαδή:

 

 

 

#!/bin/sh

#Based on code of APOD, you can really find everywhere on the web.

 

  #Downloading html of the Picture-Of-The-Day

  wget -N http://photography.nationalgeographic.com/photography/photo-of-the-day/ -O /tmp/ngpod.html

 

      #Getting the URL of the image

       img_location=`egrep -o "http://[^<]*1600x1200[^>]*\.jpg" /tmp/ngpod.html`

 

       rm /tmp/ngpod.html

 

             

                #Download image

                TODAY=$(date +'%Y%m%d')

                wget $img_location -O   /home/όποιο φάκελο θέλεις/$TODAY.jpg

 

                    

                       # Setting background-image.

                       # NB: Use an absolute URL

                        gconftool-2 -t string -s /desktop/gnome/background/picture_filename "/home/όποιο φάκελο θέλεις/$TODAY.jpg"

                        gconftool-2 -t string -s /desktop/gnome/background/picture_options "stretched"

                        # Possible values are "none", "wallpaper" (eg tiled), "centered", "scaled", "stretched", "zoom"

 

Θα αλλάξεις μόνο την φράση   όποιο φάκελο θέλεις  με το αντίστοιχο φάκελο .

Το έβαλα στο Startup applications και δεν βλέπω πρόβλημα. Απλώς μου αρέσει καλύτερα από τα προγράμματα γιατί

1) δεν θέλω οι πολλές φωτογραφίες να μου πιάνουν  χώρο στο σκληρό δίσκο

2) μου αρέσουν οι φωτογραφίες του Νational Geographic και δεν μπόρεσα να το κάνω με τα παραπάνω προγράμματα.

Και είναι μια ευκαιρία να μάθω να γράφω scripts . Θα ήθελα να κατεβάζει από τις επιλογές που έχουν κάνει http://ngm.nationalgeographic.com/your-shot/wallpaper .

Αν καταφέρω κάτι καλύτερο θα το ανεβάσω.

Δηλαδη αν το βαλω στο startup θα αλλαξει το wallpaper ? Μισο να το δοκιμασω.

Μπα μια απο τα ιδια αφερει ναι μεν το παλιο αλλα δεν το αλλαζει με το καινουριο. Μηπως παιζει κατι με τα δικαιωματα τον φακελον? Η μηπως χρειαζεται καποιο πακετο που δεν το εχω?

Οκ το βρήκα το λάθος μου αντί για :

/home/username/pictures/$TODAY.jpg

εβαζα 

~/pictures/$TODAY.jpg

το άλλαξα και όλα Οκ, μάλιστα το έβαλα στο δεξί κλικ του ναυτίλου, όποτε αν βαρεθεί το wallpaper δεξί κλικ και αλλαγή. Θα προσπαθήσω να μην κατεβάζει την ίδια εικόνα εάν ήδη υπάρχει όπως και επιλογή για να σβηνούν οι παλαιότερες.

 

Να προτείνω κάτι? Τι θα λέγατε εάν στο αρχικό σκριπτ προσθετέ ο καθένας ότι θεωρεί καλύτερο και στο τέλος κατά κάποιο τρόπο να βγει ένα σκριπτ από αυτό εδώ το φόρουμ? Μια σκέψη που μου ήρθε μόλις τώρα..........

Σήμερα δεν δουλεύει.

Edit: Λοιπόν, το sctipt αυτό είναι ένα καλό παράδειγμα για τι μπορεί να πάει στραβά σε ένα πρόγραμμα. Το NG στην σελίδα που ορίσαμε να βρει την φωτό , δεν έβαλε φωτό με 1600x1200 και επομένως δεν πληρεί τα κριτήρια του egrep και βγάζει μαύρη οθόνη.Σε όλες τις προηγούμενες υπάρχει! Πρέπει να βρούμε άλλα κριτήρια.

Από μια γρήγορη ματιά που έριξα στο html, φαίνεται ότι η τρέχουσα εικόνα είναι μεταξύ:

 <div class="primary_photo">
...
...
</div><!-- .primary_photo-->

Μάλλον αυτό το "primary photo" πρέπει να βρεις πρώτα, κ μετά να ψάξεις ανάμεσα για τη γραμμή που αρχίζει με "img src" κ να κρατήσεις το URL της εικόνας.

Σίγουρα γίνεται με grep/sed/awk κ δε συμμαζεύεται, αλλά είναι πολύ πιο εύκολο αν έχεις ένα html parser. Script σε python/perl κλπ θα ήταν το ιδανικό.

Ξέρει κανείς αλήθεια αν υπάρχει κάτι σε απλό html parser σε command line μορφή, κάτι δηλαδή που να μπορεί να ενσωματωθεί σε shell script;

-- gnu_labis

Το Linux ΔΕΝ είναι Windows!!!

Πως θα φτιάξω το όνομα ενός αρχείου από μεταβλητές;
Δηλαδή έχω αυτά:

YEAR=$(date +'%y')
MONTH=$(date +'%m')
MONTHSTR=$(date +'%b')
DAY=$(date +'%d')

και θέλω να φτιάξω κάτι τέτοιο: FILENAME= $MONTHSTR $YEAR wallpaper-$DAY_1600.jpg . Πως είναι ο σωστός τρόπος;

Είσαι σχεδόν σωστός. Χρειάζονται εισαγωγικά για τους "κυριολεκτικούς" χαρακτήρες. Μόνο οι μεταβλητές πρέπει να είναι εκτός εισαγωγικών. Πχ:

YEAR=$(date +'%y')
MONTH=$(date +'%m')
MONTHSTR=$(date +'%b')
DAY=$(date +'%d')

FILENAME=$MONTHSTR" "$YEAR" wallpaper-"$DAY"_1600.jpg"

echo $FILENAME

Το echo το έβαλα στο τέλος για να δοκιμάσω ότι δουλεύει.

Καλό είναι τα αρχεία να μην έχουν κενά στο όνομα τους. Προτίμησε το underscore ("_") αν θες να χωρίσεις λέξεις.

Επίσης, θα σε συμβούλευα να τα ονομάσεις ακολουθώντας για την ημερομηνία κάτι σαν τη μορφή YYYYMMDD_name.jpg (πχ 20101225-ngpod.jpg), γιατί έτσι η αλφαβητική σειρά των αρχείων (πχ η έξοδος της εντολής ls) θα συμπίπτει με τη χρονολογική σειρά. Έτσι όπως πας να τα ονομάσεις τώρα, θα είναι ανάκατα μέσα στο φάκελο που τα σώζεις (o Δεκέμβριος -πχ- είναι αλφαβητικά πριν το Νοέμβριο).

Μπορείς να το κάνεις αυτό πολύ απλά δίνοντας:

DATE=$(date +'%Y%m%d')

FILENAME=$DATE"_ngpod.jpg"

echo $FILENAME

-- gnu_labis

Το Linux ΔΕΝ είναι Windows!!!

Ευχαριστώ gnu_labis για την βοήθεια. Επιτέλους ξεκίνησα να γράφω κάτι στο linux! Το αγώι ξυπνάει το χωριάτη.
Έφτιαξα άλλο script που πάει στην σελίδα για wallpapers του NG και τρέχει μια χαρά .Θα τα συνδυάσω με το προηγούμενο για περισσότερες επιλογές.Βέβαια , σκέφτομαι να υπάρχει ένα όριο , να μην διαλέγει ο άλλος ατέρμονα φωτογραφίες.