# Auslesen von Streamdaten bei Shoutcast-Stream



## schtiev (29. Mai 2004)

Hi,

Ich arbeite bei einem kleinen internetradio mit und suche nun ein Script was in unseren IRC-Channel Sachen wie Song, Listener etc. schreibt.
Dasganze sollte ein Script für einen mIRC Clienten sein, also kein tcl/Eggdrop-Script.

Ich habe de Anfang hinbekommen. Also den Aufbau zu XML Seite und so.
Nur bei der Auslese des Codes kommt bei mir immer nur:


```
HTTP/1.0 401 UnauthorizedServer: Shoutcast DNASWWW-authenticate: basic realm="Shoutcast Server"Content-type: text/html
```

Aber der Rest des XML-Codes fehlt. 

Evtl. kennt einer von euch schon so ein Script und kann den Link oder den Code hierhin posten 

thx 4 help
steve


----------



## mugge (29. Mai 2004)

*ganz einfach*

http://www.max-lange.com da hats n paar IRC scripts unter anderem auch ein Stream script


----------



## Helmut Klein (29. Mai 2004)

Wäre nicht schlecht wenn du dein Script postest, da wir dir sonst leider nicht helfen können.

Nebenbei: Ist Shoutcast jetzt auf XML in den neuen Versionen umgestiegen? Früher hatte es nur eine normale HTML-Seite vollgepackt mit Krimskrams und den Infos zwischendrin.
(Ok, es gibt/gab noch die 7.html, die jedoch hatte nicht alle Infros.)


----------



## schtiev (29. Mai 2004)

Danke für den Link

Ich hab mir das Script mal genau angeschaut und das ist genau das was ich brauche. 
Nur ohne das Fenster in dem die ausgelesenen Sachen angegeben werden.

Eine Frage/Bitte an Euch:
Könnte mir einer folgendes umschreiben:
Und zwar, dass die Listener, Song etc. einfach mit Variablen gespeichert werden?
Oder mir ein Beispiel geben:


```
on *:SOCKCLOSE:sci2: {
  hadd sci string $read( " $+ $scriptdir $+ sci.txt $+ ", w,  *<HTML>*)
  .remove  " $+ $scriptdir $+ sci.txt $+ "
  hadd sci string $remove($hget(sci,string),<HTML><meta http-equiv="Pragma" content="no-cache"></head><body>,</body></html>)
  hadd sci listeners $gettok($hget(sci,string),1,44)
  hadd sci listeners.max $gettok($hget(sci,string),4,44)  | did -ra sci 115 $hget(sci,listeners) $+ / $+ $hget(sci,listeners.max)
  hadd sci listeners.peak $gettok($hget(sci,string),3,44) | did -ra sci 117  $hget(sci,listeners.peak)
  hadd sci song $iif($gettok($hget(sci,string),7,44) != $null, $ifmatch,-) | did -ra sci 119 $hget(sci,song)
  if ($gettok($hget(sci,string),3,44) == $null) { .timersci.load-listeners 1 2 sci.load-listeners }
  else { sci.disp-status Finished! | if ($hget(sci,ad.status)) { sci.ad-sci } | if ($hget(sci,trigger.status)) { sci.trigger } | else { did -ra sci 121 refresh | hadd sci ref.status 0 } }
  hsave -o sci " $+ $scriptdir $+ sci.hsh $+ "
}
```

Danke schonmal im Vorraus!

[edit/Helmut Klein]: CODE-Tags eingefügt.


----------



## Helmut Klein (29. Mai 2004)

Die Werte sind sozusagen schon in Variabeln gespeichert - nämlich in Hash Tables.

Das heißt du kannst sie ganz einfach per:


```
$hget(sci,ITEM)
```

ausgeben.

Gültige (nützliche) Items wären hier: 


listeners
listeners.max
listeners.peak
song


----------



## schtiev (29. Mai 2004)

Hm ich hab da das Problem dass ich die Fhlermeldung
* /hadd: no such table 'sci' (line 37, gamersirc.grc)
bekomme.

Also müsste der Rest den ich nicht brauche raus.
Ich möchte ja nur die Variable setzen, abe ich weiss nicht wie und was ich rausnehmen kann.
Bei mir klappt das danach immer nicht!  pls help!

thx
steve


----------



## Helmut Klein (30. Mai 2004)

Ich hatte schon beim lesen deines Scripts gestutzt wieso denn nirgends der Hash Table erstellt wird, und dachte eben du erstellst sie im on sockopen.

Anscheinend ist dem nicht so, also "hadd -m" beim ersten "hadd" verwenden:


```
on *:SOCKCLOSE:sci2: {
  hadd -m sci string $read( " $+ $scriptdir $+ sci.txt $+ ", w,  *<HTML>*)
[...]
```


----------

