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

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #120 : 12.09.08 - klo:02.35 »
Meikäläisellä flash alkoi  keittää yli  ::)
Pari skriptiä, joilla voidaan vähentää sen käyttöä.


Youtubelinkit on mukavinta avata tällä lisävirityksellä suoraan soittimeen:

Tarvitsee youtube-dl:n asennuksen
$HOME/.kde/share/apps/konqueror/servicemenus/tuubi.desktop
Koodia: [Valitse]
[Desktop Entry]
ServiceTypes=text/html
Actions=katso-mp4;katso-flv;tallenna-mp4;tallenna-flv
Icon=video
Encoding=UTF-8
X-KDE-Submenu=Lataa Youtube-video
[Desktop Action katso-mp4]
Name=Katso Youtube-video MPlayerillä (mp4)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u a mp4
Icon=video
[Desktop Action katso-flv]
Name=Katso Youtube-video MPlayerillä (flv)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u
Icon=video
[Desktop Action tallenna-mp4]
Name=Tallenna ja katso Youtube-video (mp4)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u lataa mp4
Icon=video
[Desktop Action tallenna-flv]
Name=Tallenna ja katso Youtube-video (flv)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u lataa
Icon=video

$HOME/.kde/share/apps/konqueror/servicemenus/youtube

Koodia: [Valitse]
#!/bin/bash
#käyttäjätunnus
kt=
#salasana
ss=
soitin=/usr/bin/smplayer
url=$1

a=0

while [ -f /tmp/ytdl-$a ]
do
a=$( expr $a + 1)
done

if [ "$3" = "mp4"  ]
then
youtube-dl  -b  -2 -g  -u $kt -p $ss "$url" &> /tmp/ytdl-$a
paate=".mp4"
else
youtube-dl  -2 -g  -u $kt -p $ss "$url" &> /tmp/ytdl-$a
paate=".flv"
fi

if [ "$(cat /tmp/ytdl-$a|grep 'Error:'|wc -l)" -gt "0" ]
then
kdialog --msgbox "Osoite on väärin"
exit 0
fi

nimi=$(cat /tmp/ytdl-$a  | head -n1|sed 's/ /_/g')

osoite=$(cat /tmp/ytdl-$a| tail -n1)

if [ "$2" = "lataa"  ]
then
kohde=$(kdialog --title "Mihin tallenetaan?" --caption youtube-dl --getexistingdirectory .)
else
kohde=/tmp
fi

rm /tmp/ytdl-$a
b=0
perusnimi=$nimi
while [  -f "$kohde"/"$nimi" ] || [  -f /tmp/$nimi.log ]
do
b=$( expr $b +  1 )
nimi=$perusnimi-$b
done

lataus="$kohde"/"$nimi""$paate"

wget "$osoite" -O $lataus 2>/tmp/$nimi.log&

while ! [ $(du  $lataus |awk '{print $1 }') -gt "500" ]
do
sleep 1
done


seuraa()
{
pros=0

dcopRef=$(kdialog  --icon video --caption "Ladataan" --progressbar "Ladataan videota" 100)
dcop $dcopRef setLabel Odota...
dcop $dcopRef showCancelButton true

until [ "$pros" -eq "99" ] || [ "$pros" -eq "100" ]
do
if test "true" == $(dcop $dcopRef wasCancelled)
then
dcop $dcopRef close
kill %1
rm /tmp/$nimi.log
exit 0
fi
sleep 0.5
#Prosentit
pros=$(cat /tmp/$nimi.log | grep %| sed -e 's/.*[.][.]//g' -e 's/ //g'| awk -F % '{ print $1 }'|sed -e 's/^[.]//g' | tail -n1)

#Nopeus:
nopeus=$(cat /tmp/$nimi.log | grep %| sed -e 's/.*[.][.]//g' -e 's/ //g'| awk -F % '{ print $2 }'| sed  -e 's/\([MK]\).*/\1/g' | tail -n1)

#Koko
koko=$(cat /tmp/$nimi.log | grep %| awk '{print $1}'| tail -n1)

#Aikaa jäljelllä
aika=$(cat /tmp/$nimi.log  | grep %| sed -e 's/[.][.]*.//g' |awk '{print $4}'| tail -n1)

dcop $dcopRef  setLabel ""$nimi": Ladattu: $koko Nopeus: $nopeus Aikaa jäljellä: $aika"
dcop $dcopRef setProgress $pros;

done
dcop $dcopRef close
rm /tmp/$nimi.log
}

seuraa&
$soitin $lataus

if ! [ "$2" = "lataa"  ]
then
rm $lataus
else
echo "Hyvää päivää kirvesvartta"
fi

Flashin tappaja Konqueroriin:

$HOME/.kde/share/apps/konqueror/servicemenus/tapaflash.desktop
Koodia: [Valitse]
[Desktop Entry]
Encoding=UTF-8
ServiceTypes=text/html
Actions=kill
X-KDE-Priority=TopLevel

[Desktop Action kill]
Name=Tapa flash
Icon=editdelete
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/tapaflash.sh %u

$HOME/.kde/share/apps/konqueror/servicemenus/tapaflash.sh
Koodia: [Valitse]
#!/bin/bash
killall nspluginviewer
killall npviewer.bin
KDE neon
Uudempaa KDE:tä Ubuntulla

beh

  • Käyttäjä
  • Viestejä: 154
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #121 : 12.09.08 - klo:11.16 »
Tervehdys!

Kun en mitään osaa, kopioin muualta ja kyselen sitten täällä neuvoja  :D
.
.
#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
}
.
.
echo -e "-z, --zenity\tuse zenity to displays errors in dialog windows."
.
.
1.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ää...

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

1. vastaus löytyi skriptistä itsestään. Siis laita vain käynnistimen komentoon lisäksi "-z".

2. En tiedä...

beh

  • Käyttäjä
  • Viestejä: 154
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #122 : 12.09.08 - klo:11.35 »
Meikäläisellä flash alkoi  keittää yli  ::)
Pari skriptiä, joilla voidaan vähentää sen käyttöä.
.
.

Samoin    ;D Firefoxin käyttäjille suosittelen Flashblock -lisäosaa.

Eilen tuli sitten kirjoitettua tämmöinen. Lähetysmitapa on hieman erilainen kuin sinulla. Tein tämän pääasiassa kokonaisten soittolistojen lataukseen. Vaikutti toimivan. youtube-dl tarvitaan.

 Tähänkin voisi tietysti ympätä Konquerorin service menun.

Koodia: [Valitse]
#!/bin/bash

#directory where youtube-dl is located (and where videos are downloaded)
tmpDir=~/youtube-dl
youtube_dl=$tmpDir/youtube-dl.py

    #youtube-dl's options, see youtube-dl's help for more information:
#Name template
nameTPL='%(title)s.%(ext)s'
#other options
otherOpts='-b'


    #Login information.
useLogin=false #change to true if necessary
username=""
password=""




collectIDs ()
{
    for arg in "$@"
    do
        if [ $(echo "$arg" | grep -c "youtube.com/watch?v=") == 1 ]
            then
            arg="${arg#*=}"
            arg="${arg%%&*}" #just video's id remains
            videoIDs="$videoIDs $arg"
        elif [ $(echo "$arg" | grep -c "youtube.com/view_play_list?p=") == 1 ]
            then
                getPlaylist $arg
        fi
    done
}


getPlaylist ()
{
    arg="${1#*[pP]lay*[lL]ist[&?]p=}"
    arg="${arg%%&*}" #playlist's id remains
    playlistUrl="http://www.youtube.com/view_play_list?p=$arg"

    #later used to store video id's of the playlist
    playlist="$(wget -q -O - $playlistUrl)"

    #count number of pages in the playlist
    if [ $(echo "$playlist" |  grep -c 'class="pager') == 0 ]
        then
        nPages=1
        else
        nPages="$(echo "$playlist" |  grep  'class="pager' | grep -v '>Next<' | tail -1 | \
                sed 's/^.*>\(.*\)<.*$/\1/')"
    fi

    #get video-ids from first page:
    playlist="$(echo "$playlist" | grep 'class="v90WideEntry">' | \
    sed 's/^.*watch?v=\(.*\)&.*'$arg'.*$/\1/' | sed 's/^\(.*\)&.*$/\1/')"

    #and from other pages if necessary:
    if [ $nPages -ge 2 ]
        then
        for i in `seq 2 $nPages`
        do
            playlist="$playlist $(wget -q -O - $playlistUrl"&page="$i | grep 'class="v90WideEntry">' | \
            sed 's/^.*watch?v=\(.*\)&.*'$arg'.*$/\1/' | sed 's/^\(.*\)&.*$/\1/')"
        done
    fi

    videoIDs="$videoIDs $playlist"
}


downloadVideo ()
{
    videoUrl='http://www.youtube.com/watch?v='$1

    if [ $useLogin == true ]
        then
        /usr/bin/python $youtube_dl --username=$username --password=$password \
        --output=$nameTPL $otherOpts $videoUrl
        else
        /usr/bin/python $youtube_dl --output=$nameTPL $otherOpts $videoUrl
    fi
}




#main
collectIDs $@

for id in $videoIDs
do
    downloadVideo $id
done

exit 0
« Viimeksi muokattu: 12.09.08 - klo:11.57 kirjoittanut beh »

Ville Pöntinen

  • Käyttäjä
  • Viestejä: 2078
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #123 : 13.09.08 - klo:13.07 »
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  ;)


Kelpaa, kiitos!

Mitenkäs saman saisi Windowsiin? Siellä olen vetänyt cd-asemasta kuvakkeen työpöydälle, mutta siinä ei kaksoisnapsautus tietenkään auta, vaan joudumme käyttämään hiiren oikeata + poista asemasta komentoa.

Ville Pöntinen

  • Käyttäjä
  • Viestejä: 2078
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #124 : 14.09.08 - klo:03.10 »
Ja nyt kun tänne kerran kirjoittelen:

Käytän shutdown, halt ja reboot komentoja ssh:n yli silloin tällöin töissäni, mutta voisiko koneen sammuttaa yhdellä kuvakkeella siististi? Esim. halt vain tappaa kaiken ennen sammutusta.

Eli millainen scripti sammuttaisi koneen niin, että käyttäjä kirjattaisiin ensin normaalisti ulos ja sitten sammutettaisiin kone? Eli Järjestelmä > Poistu > Sammuta klikkailua vastaava komento/scripti yhden painikkeen taakse?


retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #125 : 17.09.08 - klo:01.06 »
Eikö shutdown toimi tarpeeksi siististi?

Koodia: [Valitse]
gksudo shutdown -P now
En ole käyttänyt halt komentoa, mutta man sivun mukaan se kutsuu shutdown komentoa ellei erikseen kielletä. Samalla man sivulla mainitaan myös poweroff komento eli taitaisi riittää komento "gksudo poweroff" kuvakkeen taakse.

gdm

  • Sitä saa mitä tilaa...
  • Käyttäjä
  • Viestejä: 4363
    • Profiili
    • Keskustelualueiden säännöt
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #126 : 17.09.08 - klo:04.09 »
Eikö shutdown toimi tarpeeksi siististi?

Koodia: [Valitse]
gksudo shutdown -P now
En ole käyttänyt halt komentoa, mutta man sivun mukaan se kutsuu shutdown komentoa ellei erikseen kielletä. Samalla man sivulla mainitaan myös poweroff komento eli taitaisi riittää komento "gksudo poweroff" kuvakkeen taakse.

Komentoa gksudo käytetään graafisille ohjelmille.
sudo on tekstipohjaisille.
Lisää [Ratkaistu] aloitusviestiin jos ongelmasi selviää!
Saamasi tuki on ilmaista, joten älä vaadi tai uhkaile saadaksesi apua!

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #127 : 17.09.08 - klo:10.11 »
Siksi laitoinkin gksudo, puhe oli alasajokuvakkeesta ja tuo rimssu oli tarkoitettu launcherin command looraan.  ::)

kasleht

  • Käyttäjä
  • Viestejä: 104
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #128 : 21.09.08 - klo:16.55 »
Käytän tätä kuvanpiennennykseen: http://www.suuronen.org/kutista Nyt kuitenkin tarvis pienentää satoja kuvia jotka sijaitsee eri kansioissa. Elikkä milläs minä saan tuon kyseisen skriptin myös käymään läpi alihakemistoja?

Kokeilin käyttää tälläistä niitten kuvien käymiseen läpi mutta ongelman tuottaa välit ja ääkköset.
Koodia: [Valitse]
for kuva in `dir $PWD`
do
    uusi="$PWD$kuva"
    for ukuva in `ls $uusi`
    do
        if [ $kuva = *.jpg ]; then
            kutistakuva "$ukuva"
        fi
    done
done
tuon varmaan voisi tehdä järkevimminkin.... Ja tuossa if lauseesta en ole varma toimiiko se?

beh

  • Käyttäjä
  • Viestejä: 154
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #129 : 21.09.08 - klo:18.34 »
Tuo if-lause ei taida toimia. Kokeile tätä
if [ ${kuva##*.} = "jpg" ]

Ehto  toteutuu jos "kuva":n loppu on ".jpg".

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #130 : 21.09.08 - klo:18.46 »

Kokeilin käyttää tälläistä niitten kuvien käymiseen läpi mutta ongelman tuottaa välit ja ääkköset.


Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin... Lainausmerkkien käyttö saattaa auttaa.

rename 's/ /_/g','s/ä/a/g','s/ö/o/g','s/å/a/g','s/å/a/g','s/Ä/A/g','s/Ö/O/g','s/Å/A/g'  "tiedostonimi"
Sitten kun nuo on hoidettu voi lopullisen nimen putkittaa vaikka kunnolliseksi vaikka iconv:illa
iconv -c -f UTF-8 -t ASCII
Tuo siis poistaa kaiken muun hankalan merkistön nimestä.
poistaa nuo turvallisesti. Tällaiset asiat pitäisi toimia vuonna 2008.

« Viimeksi muokattu: 21.09.08 - klo:18.51 kirjoittanut UbunTux »
KDE neon
Uudempaa KDE:tä Ubuntulla

kasleht

  • Käyttäjä
  • Viestejä: 104
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #131 : 21.09.08 - klo:19.17 »
Siis miten mä nyt oikein saan noitten kuvien nimet muutettua kunnollisiksi. Kokeilin suorittaa tuon rename homman for silmukalla onnistumatta... Nuo kuvat jotka haluan pienentää viemästä liikaa tilaa on erään seuran kuvagalleria kuvia joita muut ovat sinne laittaneet ja monet eivät tosiaan ymmärrä että kansion ja tiedoston nimissä olevat ääkköset ja välilyönnit saattavat aiheuttaa ongelmia...

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #132 : 21.09.08 - klo:20.42 »
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #133 : 21.09.08 - klo:21.00 »
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?

Itseltä löytyy tällaisen tapainen pätkä yhdestä
Tuhon kun esim alkaa  polun osaksi Työpöytää tunkemaan niin rikkinäisiä linkkejä tulee 100 % varmasti.
for i in "$@"; do
   ln -s "$i" /tmp/älämölö
done
Linkitys toimii Työpöydän sisällä.

http://en.wikipedia.org/wiki/Coreutils#GNU_coreutils_capabilities

Muita ohjelmia: mplaex ei sulata välilöyntejä ollenkaan, eikä mmg ääkkösiä.
« Viimeksi muokattu: 21.09.08 - klo:21.19 kirjoittanut UbunTux »
KDE neon
Uudempaa KDE:tä Ubuntulla

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #134 : 21.09.08 - klo:23.58 »
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?

Itseltä löytyy tällaisen tapainen pätkä yhdestä
Tuhon kun esim alkaa  polun osaksi Työpöytää tunkemaan niin rikkinäisiä linkkejä tulee 100 % varmasti.
for i in "$@"; do
   ln -s "$i" /tmp/älämölö
done
Linkitys toimii Työpöydän sisällä.

En onnistunut toistamaan ongelmia. Tuo tuntui toimivan kaikissa kokeilemissani tapauksissa.

Lainaus
Muita ohjelmia: mplaex ei sulata välilöyntejä ollenkaan, eikä mmg ääkkösiä.

Tarkoitatko mplex:iä? Kyllä se minulla ymmärtää välilyönnit. Mmg ei edes ole komentoriviohjelma vaan GUI mkvmerge:lle ja jälkimmäinen puolestaan tuontui toimivan pikaisen testin perusteella sekä ääkkösten että välilyöntien kanssa.

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #135 : 22.09.08 - klo:00.51 »
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?

Itseltä löytyy tällaisen tapainen pätkä yhdestä
Tuhon kun esim alkaa  polun osaksi Työpöytää tunkemaan niin rikkinäisiä linkkejä tulee 100 % varmasti.
for i in "$@"; do
   ln -s "$i" /tmp/älämölö
done
Linkitys toimii Työpöydän sisällä.

En onnistunut toistamaan ongelmia. Tuo tuntui toimivan kaikissa kokeilemissani tapauksissa.
Tuo on mielenkiintoista ja hämmentävää (locale -a ei näytä minulla kuin UTF-8). Jostain kumman syystä sain tuon toimimaan sitten olemattomilla pythonin taidoillani.
Epäonnistuu minulla edelleen    ???  TyöpöytÃ-osa  näyttäisi olevan linkissä
Lainaus
Muita ohjelmia: mplaex ei sulata välilöyntejä ollenkaan, eikä mmg ääkkösiä.
Tarkoitatko mplex:iä? Kyllä se minulla ymmärtää välilyönnit. Mmg ei edes ole komentoriviohjelma vaan GUI mkvmerge:lle ja jälkimmäinen puolestaan tuontui toimivan pikaisen testin perusteella sekä ääkkösten että välilyöntien kanssa.

Joo mplex. Nyt onnistumaan saattoi olla kyse kiusallisesta '" {,} '-yhdistelmistä tai erikoisemmasta tapauksesta.  edelliseen siis tarkoitin mkvmergeä ja mkvextractia  8),. No sama tulos...
Koodia: [Valitse]
File identification failed for '/home/j-p/Työpöytä/testi.ogg'. Return code: 2


Error: The source file '/home/j-p/Työpöytä/testi.ogg' could not be opened successfully,
or retrieving its size by seeking to the end did not work.
KDE neon
Uudempaa KDE:tä Ubuntulla

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #136 : 22.09.08 - klo:09.36 »
En onnistunut toistamaan ongelmia. Tuo tuntui toimivan kaikissa kokeilemissani tapauksissa.
Tuo on mielenkiintoista ja hämmentävää (locale -a ei näytä minulla kuin UTF-8).

Minulla se näyttää hieman enemmän...

Koodia: [Valitse]
$ locale -a | wc -l
442

Käytössä minulla on en_US.UTF-8.

Lainaus
Tarkoitatko mplex:iä? Kyllä se minulla ymmärtää välilyönnit. Mmg ei edes ole komentoriviohjelma vaan GUI mkvmerge:lle ja jälkimmäinen puolestaan tuontui toimivan pikaisen testin perusteella sekä ääkkösten että välilyöntien kanssa.
Joo mplex. Nyt onnistumaan saattoi olla kyse kiusallisesta '" {,} '-yhdistelmistä tai erikoisemmasta tapauksesta.  edelliseen siis tarkoitin mkvmergeä ja mkvextractia  8),. No sama tulos...
Koodia: [Valitse]
File identification failed for '/home/j-p/Työpöytä/testi.ogg'. Return code: 2


Error: The source file '/home/j-p/Työpöytä/testi.ogg' could not be opened successfully,
or retrieving its size by seeking to the end did not work.

Mplex:n toiminnan kokeilin hieman vanhemman Kubuntun alla mutta mkvmergeä ja symbolisia linkkejä taisin kokeilla OpenSUSE 11.0:n alla. Tiedä sitten johtuvatko ongelmasi jostakin omista asetuksistasi vai onko Ubuntu alunperinkin rikki noiden osalta. OpenSUSElla ne tuntuivat kuitenkin toimivan.

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #137 : 24.09.08 - klo:23.11 »
Ajattelin, että Kaffeinea olisi mukava ajastella etänä.  :)
Koodia: [Valitse]
#!/bin/bash

export DISPLAY=:0

menneisyys()
{
echo "Älä elä menneisyydessä!" && exit 3
}

utopia()
{
echo "Tämä ei ole mahdollista" && exit 4
}

if ! [ -f $HOME/.kde/share/apps/kaffeine/channels.dvb ]
then
echo "Kanavia ei ole määritelty. Ei voida jatkaa" && exit 2
fi
echo Kanavat:
cat $HOME/.kde/share/apps/kaffeine/channels.dvb| sed  -e 's/#.*//'  -e '/^$/d'|\
awk -F '|' '{ print $20 ") " $2 }'|sort -n


tmpscript=$(mktemp)

echo "#!/bin/bash">>$tmpscript
echo "case "'$1'"">>$tmpscript
echo " in">>$tmpscript
cat $HOME/.kde/share/apps/kaffeine/channels.dvb| sed  -e 's/#.*//'  -e '/^$/d'|\
awk -F '|'  '{ print $20 ") kanava=" $2  ";;"}'|sed -e 's/=/="/' -e 's/;;/";;/' |sort -n >>$tmpscript
echo "*) echo Kanavaa ei ole && exit;;">>$tmpscript
echo "esac">>$tmpscript
echo "echo "'$kanava'"">>$tmpscript
read -p "Anna kanava: " kanava
kanava="$(sh $tmpscript $kanava)"
kanava='"'$kanava'"'
rm $tmpscript

if [ "$(echo $kanava|grep 'ei ole'|wc -l)" -gt 0 ]
then
echo $kanava && exit 1
else
echo Valitsit kanavan "$kanava"
fi
read -p "Ohjelman nimi: " nimi
nimi='"'$nimi'"'
echo "Muista käyttää kahta numeroa  kuukauden, päivän ja ajan suhteen!"
read -p "Anna vuosi VVVV: " vuosi
if [ "$(date +%Y)" -gt "$vuosi" ]
then
menneisyys
fi
read -p "Anna kuukausi KK: " kuukausi
if [ "$(date +%m)" -gt "$kuukausi" ] && [ "$(date +%Y)" -ge "$vuosi" ]
then
menneisyys
elif [ "$kuukausi" -gt 12 ]
then
utopia
fi

read -p "Anna päivä PP: " paiva
if [ "$(date +%d)" -gt "$paiva" ] &&  [ "$(date +%m)" -ge "$kuukausi" ] &&\
 [ "$(date +%Y)" -ge "$vuosi" ]
then
menneisyys
elif [  "$paiva"  -gt 31 ]
then
utopia
fi

echo "Seuraava toiminto aloitetaan $(cat $HOME/.kde/share/apps/kaffeine/dvbrc |grep BeginMargin\
|cut -d "=" -f2) minuuttia etuajassa."
read -p "Anna kellonaika: hh:mm:ss: " aika
if ! [ $(echo $aika|awk -F ':' '{ print NF }') -eq 3 ] || [ $(echo $aika|awk -F ':' '{ print $1 }') -gt 23 ] \
|| [ $(echo $aika|awk -F ':' '{ print $2 }') -gt 59 ] || [ $(echo $aika|awk -F ':' '{ print $3 }') -gt 59 ]
then
utopia
fi

echo "Seuraava toiminto lopetaan $(cat $HOME/.kde/share/apps/kaffeine/dvbrc |grep EndMargin\
|cut -d "=" -f2) minuuttia jäljessä."
read -p "Anna kesto: hh:mm:ss: " kesto
if ! [ $(echo $kesto|awk -F ':' '{ print NF }') -eq 3 ] || [ $(echo $aika\
|awk -F ':' '{ print $2 }') -gt 59 ] \
|| [ $(echo $aika|awk -F ':' '{ print $3 }') -gt 59 ]
then
utopia
fi

echo $aika $paiva.$kuukausi.$vuosi kesto: $kesto nimi: "$nimi"
echo "Ajettava komento: dcop kaffeine KaffeineIface dvbNewTimer "$nimi" "$kanava" "$vuosi-$kuukausi-$paiva"T"$aika" "$kesto""
echo "Mikäli jokin on väärin muut ajastukset voivat mennä sekaisin!"
read -p "Onko tämä oikein? (K/*)"  vastaus
if ! [ "$vastaus" = "K" ]
then
echo Keskeytetään && exit 0
fi
tmpscript=$(mktemp)
echo dcop kaffeine KaffeineIface dvbNewTimer "$nimi" "$kanava" \
 "$vuosi-$kuukausi-$paiva"T"$aika" "$kesto">>$tmpscript
sh $tmpscript
rm $tmpscript

Jostain kumman syystä lainausmerkit toimivat vasta, kun komennon ajaa erillisenä skriptinä. Mistäköhän johtuu?
KDE neon
Uudempaa KDE:tä Ubuntulla

eDIT

  • Käyttäjä
  • Viestejä: 319
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #138 : 27.10.08 - klo:22.29 »
Heh, en ole sedia vielä(kään) jaksanut ruveta opettelemaan eikä muutenkaan nyt aivokapasiteetti riitä.. Mutta siis, kuinka sedillä onistuu (ts. miten tehdään) merkkijonon lopusta merkkien poistaminen niin kauan kunnes tulee & merkki (ja tuo & pitää siis myös poistua)?
Eli esimerkkinä abcdef&ghijkl pitäisi saada muotoon abcdef

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #139 : 27.10.08 - klo:22.39 »
Koodia: [Valitse]
$ echo "abcdef&ghijkl"| sed 's/&.*//g'
abcdef
?
KDE neon
Uudempaa KDE:tä Ubuntulla