Inhaltsverzeichnis
23.shack
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'