Kirjoittaja Aihe: Pienet näppärät scriptit (bash, python, perl yms.)  (Luettu 120177 kertaa)

Marbo

  • Käyttäjä
  • Viestejä: 427
    • Profiili
    • Toimi.org
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #100 : 07.05.08 - klo:20.43 »
#IhQ kikkare hakee irc-galleriasta satunnaisia kuvia ja avaa niitä 3 sekunnin välein eog-ohjelmalla
#scriptistä pääsee pois Ctrl+c :)
#eog täytyy olla asennettuna(jos ei ole niin: sudo apt-get install eog)
#en ota vastuuta menetetyistä tiedostoista

#!/bin/bash
cd                              #siirrytään kotihakemistoon
mkdir KuvatXyZklM   # tehdään väliaikaistiedosto, ettei poisteta .jpg-tiedostoja
cd KuvatXyZklM
while true; do            #tästä alkaa loputon looppi
OSOITE=`lynx -source http://irc-galleria.net/random.php | grep jpg | tail -1 | cut -d " " -f4 | cut -d "=" -f2 | sed 's/"//g'`
wget $OSOITE
eog *.jpg &
sleep 3
killall eog
rm *.jpg
done





Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..

Koodia: [Valitse]
#!/bin/bash

cd
mkdir -p ~/KuvakeRandomi
cd ~/KuvakeRandomi
while true;do
w3m -no-cookie -dump_source http://kuvake.net/kk.php?mode=girls | grep jpg  > url.txt
osoite=`cat url.txt | grep jpg | cut -d '"' -f8 | cut -d '"' -f9`
wget -q $osoite
eog *.jpg &
sleep 3
killall eog
rm *.jpg
rm url.txt
done

Linux user #460798

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #101 : 07.05.08 - klo:20.52 »
Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..
Kuulostaa vähän pedofiilin hommilta... ::) Pedofiilis?
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Marbo

  • Käyttäjä
  • Viestejä: 427
    • Profiili
    • Toimi.org
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #102 : 07.05.08 - klo:20.55 »
Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..
Kuulostaa vähän pedofiilin hommilta... ::) Pedofiilis?


Eiii välttämättä, kuka hetero poika jaksaapi katella poikien kuvia ruudullaan kun voi katella pelkkiä tyttöjä? :) En ainakaan minä.

Linux user #460798

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #103 : 07.05.08 - klo:21.44 »
Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..
Kuulostaa vähän pedofiilin hommilta... ::) Pedofiilis?


Eiii välttämättä, kuka hetero poika jaksaapi katella poikien kuvia ruudullaan kun voi katella pelkkiä tyttöjä? :) En ainakaan minä.
Juu totta, en minä myöskään. :) Tuli vaan mieleen että nyt joku pedofiili ottaa tuosta mallia ja alkaa tutkimaan sopivaa uhria. Okei "vähän" hölmö juttu. ;D
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #104 : 08.05.08 - klo:14.12 »
Jos joku käyttää mplayerthumbsia (KDE) tekemään videoista pienoiskuvakkeet ja ole tyytyväinen otokseen, niin eipä hätää  :D.
Eli mplayerthumbs siis napsii satunnaisesta kohtaa videota esikatselun. Tai no ei aivan satunnaisesti, sillä se jättää tietyn osan alusta ja lopusta huomioimatta. DigiTV:n tallenteet kannattaa siirtää mustalle listalle  ajamalla mplayerthumbsconfig.
/usr/local/bin/rmthumbs
Koodia: [Valitse]
#!/bin/bash
cd $(dirname $1)
kansio=$(pwd)
for i in $@
do
MD5=$(echo -n "file://$kansio/$(basename $i)"|md5sum|cut -d " " -f1)
rm $HOME/.thumbnails/normal/$MD5.png $HOME/.thumbnails/large/$MD5.png
done
chmod a+x  /usr/local/bin/rmthumbs

Kandidaatteja:
$HOME/.kde/share/konqueror/servicemenus/rmthumbs.desktop
$HOME/.kde/share/d3lphin/servicemenus/rmthumbs.desktop
$HOME/.kde/share/dolphin/servicemenus/rmthumbs.desktop
Koodia: [Valitse]
[Desktop Entry]
ServiceTypes=video/*
Actions=poista;
[Desktop Action poista]
Name=Tee esikatselu uudelleen
Exec= rmthumbs  %f
Icon=video

Muoks kirotusvihre
« Viimeksi muokattu: 08.05.08 - klo:14.25 kirjoittanut UbunTux »
KDE neon
Uudempaa KDE:tä Ubuntulla

ooo

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #105 : 09.05.08 - klo:16.03 »
Meidän suvun seniori ei sitten millään oppinut miten valitaan ja raahataan tiedostoja mp3-soittimelle (ks. http://forum.ubuntu-fi.org/index.php?topic=13189). Onneksi tästä ketjusta tuli vastaan uusi tuttavuus, eli zenity. Sen avulla tein pikaisesti tällaisen bash-skriptin, joka oli riittävän yksinkertainen kyseiselle eläkeläiselle.

Koodia: [Valitse]
#!/bin/bash
#
# Tämän skriptin avulla voidaan lisätä musiikkia tai poistaa musiikkia
# kannettavalta soittimelta.
#
# Tälle skriptille pitää antaa suoritusoikeudet komentamalla:
# chmod u+x soittimen_hallinta.sh
#
# Tämä skripti ajetaan komennolla:
# ./soittimen_hallinta.sh


# Muuta seuraavat kaksi riviä vastaamaan haluamiasi asetuksia:
kohde="/media/KINGSTON/" # Tämä on soittimen mounttauspiste.
kohdenimi="KINGSTON" # Tämä on edellisen rivin polun viimeisen 'kansion' nimi. Tätä tarvitaan mounttauksen tarkistamiseen.
lahde="/home/koti/" # Tämä on kansio, jossa musiikki on kovalevyllä.




function lopetus() {

fuser -k "$kohde"

zenity --info \
--title="Poistuminen ohjelmasta" \
--text=" Ennen kuin irrotat soittimesi johdon\n tietokoneesta, muista ensin irrottaa soitin, jne..."  # Tähän vielä tarkemmat ohjeet miten tehdään työpöydältä.

exit
}




# Testataan onko soitin mountattu.
lista=`df | grep -o "$kohdenimi"`

if [ "$lista" != "$kohdenimi" ]; then
zenity --warning \
--text=" SOITINTA EI ILMEISESTI OLE\n LIITETTY TIETOKONEESEESI.\n\n Liitä soitin johdolla tietokoneeseesi\n ja käynnistä tämä ohjelma uudelleen."
exit
fi



vaihtoehto1="Lisää musiikkia soittimeen"
vaihtoehto2="Poista musiikkia soittimesta"
vaihtoehto3="Näytä soittimella nyt oleva musiikki listana"


while [ "1" ] # Tehdään looppi, jota jatketaan kunnes zenityn exit coden mukaan lopetetaan (ks. rivit alempana).
do

clear

valittutoiminto=$(
zenity --list \
--height "400" \
--width "400" \
--text " Tätä ohjelmaa voit käyttää kannettavan\n soittimesi musiikin lisäämiseen ja/tai poistamiseen.\n Laita rasti ruutuun ja valitse sitten OK." \
--title "Kannettavan soittimen musiikki" \
--radiolist \
--column "Valinta" \
--column "Toiminto" \
FALSE "$vaihtoehto1" \
FALSE "$vaihtoehto2" \
FALSE "$vaihtoehto3"
)

if [ "$?" != "0" ]; then
lopetus
fi


if [ "$valittutoiminto" == "$vaihtoehto1" ]; then

zenity --warning \
--text=" MUSIIKIN LISÄÄMINEN SOITTIMEESI\n\n Voit valita useita kansioita pitämällä\n Ctrl-näppäimen pohjassa ja klikkaamalla hiirellä\n sitten useiden kansioiden nimiä."

tiedostot=`zenity --file-selection --filename="$lahde" --directory --multiple --title="Valitse KOPIOITAVAT kansiot"`

cp -f -r --reply=yes "$tiedostot" "$kohde" | zenity --progress --pulsate --auto-close \
        --title="Kopioidaan" --text=" Musiikkia kopioidaan soittimellesi.\n Odota kunnes tämä ikkuna\n sulkeutuu automaattisesti."

if [ "$?" != "0" ]; then
zenity --error --text="Kopiointi keskeytyi."
fi

clear
fi



if [ "$valittutoiminto" == "$vaihtoehto2" ]; then

zenity --warning \
--text=" MUSIIKIN POISTAMINEN SOITTIMESTASI\n\n Voit valita useita kansioita pitämällä\n Ctrl-näppäimen pohjassa ja klikkaamalla hiirellä\n sitten useiden kansioiden nimiä."

tiedostot=`zenity --file-selection --filename="$kohde" --directory --multiple --title="Valitse POISTETTAVAT kansiot"`

rm -f -r "$tiedostot"

clear
fi


if [ "$valittutoiminto" == "$vaihtoehto3" ]; then

ls $kohde | zenity --text-info --title "Soittimellasi nyt olevat kansiot"

clear
fi


done


Pari kauneusvirhettähän tuossa koodissa on:
1) Zenity progress bar ei kopioitaessa liiku, mutta toimii hyvänä popuppina joka kertoo, että jotain sentään tapahtuu.
2) 'Popuppeja' on sinänsä liikaa, mutta satunnaiselle käyttäjälle lienee ihan ok että ennemmin saa ohjeita kaikkeen.
3) Tämä kopioi vain kokonaisia kansioita. Yksittäiset biisit oli jo liian vaikeaa seniorille  ;D
4) Ilman sudoa ei soitinta saa (helposti) mountattua, joten laitoin vain ohjeet siihen miten se tehdään.
5) Alussa tarkistetaan onko soitin mountattu, se voitaisiin varmaan tehdä nätimminkin.

Kertokaapa toki parannuksia.
« Viimeksi muokattu: 18.05.08 - klo:21.11 kirjoittanut ooo »
______________________________
Minäkö tyhmä? Nyt en ymmärrä.

vellu@vmach

  • Käyttäjä
  • Viestejä: 348
  • Kiroitusvirheitä jo vuodesta feisty
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #106 : 12.07.08 - klo:13.29 »
Onnistuukohan turhien pakettien poisto anacronin kautta? Väsäilin tällaisen skriptinpätkän, jonka laitoin /etc/cron.weekly -hakemistoon. Tässä käytin aptitude cleania, mutta epäilen sen toimivuutta koska sehän kysyy että poistetaanko paketit Y/n. Olisko muuta tapaa? btw, kumpaa olisi parempi käyttää nohupia vai &-merkkiä lopussa?
Koodia: [Valitse]
#!/bin/bash

# - Viikottaiset ajastetut toiminnat -
# 1. Ylimääräisten pakettien poisto

# nohup aptitude clean &
# echo "Viikottainen aptitude clean suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi

# 2. Vanhojen conffitiedostojen poisto, lainattu ubucleaneristä

OLDCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')
nohup aptitude purge $OLDCONF &
echo "Viikottainen vanhojen conf-tiedostojen poisto suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi

# 3. Locaten databeissin päivitys

nohup updatedb &
echo "Viikottainen updatedb locatelle suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi
                                         
echo "---------------------------------" >> /home/vellu/dokit/anacronlogi

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #107 : 12.07.08 - klo:13.41 »
Koodia: [Valitse]
# 3. Locaten databeissin päivitys

nohup updatedb &
echo "Viikottainen updatedb locatelle suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi


eikös tuo ole hitusen päälekäinen locaten asentaman /etc/cron.daily/locate:n kanssa?
Janne

vellu@vmach

  • Käyttäjä
  • Viestejä: 348
  • Kiroitusvirheitä jo vuodesta feisty
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #108 : 12.07.08 - klo:14.33 »
Ei siellä /etc/cron.daily:ssä mitään locate tiedostoa ole. mlocate kylläkin, mutta se ei käsittääkseni päivitä mitään.

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #109 : 12.07.08 - klo:18.12 »
Ei siellä /etc/cron.daily:ssä mitään locate tiedostoa ole. mlocate kylläkin, mutta se ei käsittääkseni päivitä mitään.

no, minulla on ja minulla se tarjoaa ko. tiedoston:
Koodia: [Valitse]
# dpkg -L locate | grep cron
/etc/cron.daily
/etc/cron.daily/locate

tosin tuo mlocate on locaten uusi implementaatio, joten voisin varmaan poistaa tuon locaten kokonaan. siltikin...

Koodia: [Valitse]
$ ls -l `which updatedb`
lrwxrwxrwx 1 root root 26 2008-06-25 20:46 /usr/bin/updatedb -> /etc/alternatives/updatedb
$ ls -l /etc/alternatives/updatedb
lrwxrwxrwx 1 root root 25 2008-07-12 18:08 /etc/alternatives/updatedb -> /usr/bin/updatedb.mlocate

ja sattumoisin tuo /etc/cron.daily suorittaa komennon /usr/bin/updatedb.mlocate jos se on olemassa ja säätää vielä sen prioriteettia jos /usr/bin/ionice on olemassa.


Janne

vellu@vmach

  • Käyttäjä
  • Viestejä: 348
  • Kiroitusvirheitä jo vuodesta feisty
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #110 : 12.07.08 - klo:23.45 »
Haikara studio 8.04:
Koodia: [Valitse]
root@v-machine:/home/vellu# ls -l 'which updatedb'
ls: cannot access which updatedb: No such file or directory
root@v-machine:/home/vellu# ls /etc/cron.daily/
0anacron  aptitude      find       mlocate            standard
apport    bsdmainutils  logrotate  OMA-dailyskripti   sysklogd
apt       exim4-base    man-db     OMA-dailyskripti~
root@v-machine:/home/vellu# ls -l /etc/alternatives/updatedb
lrwxrwxrwx 1 root root 25 2008-07-07 02:33 /etc/alternatives/updatedb -> /usr/bin/updatedb.mlocate
root@v-machine:/home/vellu# cat /etc/cron.daily/mlocate
#! /bin/sh

set -e

[ -x /usr/bin/updatedb.mlocate ] || exit 0

# See ionice(1)
if [ -x /usr/bin/ionice ]; then
    IONICE="/usr/bin/ionice -c3"
fi

$IONICE /usr/bin/updatedb.mlocate
root@v-machine:/home/vellu# dpkg -L locate | grep cron
Package `locate' is not installed.
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #111 : 13.07.08 - klo:00.00 »
Haikara studio 8.04:
Koodia: [Valitse]
root@v-machine:/home/vellu# ls -l 'which updatedb'
ls: cannot access which updatedb: No such file or directory

hipsut on väärin. `-hipsuilla sisällä olevan komento suoritetaan '-hipsuilla ei.


Koodia: [Valitse]
[ -x /usr/bin/updatedb.mlocate ] || exit 0

tuossa tarkistetaan onko tiedostolla /usr/bin/updatedb.mlocate suoritusoikeudet (ja onko scripti olemassa), jos ei niin lopetetaan. käytännös tuo on totta jos mlocate on asennettu.

Koodia: [Valitse]
# See ionice(1)
if [ -x /usr/bin/ionice ]; then
    IONICE="/usr/bin/ionice -c3"
fi

tuossa puolestaan tarkistetaan on sama kuin aikaisemmin ionicelle ja jos se täyttää ehdot, sijoitetaan se komennoksi IONICE-muuttujaan.

Koodia: [Valitse]
$IONICE /usr/bin/updatedb.mlocate

tässä suoritetaan /usr/bin/updatedb.mlocate joko ionicen kanssa tai ilman ja kuten tuossa aikaisemmassa postauksessani totesin, se sinun suorittamasi updatedb on linkki toiseen linkkiin /etc/alternatives/updatedb joka osoittaa täsmälleen samaan tiedostoon kuin minkä tuo mlocate-scriptikin tuolla cron.dailyssä suorittaa.
Janne

eDIT

  • Käyttäjä
  • Viestejä: 319
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #112 : 23.07.08 - klo:22.37 »
Mikä on komento jos haluaa tietää onko paketti asennettu? Siis kaipaisin sellasta yksinkertasta että jos asennettu niin tulostaa vaan esim. että 'installed' ja jos ei niin ei tulosta mitään.

anttimr

  • Käyttäjä
  • Viestejä: 1625
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #113 : 23.07.08 - klo:22.41 »
apt-cache policy paketin_nimi
Ubuntu 12.10 Quantal Quetzal

eDIT

  • Käyttäjä
  • Viestejä: 319
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #114 : 23.07.08 - klo:23.28 »
Joo-o mutta koska on menossa skirptiin, jota mahdollisesti käytetään muunkin kuin suomen kielisissä ubuntuissa on tuo vähän hankala ja turha ruveta grep:in kautta pistämään..

anttimr

  • Käyttäjä
  • Viestejä: 1625
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #115 : 23.07.08 - klo:23.38 »
Ainiin, olihan myös
dpkg --get-selections paketin_nimi

Palauttaa vastauksena 1. kentässä paketin nimen ja toisessa tilasta riippuen install / deinstall / purge /  mahdollisesti jotain muuta. Tai ilmoituksen, jos pakettia ei löydetty (joskus asennetuista). Hardyssä ilmoitus on suomeksi.

Skriptin voi varmasti kirjoittaa siten, että kielellä ei ole väliä. Shellissä toimivien ohjelmien suomentaminen tuppaa silti harmittamaan. 
« Viimeksi muokattu: 23.07.08 - klo:23.53 kirjoittanut anttimr »
Ubuntu 12.10 Quantal Quetzal

eDIT

  • Käyttäjä
  • Viestejä: 319
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #116 : 23.07.08 - klo:23.53 »
Kiitos! Tämä näyttää toimivan.. heitin perään  '| grep -o install' yksinkertaistaakseni hieman  :)

ooo

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #117 : 28.07.08 - klo:22.02 »
Tämä Gimpin Script-Fu toiminto avaa kaikki kansiossa olevat jpg-kuvat (huom. _vain_ jpg-kuvat), muuttaa niiden koon halutuksi (ks. graafinen käyttöliittymä) ja antaa halutun määrän unsharp maskia ja tallentaa kuvat samaan kansioon jpg-muodossa (laadun voi määrätä) joko korvaten vanhat tiedostot tai lisäten nimen perään loppuliitteen (esim. tiedosto.jpg tai tiedosto-uusi.jpg)

Toimii itselläni Ubuntu 8.04:n Gimp 2.4.5:ssä ja (pienellä muokkaamisella?) muissakin versioissa.

Lähteinä / mallina käytin mitä netistä googlella löysi.


Ohje:
1) Tallenna koodi kotihakemistosi .gimp-2.4/scripts kansioon esim. nimelle batch_resize.scm
2) Avaa Gimp.
3) Valitse Laajennokset-valikosta Script-Fu -kohdan alta Päivitä skriptit.
4) Jatkossa voi aina avata tämän skriptin Gimpin Laajennokset-valikon kohdan Muut alta.


Koodia: [Valitse]

(define (script-fu-batch-scale-ratio globexp type suffix maxdimhoriz maxdimvertic jpgqual manus radius amount threshold)
 
    (define (resize-img n f)

        (let*     ((fname (car f))
                (img (car (gimp-file-load 1 fname fname))))
     
        (let* (           
            ; Seuraavat rivit lisäävät tallennettavan tiedoston nimeen halutun lisäyksen.
            (filename (car (gimp-image-get-filename img)))
            (basename (substring filename 0 (- (string-length filename) (+ 1 (string-length type)))))
            (outputfname (string-append basename (string-append (string-append suffix ".") type)))
                                   
            (drawable   (car (gimp-image-active-drawable img)))
            (cur-width  (car (gimp-image-width img)))
            (cur-height (car (gimp-image-height img)))
            (ratio      (min (/ cur-width cur-height)))
           
               (new-width maxdimhoriz)
              (new-height (/ new-width ratio))
        )
       
        ; Jos kuva onkin pystykuva, niin lasketaan uudet mitat uudestaan.
        (if (< cur-width cur-height)
              (begin
                  (set! new-height maxdimvertic)
                  (set! new-width (* new-height ratio))
              )
           )
   
        (gimp-image-undo-disable img)
        (gimp-image-scale img new-width new-height)
                           
        ; Käytetään unsharp maskia terävöittämään kuvaa haluttu määrä.
        (plug-in-unsharp-mask manus img (car (gimp-image-active-drawable img)) radius amount threshold)
       
        ; Tallennetaan kuva. Huomaa, että tässä jpg-laadun pitää olla välillä 0..1.                   
        (file-jpeg-save 1 img (car (gimp-image-get-active-drawable img)) outputfname outputfname (/ jpgqual 100) 0 0 0 "" 0 0 0 0)
        (gimp-image-delete img)
      )
    )
 
    (if (= n 1) 1 (resize-img (- n 1) (cdr f)))
  )
 
   
  ; Lisätään polkuun vielä loppuosa, jotta haetaan siis vain kansiossa olevat halutun tyyppiset kuvat.
  (set! globexp (string-append globexp "/*."))
  (set! globexp (string-append globexp type))
 
  (let* ((files (file-glob globexp 0)))
     (resize-img (car files) (car (cdr files))))
)



; Rekisteröidään skripti GIMP:ssä ja määritellään sen sijainti valikossa.
(script-fu-register "script-fu-batch-scale-ratio"
    _"_Muuta jpg-kuvien kokoa - batch resize & unsharp mask"
    "Muuta valitsemasi kansion kuvien kokoa, terävöitä ne ja tallenna ne jpg-muodossa."
    "Teppo Terävä"
    "2008, Teppo Terävä"
    "Jul 25, 2008"
    ""
    SF-DIRNAME "Kansio" "~"
    SF-STRING "Avattavien kuvien pääte (jpg, JPG, jpeg)" "jpg"
    SF-STRING "Lisää nimiin loppuosa (tyhjä kenttä = korvataan tied.)" "-uusi"
    SF-VALUE "VAAKAkuvien uusi leveys (px)" "650"
    SF-VALUE "PYSTYkuvien uusi korkeus (px)" "650"
    SF-ADJUSTMENT "Tallennettavan tiedoston JPG-laatu" '(86 0 100 1 1 0 0)
    SF-TOGGLE "Rasti, jos unsharp maskille käytetään alla olevia arvoja" TRUE
    SF-VALUE "Unsharp maskin säde" "0.1"
    SF-VALUE "Unsharp maskin määrä" "0.75"
    SF-VALUE "Unsharp maskin kynnysarvo" "0"
)
(script-fu-menu-register "script-fu-batch-scale-ratio"
          "<Toolbox>/Xtns/Misc")

______________________________
Minäkö tyhmä? Nyt en ymmärrä.

Ville Pöntinen

  • Käyttäjä
  • Viestejä: 2078
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #118 : 11.09.08 - klo:22.43 »
Tervehdys!

Kun en mitään osaa, kopioin muualta ja kyselen sitten täällä neuvoja  :D



Olen vähän kustomoinut koneeni koteloa ja tuli tarve saada cd-asema avattua hiirellä.

(Jos asemassa on levy, saa aseman avattua valitsemalla "Irrota" esim. työpöydältä. Mutta entäs silloin, kun ei ole?)

Löysin täältä https://help.ubuntu.com/community/EjectCDLauncher ohjetta.

Tässä ohje vapaasti suomennettuna:


Luodaan ja avataan tiedosto:

Koodia: [Valitse]
gksudo gedit /usr/local/bin/eject_cd
Liitetään seuraava teksti:

Koodia: [Valitse]
#
# Try to unmount a CD-Rom device, then eject it.
#

DEVICE="$1"
ZENITY_BIN="/usr/bin/zenity"


#Ctrl-C trapping
trap ctrlc INT
ctrlc()
{
echo -e "\nAborted by user."
rm -rf $TMP_DIR
exit 2
}


#Show a dialog with zenity
#@param  string  The text to display
show_dialog()
{
if [ "$use_zenity" -gt "0" ] ; then
zenity --error --title "CD-Rom eject" --info-text "$1"
fi
}


#Get parameters
if [ "$1" == "-h" ] || [ "$1" == "--help" ] ; then
echo "Usage: eject_cdrom [-q] DEVICE"
echo -e "Try to unmount DEVICE then eject it if successful.\n"
echo "Possible parameters:"
echo -e "-h, --help\tdisplay this help and exit."
echo -e "-z, --zenity\tuse zenity to displays errors in dialog windows."
exit 0
fi

if [ "$1" == "-z" ] || [ "$1" == "--zenity" ] ; then
if [ ! -x "$ZENITY_BIN" ] ; then
echo "You must install zenity before that."
exit 1
fi
use_zenity="1"

device="$2"
else
use_zenity="0"
device="$1"
fi


#Device check
#TODO: Check if DEVICE is truly a device.
if [ ! -e "$device" ] ; then
echo "Parameter DEVICE is not a file."
exit 1
fi


echo "Trying to eject CD-Rom..."

#Unmount
umount "$device" 2>/dev/null
last_err="$?"

if [ "$last_err" -eq "1" ] ; then
msg="Cannot unmount device $device (busy)."
echo "$msg"
show_dialog "$msg"
exit 1
fi

#Eject
eject "$device"
last_err="$?"

if [ "$last_err" -ne "0" ] ; then
msg="Cannot eject device."
echo "$msg"
show_dialog "$msg"
exit 1
fi

exit 0

Tallennetaan ja suljetaan.

Annetaan tiedostolle ajo-oikeus:

Koodia: [Valitse]
sudo chmod +x /usr/local/bin/eject_cd
Ja (Gnome-) ohje kuvakkeen tekemiseen:

Napsauta hiiren oikeata paneelin päällä ja valitse "Lisää paneeliin". Napsauta "Muun sovelluksen käynnistin" ja paina Lisää.

Nimi: Avaa cd-asema
(*) Komento:

Koodia: [Valitse]
/usr/local/bin/eject_cd /dev/scd0
Vielä napsautus kuvakkeen päällä ja tekstiruutuun

Koodia: [Valitse]
/usr/share/icons/gnome/scalable/devices/drive-optical.svg
(Alkuperäisessä ohjeessa eri ikoni.)


Ja nyt se toimii. Kuvakkeen napsautuksella asema aukeaa oli siellä levy tai ei. Ja aukeaa vaikka kuuntelin Ramonessia cd-levyltä Rytmilaatikolla (Rytmilaatikko lopetti toiston ja asema aukesi.)



Ja sitten niiden neuvojen perään:

Itse scriptissä on kuitenkin erilaisia viestejä. Miten scriptiä voisi hioa, että mahdolliset virheet tulisivat näkyviin graafisesti? Kuvakkeen kautta käynnistettynä ne eivät "mene" minnekään vaan kuvake vain nytkähtää...

Entä miten scriptistä saisi sellaisen, että se imaisisi kelkan sisään jos se sattuukin olemaan auki?




(*)Tämä on alkuperäisessä ohjeessa eri tavalla. Siellä viitataan otukseen /dev/cdrom, jota ei ainakaan minulla ole. Minulla tutkailu meni seuraavasti:

Koodia: [Valitse]
ville@thepontiset:~$ ls /dev/cd* -la
lrwxrwxrwx 1 root root 4 2008-09-11 20:02 /dev/cdrom3 -> scd0
lrwxrwxrwx 1 root root 4 2008-09-11 20:02 /dev/cdrw3 -> scd0

Ja kokeillin scriptiä päätteessä:

Koodia: [Valitse]
ville@thepontiset:~$ /usr/local/bin/eject_cd /dev/scd0
Trying to eject CD-Rom...

Jolloin asema aukesi. Eli /dev/scd0 osoittaa (ainakin minulla) ainoaan cd-asemaani. Onkos tämä vakio nykyään? Ja mikäs tuommoinen cdrom3 oikein on? Olen kyllä tämänkin Ubuntu-asennuksen aikana vaihtanut cd-aseman tilalle uuden, mutten sentään kolmesti (logiikalla cdrom0 > cdrom1 > cdrom2 > cdrom3  ??? ). Eli tältä osin scripti vaatinee tarkistamista / käsityötä.

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #119 : 12.09.08 - klo:02.26 »
(Jos asemassa on levy, saa aseman avattua valitsemalla "Irrota" esim. työpöydältä. Mutta entäs silloin, kun ei ole?)
.
.
.
Entä miten scriptistä saisi sellaisen, että se imaisisi kelkan sisään jos se sattuukin olemaan auki?
Tuota kelpaako ratkaisuksi (man ejectin mukaan laitteistoriippuvainen):

Koodia: [Valitse]
#!/bin/bash
if   [  $(grep /dev/scd0 /etc/mtab|wc -l) -eq 0  ]; then
eject -T /dev/scd0
else
umount /dev/scd0 && eject /dev/scd0 && exit 0
        echo Ei onnistu
fi

zenity ei KDE:n käyttäjältä taivu  ;)
« Viimeksi muokattu: 12.09.08 - klo:02.29 kirjoittanut UbunTux »
KDE neon
Uudempaa KDE:tä Ubuntulla