23.shack

auf telnet.shack port 23/tcp laeuft ein service der diversen audio-foo per cmdline bereit stellt.

struktur

Jede ausführbare Datei im Verzeichnis /root/noise/modules steht dem Benutzer als Befehl zur Verfügung.

So kann beispielsweise ein neuer Befehl /foo hinzugefügt werden indem die Datei /root/noise/modules/foo erstellt wird.

Befehle werden auch Module genannt.

Module sollten folgende Eingenschaften aufweisen:

  • Wird das Modul mit dem Argument –help aufgerufen, so sollte es eine kurze Befehlsbeschreibung ausgeben. Diese Beschreibung …
    • … sollte genau eine Zeile lang sein.
    • … sollte keine Escapesequenzen beinhalten.
    • … sollte maximal 42 Zeichen lang sein.
  • Wird das Modul mit den Argumenten –help und –verbose aufgerufen, so sollte es eine vollständige Befehlsbeschreibung ausgeben. Diese Beschreibung …
    • … kann beliebig viele Zeilen lang sein. Jede dieser Zeilen …
      • … sollte maximal 78 Zeichen lang sein.
    • … sollte normalen Text in lila darstellen.
      • Lila kann in Shell mit echo -e 'normaler text \x1B[35mLILA TEXT\x1B[m normaler Text' erzeugt werden.
    • … sollte Befehle und dazugehörige Argumente in grün darstellen.
      • Grün kann in Shell mit echo -e 'normal \x1B[35mgrün\x1B[m wieder normal' erzeugt werden.

user-interface

nc telnet.shack 23

/help

listet die vorhandenen module

/modulname (parameter)

startet das angegebene modul

module stand 2010-12-28:

type /chat to send text to everyone with @@ prepended
type /espeak to say something with espeak
type /join to set default_command to chat and join channel
type /lang to set language or list available languages
type /mpc to access mpd
type /names to send text to everyone with @@ prepended
type /nick to send text to everyone with @@ prepended
type /part to leave chat mode
type /play to play an audio file
type /query to send a message to a specific user
type /quit to exit
type /sendmail to send an e-mail ( "TO(s)" "SUBJECT" [string instead of EOF])
type /set to set a variable
type /shackstatus to report status of all shack services.
type /sleep to pause for NUMBER seconds
type /stream to play an audio stream
type /test to do some test-module related stuff
type /twitter to Bug Robert to implement Twitter-OAuth!
type /unset to unset a variable
type /vvs to query VVS
type /zeit to say current time

interne kommunikation

die mit / angefuehrten kommandos koennen an eine named pipe uebergeben werden, um komplexere ausgaben zu erzeugen.

diese wird unter /tmp/noise/<pid>/linefeed bereit gestellt. der aktuelle pfad kann aus der variablen $NOISE_linefeed gelesen werden.

/set

mit /set koennen betriebsparameter gesetzt werden

  • /set pitch 10 .. /set pitch 100 - tonhoehe der sprachsynthese

/play

die durch /play abrufbaren audio-clips liegen auf shack@shack:noise/samples/

/play ohne optionen listet die aufrufbaren clips

/stream

die durch /stream abrufbaren streams sind auf shack@shack:noise/streams/ konfgurierbar

/stream ohne optionen listet die aufrufbaren streams /stream off schaltet das streaming ab.

sample config

fuer jeden stream wird unter shack@shack:noise/streams/ eine datei angelegt. deren name ist ohne bedeutung und muss lediglich auf .xml enden.

<?xml version="1.0"?>
<station
		<!-- this will be displayed on /stream -->
        title="Secret Agent on SomaFM"
		<!-- how this will be called with /stream -->
        shortcut="secagent"
		<!-- this will be displayed on /stream -->
        topic="The soundtrack for your stylish, mysterious, dangerous life"
		<!-- the stream's url -->
        stream="http://somafm.com/startstream=secretagent.pls"
		<!-- the stream's website. informational -->
        website="http://somafm.com/"
/>
funktion

bei aufruf wird der beschriebene stream mit mplayer in hintergrund abgespielt. dessen pid wird in /tmp/noise/stream.pid abgelegt. beim aufruf eines /stream-kommandos wird zunaechst diese datei gelesen und die darin hinterlegte pid gekillt.

/zeit

/zeit gibt die aktuelle Uhrzeit per espeak aus.

Die automatische Ansage alle 30 Minuten wird von der Datei /etc/cron.d/noise-zeit gesteuert.

/shackstatus

verbalisierter systemcheck beim systemstart. hierzu gehoert die datei /etc/cron.d/noise-shackstatus

GIT-Repository

einchecken von aenderungen:

cd ~root/noise
export GIT_COMMITTER_NAME=<ausfuellen> GIT_AUTHOR_NAME=<ausfuellen>
git add modules/stream
git commit -m 'added module: stream'
project/23.shack.txt · Zuletzt geändert: 2010/12/29 08:14 von ::ffff:212.9.189.66