diff options
| author | tv <tv@also> | 2011-05-29 15:47:21 +0200 | 
|---|---|---|
| committer | tv <tv@also> | 2011-05-29 15:47:21 +0200 | 
| commit | 12c77cdbfa4ec48d935af3ae7cf1118e38bec6e1 (patch) | |
| tree | 2fdf8b557d2a2a1edaba2be569c2110c3822559f /noise/modules | |
| parent | edaa1d7f7a0ed33c019fce185b8aff7563498b6e (diff) | |
lowered filesystem hierarchy--everything are modules
Diffstat (limited to 'noise/modules')
| -rwxr-xr-x | noise/modules/cat | 14 | ||||
| -rwxr-xr-x | noise/modules/chat | 33 | ||||
| -rwxr-xr-x | noise/modules/date | 6 | ||||
| -rwxr-xr-x | noise/modules/echo | 6 | ||||
| -rwxr-xr-x | noise/modules/ein_mal_eins | 37 | ||||
| -rwxr-xr-x | noise/modules/espeak | 34 | ||||
| -rwxr-xr-x | noise/modules/help | 24 | ||||
| -rwxr-xr-x | noise/modules/join | 15 | ||||
| -rwxr-xr-x | noise/modules/lang | 22 | ||||
| -rwxr-xr-x | noise/modules/mpc | 14 | ||||
| -rwxr-xr-x | noise/modules/names | 22 | ||||
| -rwxr-xr-x | noise/modules/nick | 10 | ||||
| -rwxr-xr-x | noise/modules/part | 15 | ||||
| -rwxr-xr-x | noise/modules/ping | 24 | ||||
| -rwxr-xr-x | noise/modules/play | 36 | ||||
| -rwxr-xr-x | noise/modules/pong | 26 | ||||
| -rwxr-xr-x | noise/modules/query | 23 | ||||
| -rwxr-xr-x | noise/modules/send_to_channel | 17 | ||||
| -rwxr-xr-x | noise/modules/sendmail | 55 | ||||
| -rwxr-xr-x | noise/modules/shackstatus | 104 | ||||
| -rwxr-xr-x | noise/modules/sleep | 10 | ||||
| -rwxr-xr-x | noise/modules/stream | 64 | ||||
| -rwxr-xr-x | noise/modules/temp | 56 | ||||
| -rwxr-xr-x | noise/modules/test | 13 | ||||
| -rwxr-xr-x | noise/modules/twitter | 125 | ||||
| -rwxr-xr-x | noise/modules/vvs | 17 | ||||
| -rwxr-xr-x | noise/modules/wall | 8 | ||||
| -rwxr-xr-x | noise/modules/zeit | 19 | 
28 files changed, 849 insertions, 0 deletions
| diff --git a/noise/modules/cat b/noise/modules/cat new file mode 100755 index 00000000..e090acba --- /dev/null +++ b/noise/modules/cat @@ -0,0 +1,14 @@ +#! /bin/sh +case "$1" in +  (--help) : ;; +  (*) +    while read line ; do +      case "$line" in +        (/quit) +          break 2 +        ;; +        (*) +          echo "[$line]" +      esac +    done +esac diff --git a/noise/modules/chat b/noise/modules/chat new file mode 100755 index 00000000..e5badc36 --- /dev/null +++ b/noise/modules/chat @@ -0,0 +1,33 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send text to everyone with @@ prepended ;; +  (/nick) +    echo set nick to $2 +    echo /set chat_nick $2 >$NOISE_linefeed;; +  (/names) +    cd /tmp/noise +    . $NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    channel="$chat_channel" +    echo "[34mUsers in channel [4m$channel[m" +    for client in * ; do +      . $client/environment +       chat_nick="${chat_nick-$client}" +       if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then +       	 echo "[33m$chat_nick[m" +       fi +       unset chat_nick +       unset chat_channel +       unset default_command  +    done  ;;  +  (*)    +    cd /tmp/noise +    . $NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +     +    echo "/send_to_channel $chat_channel [33m$nick:[m $*" > $NOISE_linefeed +       +  +    #echo /wall [33m@@[m $* >$NOISE_linefeed +esac diff --git a/noise/modules/date b/noise/modules/date new file mode 100755 index 00000000..8cd1b0c1 --- /dev/null +++ b/noise/modules/date @@ -0,0 +1,6 @@ +#! /bin/sh +case "$1" in +  (--help) : ;; +  (*) +    date --rfc-3339=s +esac diff --git a/noise/modules/echo b/noise/modules/echo new file mode 100755 index 00000000..344dd963 --- /dev/null +++ b/noise/modules/echo @@ -0,0 +1,6 @@ +#! /bin/sh +case "$1" in +  (--help) : ;; +  (*) +    echo "$*" +esac diff --git a/noise/modules/ein_mal_eins b/noise/modules/ein_mal_eins new file mode 100755 index 00000000..fb385b31 --- /dev/null +++ b/noise/modules/ein_mal_eins @@ -0,0 +1,37 @@ +#! /bin/bash + +R() { +  echo "`od -t d -N 1 /dev/urandom | sed -rn '1s/^[0-9]+ +//p'` % $@" | bc +} + + + + +case "$1" in +  (--help) echo Stellt eine einfache Aufgabe ;; +  (*) +    a="`R 69`" +    b="`R 69`" +    op="`echo "\ +Was ist, A hoch B +Was ist, A plus B +Was ist, A minus B +Was ist, A mal B +Was ist, sinus von 0 +Was ist, Pi halbe mal 2 +Was ist, 2 hoch 8 +Was ist, 2 hoch 16 +Was ist, 2 hoch 32 +Was ist, 42 geteilt durch Pi mal 100 +Was ist, l n von 1 +Was ist, 42 +Was ist, 23 +Starte den Server neu +Löte ein Kabel an einen Kompjuter +Was ist, A geteilt durch B"`" +    o="$(R `echo "$op" | wc -l` + 1)" + +    aufgabe=`echo "$op" | sed -n "$o{s/A/$a/;s/B/$b/;p}"` +     +    echo "/espeak -v Löse die Aufgabe: $aufgabe?" >$NOISE_linefeed +esac diff --git a/noise/modules/espeak b/noise/modules/espeak new file mode 100755 index 00000000..97305b5e --- /dev/null +++ b/noise/modules/espeak @@ -0,0 +1,34 @@ +#! /bin/sh + +print_var() { +  echo "[35;4m$1[;35m = [32m$2[m" +} + +speak() { +  p="${noise_pitch-100}" +  v="${noise_lang-de}" +  k="${noise_capital-0}" +  a="${noise_amplitude-100}" +  g="${noise_gap-1}" +  if test "$debug" = true; then +    print_var pitch $p +    print_var lang $v +    print_var capital $k +    print_var amplitude $a +    print_var gap $g +  fi +  if test "$verbose" = true; then +    echo "espeak: $@" +  fi +  #echo "[31mespeak -p \"$pitch\" -v \"$lang\" \"$*\"[m" >&2 +  (espeak --stdout -a $a -k $k -p $p -v $v -g $g | aplay -Dplug:dmix)<<EOF +$* +EOF +} + +case "$1" in +  (--help) echo say something with espeak ;; +  (-d|--debug) shift; debug=true speak "$@";; +  (-v|--verbose) shift; verbose=true speak "$@";; +  (*) speak "$@";; +esac diff --git a/noise/modules/help b/noise/modules/help new file mode 100755 index 00000000..bc4c2931 --- /dev/null +++ b/noise/modules/help @@ -0,0 +1,24 @@ +#! /bin/sh +case "$1" in +  (-*) : ;; # ignore all options +  ('') { for directory in `echo "$NOISE_PATH" | tr : \ ` ; do +          for module in "$directory"/* ; do +            echo `basename "$module"` `$module --help` +          done 2>/dev/null +        done +        ## print all documented built-in commands +        sed -rn 's:^noise_([a-z]+)\(\) \{ # (.+)?$:\1 \2:p' "$NOISE" +    } | sort | uniq | sed -rn ' +      $s/$/[m/ +      s:^([a-z]+) (.+):[35mtype [32m/\1[35m to \2:p' ;; +  (*) +    ## call +    for directory in `echo "$NOISE_PATH" | tr : \ ` ; do +      for module in "$directory/$1" ; do +        if test -e $module ; then +          shift +          exec $module --help --verbose "$@" 2>&1 +        fi +      done +    done +esac diff --git a/noise/modules/join b/noise/modules/join new file mode 100755 index 00000000..68afcb66 --- /dev/null +++ b/noise/modules/join @@ -0,0 +1,15 @@ +#! /bin/sh + +case "$1" in +  (--help) echo set default_command to chat and join channel ;; +  (*) +    . /tmp/noise/$NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    echo /send_to_channel "${1-#23}" "$nick" joined the channel >$NOISE_linefeed +    echo /set default_command chat >$NOISE_linefeed +    echo /set chat_channel "${1-#23}" >$NOISE_linefeed +    echo "[32m joined channel ${1-#23}[m"  +    echo  /part to go back to espeak ;; + + +esac diff --git a/noise/modules/lang b/noise/modules/lang new file mode 100755 index 00000000..07b6802e --- /dev/null +++ b/noise/modules/lang @@ -0,0 +1,22 @@ +#! /bin/sh + +case "$1" in +  (--help) +    echo "set language or list available languages" ;; +  (list) +    espeak --voices | sed -n '1!p' | awk '{\ +        printf"[32m/lang %s [0;35mset [4mlang[0;35m to %s[m\n",$2,$4 +    }' ;; +  ('') +    echo /set lang >$NOISE_linefeed ;; +  (*) +    if test -z "$2" ; then +      echo /set lang "$1" +    else +      echo /set lang "$1" +      shift +      echo "$*" +      echo /set lang "${noise_lang-de}" +    fi >$NOISE_linefeed +esac + diff --git a/noise/modules/mpc b/noise/modules/mpc new file mode 100755 index 00000000..0ab72058 --- /dev/null +++ b/noise/modules/mpc @@ -0,0 +1,14 @@ +#! /bin/sh + +case "$1" in +  (--help)  +    case "$2" in +      (--verbose) mpc --help ;; +      (*) echo access mpd +    esac ;; +  (*) +    ##echo test-module called with following arguments: "$@" +    ## send command for re-evaluation: +    ##echo /espeak test >$NOISE_linefeed +    MPD_HOST=mpd.shack mpc $@ +esac diff --git a/noise/modules/names b/noise/modules/names new file mode 100755 index 00000000..f5922064 --- /dev/null +++ b/noise/modules/names @@ -0,0 +1,22 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send text to everyone with @@ prepended ;; +  (*) +    cd /tmp/noise +    . $NOISE_pid/environment +    if test "$default_command" != chat ; then exit ; fi +    nick="${chat_nick-$NOISE_pid}" +    channel="${1-$chat_channel}" +    echo "[34mUsers in channel [4m$channel[m" +    for client in * ; do +      . $client/environment +       chat_nick="${chat_nick-$client}" +       if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then +       	 echo "[33m$chat_nick[m" +       fi +       unset chat_nick +       unset chat_channel +       unset default_command +    done  +esac diff --git a/noise/modules/nick b/noise/modules/nick new file mode 100755 index 00000000..5ed1e9d9 --- /dev/null +++ b/noise/modules/nick @@ -0,0 +1,10 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send text to everyone with @@ prepended ;; +  (*) +    . /tmp/noise/$NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    echo /send_to_channel $chat_channel $nick is now known as $1 > $NOISE_linefeed +    echo /set chat_nick $1 >$NOISE_linefeed;; +esac diff --git a/noise/modules/part b/noise/modules/part new file mode 100755 index 00000000..d35ac501 --- /dev/null +++ b/noise/modules/part @@ -0,0 +1,15 @@ +#! /bin/sh + +case "$1" in +  (--help) echo leave chat mode ;; +  (*) +    . /tmp/noise/$NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}"  +     +    echo "/send_to_channel $chat_channel $nick has quit [4m${*-no reason}[m" > $NOISE_linefeed    + +    echo /set default_command espeak >$NOISE_linefeed +    echo "[32mdisabled chat mode (set back to espeak)[m" ;; + + +esac diff --git a/noise/modules/ping b/noise/modules/ping new file mode 100755 index 00000000..acf2529f --- /dev/null +++ b/noise/modules/ping @@ -0,0 +1,24 @@ +#! /bin/sh +cd /tmp/noise +case "$1" in +  (--help) : ;; +  ('') +    . $NOISE_pid/environment +    ping_timestamp=${ping_timestamp-0} +    ping_challenger=${ping_challenger-0} +    if test $ping_challenger != 0 ; then +      echo There is already a ping challange running +    else +      timestamp=`date +%s%N` +      for client in * ; do +        echo /ping $NOISE_pid $timestamp >$client/linefeed & +      done +    fi +  ;; +  (*) +    echo "/set -q ping_timestamp $2" >$NOISE_pid/linefeed +    if test $NOISE_pid != $1 ; then +      echo "/set -q ping_challenger $1" >$NOISE_pid/linefeed +      echo "PING?" +    fi +esac diff --git a/noise/modules/play b/noise/modules/play new file mode 100755 index 00000000..749b450a --- /dev/null +++ b/noise/modules/play @@ -0,0 +1,36 @@ +#! /bin/sh +case "$1" in +  (--help) +    echo "play an audio file" ;; +  (*) +    exec 2>&1 +    ffs='wav mp3 ogg asf flac' +     +    if test -z "$*" ; then +      ls $HOME/noise/samples | sed -r ' +          s:\.('"`echo "$ffs" | tr \  \|`"')$: [30m\1[m: +          s:^:/play : +          s:.*:[32m&[m: +      ' +    else +      for i in $ffs ; do +        f=$HOME/noise/samples/$1.$i +        test -f "$f" && +            case "$i" in +              wav) aplay "$f" & ;; +                *) mplayer "$f" & ;; +            esac && break  +      done || cat<<EOF +[33m\ +Keine Audiodatei mit dem Namen + +  [4m$1[;33m.EXT + +gefunden... am besten gleich uploaden: + +  scp NAME shack@shack.shack:noise/samples/ + +folgende Dateiendungen werden erkannt: $ffs[m +EOF +    fi +esac diff --git a/noise/modules/pong b/noise/modules/pong new file mode 100755 index 00000000..eb2df46d --- /dev/null +++ b/noise/modules/pong @@ -0,0 +1,26 @@ +#! /bin/sh +cd /tmp/noise +case "$1" in +  (--help) : ;; +  ('') +    . $NOISE_pid/environment +    ping_timestamp=${ping_timestamp-0} +    ping_challenger=${ping_challenger-0} +    if test $ping_challenger = 0 ; then +      echo There is no ping challange running +    else +      timestamp=`date +%s%N` +      echo /pong $NOISE_pid $timestamp >$ping_challenger/linefeed +      ## reset ping TODO /unset +      echo /set -q ping_timestamp 0 >$NOISE_pid/linefeed +      echo /set -q ping_challenger 0 >$NOISE_pid/linefeed +    fi +  ;; +  (*) +    . $1/environment +    # XXX is attendee the right counterpart to 'challenger'? +    attendee_nick=$chat_nick +    . $NOISE_pid/environment +    time=`echo "scale=3; ($2 - $ping_timestamp)/10^9" | bc` +    echo "PONG! $attendee_nick ${time}s" +esac diff --git a/noise/modules/query b/noise/modules/query new file mode 100755 index 00000000..ceeff8a5 --- /dev/null +++ b/noise/modules/query @@ -0,0 +1,23 @@ +#! /bin/sh + +case "$1" in +  (--help) echo send a message to a specific user ;; +  (*)    +    cd /tmp/noise +    . $NOISE_pid/environment +    nick="${chat_nick-$NOISE_pid}" +    target="$1" +    shift +    for client in * ; do +       . $client/environment +       if test "$target" = "${chat_nick-$client}" ; then +       	 echo "/echo <-- $nick: $*" > $client/linefeed +       	 echo "--> $target: $*" +         exit +       fi +       unset chat_channel  +       +    done    + +    echo "$nick not found" +esac diff --git a/noise/modules/send_to_channel b/noise/modules/send_to_channel new file mode 100755 index 00000000..4a0470af --- /dev/null +++ b/noise/modules/send_to_channel @@ -0,0 +1,17 @@ +#! /bin/sh + +case "$1" in +  (--help) : ;; +  (*)    +    cd /tmp/noise +    channel="$1" +    shift +    for client in * ; do +       . $client/environment +       if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then +       	 echo "/echo $*" > $client/linefeed +       fi +       unset chat_channel  +       +    done    +esac diff --git a/noise/modules/sendmail b/noise/modules/sendmail new file mode 100755 index 00000000..182d96e3 --- /dev/null +++ b/noise/modules/sendmail @@ -0,0 +1,55 @@ +#!/usr/bin/python +import os,sys,smtplib,string +''' +  Mail Plugin for the noise telnet suite +  See: http://docs.python.org/library/smtplib.html +  Author: Felix +''' + +# help +if len(sys.argv) == 2: +    if sys.argv[1] == "--help": +      print "send an e-mail ( \"TO(s)\" \"SUBJECT\" [string instead of EOF])" +      sys.exit(0) + +# sanity  +if len(sys.argv) <= 2: +  print "wrong number of parameters, see help" +  sys.exit(1) + +# write variables  +# check of EOF +if len(sys.argv) == 4 :  +  EOFstring="%s\n"% sys.argv[3] +else: +  EOFstring="EOF\n" + +fromaddr=u"Karl Koch<shockspasm@googlemail.com>" +toaddrs=sys.argv[1] +subject=sys.argv[2] + + +#write header: +msg = u"From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, toaddrs,subject) +print "Write your text now, finish with %s" % EOFstring +sys.stdout.flush() # flushing is important to make sure the line is written + +while 1: +  try: +    line = sys.stdin.readline() +    if line == EOFstring: +      break +    msg = msg + line +  except EOFError: +    break + +msg = msg + "[!] Written with NOISE telnet" + +print "Thank you for your message! Delivering it now..." +sys.stdout.flush() +server = smtplib.SMTP('localhost') +#server.set_debuglevel(1) +server.sendmail(fromaddr,toaddrs.split(','),msg) +server.quit() +print "mail send successfully" +sys.exit(0) diff --git a/noise/modules/shackstatus b/noise/modules/shackstatus new file mode 100755 index 00000000..a5058f0a --- /dev/null +++ b/noise/modules/shackstatus @@ -0,0 +1,104 @@ +#! /bin/bash + +main() { +  case "$1" in +    (--help) +      echo "report status of all shack services." +    ;; +    (*) +      test "$(dig +short localhost     @10.42.0.10 )" = "127.0.0.1" && +          STAT_DNS_I="läuft" || STAT_DNS_I="antwortet nicht" +      test "$(dig +short shackspace.de @10.42.0.10 )" = "141.31.176.214" && +          STAT_DNS_E="läuft" || STAT_DNS_E="antwortet nicht" +      test "$(dig +short shackspace.de @141.31.176.214 )" = "141.31.176.214" && +          STAT_DNS_X="läuft"|| STAT_DNS_X="antwortet nicht" +   +      STAT_LINE=$(ping -c 5 -i 0.2 -q 141.31.176.214 | +          awk '/packet loss/ { print 100-$6}' ) +   +      cat <<-EOF >$NOISE_linefeed +        /set pitch 10 +        /espeak -v Hallo - Ich bin Krebs. +        /espeak -v Heute ist `wochentag`, der `tag`  --- `monat` -- `date +%Y` +        /zeit +        /espeak -v tcheck der systeme: +        /espeak -v Energie versorgung -- aktiv +        /espeak -v shackhost -- läuft +        /espeak -v telnet    -- läuft +        /espeak -v interner - D N S -- interne - do-mejn -- $STAT_DNS_I +        /espeak -v interner - D N S -- externe - do-mejn -- $STAT_DNS_E +        /espeak -v externer - D N S - $STAT_DNS_X +        /espeak -v Leitungsqualität - $STAT_LINE prozent. +        /temp +        /espeak -v krebs kompjuting bereit +	EOF +    ;; +  esac 2>&1 +} + +wochentag() { +  case $(date +%a) in +    (Mon) echo Montag     ;; +    (Tue) echo Dienstag   ;; +    (Wed) echo Mittwoch   ;; +    (Thu) echo Donnerstag ;; +    (Fri) echo Freitag    ;; +    (Sat) echo Samstag    ;; +    (Sun) echo Sonntag    ;; +  esac +} + +tag() { +  case $(date +%d) in +    (1)  echo erste    ;; +    (2)  echo zweite   ;; +    (3)  echo dritte   ;; +    (4)  echo vierte   ;; +    (5)  echo fünfte   ;; +    (6)  echo sechste  ;; +    (7)  echo siebte   ;; +    (8)  echo achte    ;; +    (9)  echo neunte   ;; +    (10) echo zehnte   ;; +    (11) echo elfte    ;; +    (12) echo zwölfte  ;; +    (13) echo dreizehnte ;; +    (14) echo vierzehnte ;; +    (15) echo fünfzehnte ;; +    (16) echo sechzehnte ;; +    (17) echo siebzehnte ;; +    (18) echo achtzehnte ;; +    (19) echo neunzehnte ;; +    (20) echo zwanzigste ;; +    (21) echo einundzwanzigste    ;; +    (22) echo zweiundzwanzigste   ;; +    (23) echo dreiundzwanzigste   ;; +    (24) echo vierundzwanzigste   ;; +    (25) echo füfundzwanzigste   ;; +    (26) echo sechsundzwanzigste  ;; +    (27) echo siebenundzwanzigste ;; +    (28) echo achtundzwanzigste   ;; +    (29) echo neunundzwanzigste   ;; +    (30) echo dreissigste         ;; +    (31) echo einunddreissigste   ;; +  esac +} + +monat() { +  case $(date +%b) in +    (Jan) echo Januar    ;; +    (Feb) echo Februar   ;; +    (Mar) echo März      ;; +    (Apr) echo April     ;; +    (May) echo Mai       ;; +    (Jun) echo Juni      ;; +    (Jul) echo Juli      ;; +    (Aug) echo August    ;; +    (Sep) echo September ;; +    (Oct) echo Oktober   ;; +    (Nov) echo November  ;; +    (Dec) echo Dezember  ;; +  esac +} + +main "$@" diff --git a/noise/modules/sleep b/noise/modules/sleep new file mode 100755 index 00000000..89712cac --- /dev/null +++ b/noise/modules/sleep @@ -0,0 +1,10 @@ +#! /bin/sh +case "$1" in +  (--help) echo "pause for NUMBER seconds" ;; +  (*) +    if echo "$1" | grep -Eq '^([0-9]+(\.[0-9]*)?|[0-9]*\.[0-9]+)$' ; then +      sleep "$1" +    else +      echo '[31;1mFAIL: $1 is not a number[m' +    fi +esac diff --git a/noise/modules/stream b/noise/modules/stream new file mode 100755 index 00000000..1e6fd0c5 --- /dev/null +++ b/noise/modules/stream @@ -0,0 +1,64 @@ +#! /bin/sh +inputdir=$HOME/noise/streams +basename="`basename "$0"`" +case "$1" in +  (--help) +    if echo "$0 $*" | grep -q '[[:space:]]--verbose\>'; then +  echo -e "\x1B[35mtype \x1B[32m/$basename off \x1B[35mto turn stream off\x1B[m" +      for i in `ls $inputdir` ; do +	filename="$inputdir/$i" +	shortcut=`xmlstarlet sel -t -v /station/@shortcut "$inputdir/$i"` +	title=`xmlstarlet sel -t -v /station/@title "$inputdir/$i"` +	topic=`xmlstarlet sel -t -v /station/@topic "$inputdir/$i"` +	stream=`xmlstarlet sel -t -v /station/@stream "$inputdir/$i"` +  echo -e "\x1B[35mtype \x1B[32m/$basename $shortcut \x1B[35mfor $topic\x1B[m" +      done +    else +      echo "play an audio stream" +    fi +    ;; +  (*) +    exec 2>&1 +    ffs='xml' +     +    if test -z "$*" ; then +      echo -e "\x1B[32m/stream off \x1B[33m- turn stream off\x1B[m" +      for i in `ls $inputdir` ; do +	filename="$inputdir/$i" +	shortcut=`xmlstarlet sel -t -v /station/@shortcut "$inputdir/$i"` +	title=`xmlstarlet sel -t -v /station/@title "$inputdir/$i"` +	topic=`xmlstarlet sel -t -v /station/@topic "$inputdir/$i"` +	stream=`xmlstarlet sel -t -v /station/@stream "$inputdir/$i"` +	echo -e "\x1B[32m/stream $shortcut \x1B[33m- $title \x1B[35m$topic\x1B[m" +      done +    else if [ "$1" = "off" ]; then +          [ ! -d /tmp/noise ] || ( echo "no directory /tmp/noise; aborting" ; exit 1 ) +          [ -f /tmp/noise/stream.pid ] && ( kill ` cat /tmp/noise/stream.pid ` ) +          [ -e /tmp/noise/stream.pid ] && rm /tmp/noise/stream.pid || ( echo "can't remove /tmp/noise/stream.pid; aborting" ; exit 1 ) +    else  +      for i in `ls $inputdir` ; do +        filename="$inputdir/$i" +        shortcut=`xmlstarlet sel -t -v /station/@shortcut "$inputdir/$i"` +        stream=`xmlstarlet sel -t -v /station/@stream "$inputdir/$i"` +        if [ "$shortcut" == "$1" ]; then +          [ ! -d /tmp/noise ] || ( umask 077 ; mkdir /tmp/noise ) || ( echo "can't create /tmp/noise; aborting" ; exit 1 ) +          [ -f /tmp/noise/stream.pid ] && ( kill ` cat /tmp/noise/stream.pid ` ) +          [ -e /tmp/noise/stream.pid ] && rm /tmp/noise/stream.pid || ( echo "can't remove /tmp/noise/stream.pid; aborting" ; exit 1 ) +          mplayer -cache 2048 -quiet "$stream" & +          ( umask 077 ; echo $! > /tmp/noise/stream.pid ) +          break  +        fi +      done || cat<<EOF +[33m\ +Keine Audiostreambeschreibung mit dem Namen + +  [4m$1[;33m.EXT + +gefunden... am besten gleich anlegen: + +  ssh shack@shack.shack:noise/streams/ + +folgende Dateiendungen werden erkannt: $ffs[m +EOF +    fi fi +esac diff --git a/noise/modules/temp b/noise/modules/temp new file mode 100755 index 00000000..2f1dfcef --- /dev/null +++ b/noise/modules/temp @@ -0,0 +1,56 @@ +#! /bin/bash + +main() { +  case "$1" in +    (--help) +      echo "report temperature in K, °C, °R, or °F." +    ;; +    (-C|--celsius) +      espeak_inside `inside_temp 'x - 273.15'` Grad Zelsius +      espeak_outside `outside_temp 'x - 273.15'` Grad Zelsius +    ;; +    (-F|--fahrenheit) +      espeak_inside `inside_temp 'x * 9/5 - 459.67'` Grad Fahrenheit +      espeak_outside `outside_temp 'x * 9/5 - 459.67'` Grad Fahrenheit +    ;; +    (-R|--rankine) +      espeak_inside `inside_temp 'x * 9/5'` Grad Renkin +      espeak_outside `outside_temp 'x * 9/5'` Grad Renkin +    ;; +    (-K|--kelvin|*) +      espeak_inside `inside_temp` Kelvin +      espeak_outside `outside_temp` Kelvin +    ;; +  esac +} + +## temp [<formula with temperature as x>] +## Echo temperature in K.  If formula is given then return that result instead. +inside_temp() { +  echo "scale=2; x=`/krebs/temper/temper` + 273.15; ${1-x}" | bc +} + +outside_temp() { +  echo "scale=2; x=`dig +short txt outside.elwood.temp.citecs.de | +          sed 's/^"DEG \([0-9]\+\.[0-9]\+\)"$/\1/' +       ` + 273.15; ${1-x}" | bc +} + +espeak_inside() { +  echo Die Krebs-tempera-tur beträgt $@ | to_espeak +} + +espeak_outside() { +  echo Die Außen-tempera-tur beträgt $@ | to_espeak +} + +to_espeak() { +  sed ' +    s/\(\.[0-9]\)0\+/\1/g +    s/\(\.[0-9]\)\([0-9]\)[0-9]*/ \1 \2 /; +    s/^-/minus /; +    s/\./ komma /; +  ' | tee $NOISE_linefeed +} + +main "$@" diff --git a/noise/modules/test b/noise/modules/test new file mode 100755 index 00000000..2c0b8e0d --- /dev/null +++ b/noise/modules/test @@ -0,0 +1,13 @@ +#! /bin/sh + +case "$1" in +  (--help) echo do some test-module related stuff ;; +  (*) +     +    echo -n ">> "     +    read TEST +    if [ $TEST == 'q' ]; then exit; fi +    echo /wall [33m@@[m $TEST >$NOISE_linefeed +    #sleep 1 +    #sleep 1; echo /test >$NOISE_linefeed & +esac diff --git a/noise/modules/twitter b/noise/modules/twitter new file mode 100755 index 00000000..26982525 --- /dev/null +++ b/noise/modules/twitter @@ -0,0 +1,125 @@ +#!/usr/bin/python +#encode=utf8 + +#print "[31;4;5;1mTODO Bug Robert to implement Twitter-OAuth![m" +#exit(1) +import sys + +#sys.path.append("/usr/local/lib/") + +import twitter, os, pwd + +#os.getlogin = lambda: pwd.getpwuid(os.getuid())[0] + +sys.stderr = sys.stdout + +def shorten(text): +	 +	text = text.replace("about ", "~") +	text = text.replace("an", "1") +	text = text.replace(" minutes", "m") +	text = text.replace(" minute", "m") +	text = text.replace(" hours", "h") +	text = text.replace(" hour", "h") +	text = text.replace(" seconds", "s") +	text = text.replace(" second", "s") +	text = text.replace(" days", "d") +	text = text.replace(" day", "d") +	text = text.replace(" weeks", "w") +	text = text.replace(" week", "w") +	text = text.replace(" years", "y") +	text = text.replace(" year", "y") +	text = text.replace(" ago", "") +	text = text.replace("a", "1") +	return text +	 + +def parse(text): +	text = text.replace("\n","") +	t = text.split(" ") +	new = "" +	for piece in t: +		escape = "" +		if piece.startswith("@"): +			escape = "[33;4m" +			if piece[1:].lower() == "shackspam" or piece[1:].lower() == "shackspace": +				escape = "[31;4m" +				 +		elif piece.startswith("#"): +			escape = "[35m" +		elif piece.startswith("http://"): +			escape = "[36;4m" +		if escape: +			new += escape + piece + "[m " +		else: +			new += piece + " " + +	return new + +if len(sys.argv) > 1 and sys.argv[1] == "--help": +	print "read or post to the shackspam twitter timeline" +	if len(sys.argv) == 3 and sys.argv[2] == "--verbose": +		print "call without parameters to read" +		print "use /twitter [your tweet] to tweet something to the shackspam twitter timeline" +	exit()	 + + + +api = twitter.Api("Z7f9npE5ixvZ0lMCHDZBOg", "8z0gyfOABar1HxKvqL6fYXLqRFUPLQ9OOzDFt7Q4F4", "139766258-94TGPvNsJ8tYVv68eZewfXOIyDvRCWdycNlUgHrs", "NRnDQZPCoLrDizFvakZkSWgoG4vgGuT3OOMChSfiI") + +#api.SetXTwitterHeaders("Shackspace UTTERANCE","","0.00.0.01.42") + +if len(sys.argv) > 1: +	 +	 +	tweet = u"" +	 +	for t in sys.argv[1:]: +		tweet += t.decode("utf8") + u" " +	tweet = tweet[:-1] + +	print u"Length: [32;1m" + str(len(tweet)) + u"[m" + +	if len(tweet) > 140: +		print u"[31;6mYour Tweet must be shorter than 140 characters.[m\n" +		exit() +	 +	status = api.PostUpdate(tweet) +	 +	 +	 + +else:	 +	"""print "\t[31;4mshackspace tweets:[m" +	for i in api.GetUserTimeline(): +		i.text = parse(i.text) +		print ("[32m" + i.user.screen_name + "[m [34m" + i.GetRelativeCreatedAt() + "[m " + i.text).encode("utf8").replace("\n"," ") +	 +	print "\n\t[31;4mfriends tweets[m" +	""" +	a = api.GetFriendsTimeline() +	a.reverse() +	for i in a: +		text = i.text +		ilen = len(i.user.screen_name) + len(shorten(i.GetRelativeCreatedAt())) + 2  +		if i.user.screen_name.lower() == "shackspace" or i.user.screen_name.lower() == "shackspam": +			info = "[32;4m" + i.user.screen_name + "[m [34m" + shorten(i.GetRelativeCreatedAt()) + "[m"  +		else: +			info = "[32m" + i.user.screen_name + "[m [34m" + shorten(i.GetRelativeCreatedAt()) + "[m"  +		text = info + " " + parse(text) +		 | 
