Author Topic: Codebeispiele mAirListScript  (Read 29696 times)

Torben

  • Administrator
  • Doktor mAirList
  • *****
  • Posts: 11104
    • View Profile
Codebeispiele mAirListScript
« Reply #30 on: January 14, 2007, 22:44:16 »
Hilfst du dem JC dann mit dem Script?

JC

  • Newbie
  • *
  • Posts: 95
    • ICQ Messenger - 243659580
    • MSN Messenger - jannys_eis@hotmail.com
    • View Profile
    • jan-macht-fun.de
    • Email
Codebeispiele mAirListScript
« Reply #31 on: January 14, 2007, 22:48:15 »
Quote from: "tw"
Hilfst du dem JC dann mit dem Script?


richtig ;) Denn ich bin eher nur so der "Benutzer"... Mit Codes usw kann ich eher weniger anfangen ;)

Torben

  • Administrator
  • Doktor mAirList
  • *****
  • Posts: 11104
    • View Profile
Codebeispiele mAirListScript
« Reply #32 on: January 14, 2007, 22:49:25 »
Ich bin mehr so der Coder, aber hab immer so viel zu tun ;)

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Codebeispiele mAirListScript
« Reply #33 on: January 14, 2007, 22:59:02 »
Ich kann mal was coden...

Quote
Könnte man bei der "NowPlaying.html" oder eher gesagt im Script eine "Blacklist"-Funktion einbauen, dass er die "NowPlaying.html" nicht ändert, nicht den Titel anzeigt, wenn ein bestimmtes Wort im Artist oder Titel steht?
Z.B. "Jingle"?


das hier , gell?

für 2.0 oder 2.1???


grüße, michi

JC

  • Newbie
  • *
  • Posts: 95
    • ICQ Messenger - 243659580
    • MSN Messenger - jannys_eis@hotmail.com
    • View Profile
    • jan-macht-fun.de
    • Email
Codebeispiele mAirListScript
« Reply #34 on: January 14, 2007, 23:04:52 »
richtig das ;)
Von mir aus kann der auch "einen bestimmten Text" ausgeben, wenn im Titel oder Artist "Jingle" steht.

Thx :D

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Codebeispiele mAirListScript
« Reply #35 on: January 14, 2007, 23:42:30 »
Hi,

Hier das Script... für die mAirList versionen bis 2.0.X...

musst halt an den 2 stellen für "Jingle" die wörter ändern, wenn du was anderes verglichen haben willst...

Code: [Select]
var n: INotification;
    pi: IPlaylistItem;
    sl: TStringList;

begin
  // fetch notification data
  n := GetNotification;

  if (n.GetNotificationType = ntMask) then
    // we want to be notified when players start
    SetNotificationTypes([ntPlayerStart])
  else
  if (n.GetNotificationType = ntPlayerStart) then begin
    // interface #1 contains a reference to the playlist item
    pi := IPlaylistItem(n.GetInterface(1));
    if (pos('Jingle', pi.GetTitle) =0) then begin
      if (pos('Jingle', pi.GetArtist) =0) then begin
        sl := TStringList.Create;
        sl.Add('<html>');
        sl.Add('<head><title>Now Playing</title></head>');
        sl.Add('<body>');
        sl.Add('<p>Artist: ' + pi.GetArtist + '<br/>Title: ' + pi.GetTitle + '</p>');
        sl.Add('</body>');
        sl.Add('</html>');
        sl.SaveToFile('c:\NowPlaying.html');
        sl.Free;
      end;
    end;
  end;
end.


Das Script ändert Jetzt nichts, wenn "Jingle" im Titel oder im artist steht...
wenn du "einen bestimmten" Text ausgeben(in das file schreiben) willst, meldest dich nochmal...

grüße, michi

JC

  • Newbie
  • *
  • Posts: 95
    • ICQ Messenger - 243659580
    • MSN Messenger - jannys_eis@hotmail.com
    • View Profile
    • jan-macht-fun.de
    • Email
Codebeispiele mAirListScript
« Reply #36 on: January 15, 2007, 00:03:49 »
Quote from: "flashlighter"
Hi,

Hier das Script... für die mAirList versionen bis 2.0.X...


Heißt also es funktioniert bei 2.1.5 nicht? Weil im Moment bekomme ich keine Ausgabe. (Habe auf meine Settings angeglichen)

Error loading D:\...\NowPlayingHTML.mls: [Error] (1:8): Unknown type 'INotification'

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Codebeispiele mAirListScript
« Reply #37 on: January 15, 2007, 00:39:22 »
Nein...funktioniert nur bis 2.0.X

deshalb fragte ich ja auch oben;)

Ich stells dir Morgen bzw. Heute (mann, jetzt muss ich aber ins Bettchen) um...

grüße, michi

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Codebeispiele mAirListScript
« Reply #38 on: January 15, 2007, 00:47:59 »
Hi,

Doch noch jetzt:

Code: [Select]
procedure OnPlayerStart(PlayerControl: IPlayerControl; Item: IPlaylistItem);
var sl: TStringList;
begin
  if (pos('Jingle', Item.GetTitle) =0) then begin
    if (pos('Jingle', Item.GetArtist) =0) then begin
      sl := TStringList.Create;
      sl.Add('<html>');
      sl.Add('<head><title>Now Playing</title></head>');
      sl.Add('<body>');
      sl.Add('<p>Artist: ' + Item.GetArtist + '<br/>Title: ' + Item.GetTitle + '</p>');
      sl.Add('</body>');
      sl.Add('</html>');
      sl.SaveToFile('c:\NowPlaying.html');
      sl.Free;
    end;
  end;
end;

begin
end.


nur kurz getestet...aber sollte funktionieren

grüße, michi

JC

  • Newbie
  • *
  • Posts: 95
    • ICQ Messenger - 243659580
    • MSN Messenger - jannys_eis@hotmail.com
    • View Profile
    • jan-macht-fun.de
    • Email
Codebeispiele mAirListScript
« Reply #39 on: January 15, 2007, 01:15:42 »
Oh ja SUPER! Danke, es funktioniert ;) *freu freu*

PS: gn8 ;)

djmanu

  • Regular
  • *
  • Posts: 246
    • ICQ Messenger - 175428727
    • MSN Messenger - djmanu@icb.at
    • View Profile
    • SunRise FM
Codebeispiele mAirListScript
« Reply #40 on: January 22, 2007, 22:03:43 »
was mach ich da falsch?
[error] (41:41): Type missmatch
ohne 41, 42 & 47, 48 geht das script perfekt!


Code: [Select]
 if (n.GetNotificationType = ntMask) then
    // we want to be notified when players start
    SetNotificationTypes([ntPlayerStart])
  else
  if (n.GetNotificationType = ntPlayerStart) then begin
    // interface #1 contains a reference to the playlist item
    pi := IPlaylistItem(n.GetInterface(1));
pi2 := CurrentPlaylist.GetItem(2);
pi3 := CurrentPlaylist.GetItem(3);
pi4 := CurrentPlaylist.GetItem(4);
pi5 := CurrentPlaylist.GetItem(5);

    sl := TStringList.Create;
    sl.Add('<?php'&#41;;

    sl.Add&#40;'
$playa1="' + pi.GetArtist + '";'&#41;;
    sl.Add&#40;'
$playb1="' + pi.GetTitle + '";'&#41;;
    sl.Add&#40;'
$playc1="' + pi.GetDuration + '";'&#41;;    #####das ist Zeile 41
    sl.Add&#40;'
$playd1="' + pi.GetStartTime + '";'&#41;;

    sl.Add&#40;'
$playa2="' + pi2.GetArtist + '";'&#41;;
    sl.Add&#40;'
$playb2="' + pi2.GetTitle + '";'&#41;;
    sl.Add&#40;'
$playc2="' + pi2.GetDuration + '";'&#41;;
    sl.Add&#40;'
$playd2="' + pi2.GetStartTime + '";&#41;;
SunRiseFM.at - Your Dance Radio
MusicBase.FM - Don't stop the Base

Torben

  • Administrator
  • Doktor mAirList
  • *****
  • Posts: 11104
    • View Profile
Codebeispiele mAirListScript
« Reply #41 on: January 22, 2007, 22:26:57 »
GetDuration liefert den Wert als Zahl (int64) zurück (in Einheiten von 1/10,000,000 Sekunden), nicht als String. GetStartTime die Zeit als TDateTime (Delphi-eigenes Format: Tage seit dem 1.1.. Du musst beides von Hand in einen String konvertieren. Zum Beispiel so:

Die Startzeit kannst du ganz einfach an FormatDateTime übergeben:

Code: [Select]
sl.Add('$playd1="' +FormatDateTime('hh:mm:ss', pi.GetStartTime)+ '";');

Die Laufzeit musst du vorher in einen TDateTime umwandeln. Das ist ein sehr kranker Delphi-Typ: Eine Fließkommazahl, die die Zeit in Tagen seit dem 30.12.1899 angibt. Das Datum ignorieren wir hier mal, und um die Länge in die richtige Einheit zu kriegen, müssen wir sie erst durch 10.000.000 teilen (dann haben wir Sekunden) und dann nochmal durch 24*60*60. Danach können wir wieder FormatDateTime verwenden:

Code: [Select]
sl.Add('$playc1="' + FormatDateTime('hh:mm:ss', (pi.GetDuration/10000000)/(24*60*60)) + '";');


Torben

PS: Was mir an deinem Script noch auffällt: Du solltest überprüfen, ob die Playlist auch wirklich noch genügend Einträge hat, sonst gibt das GetItem(2) usw. eine Exception.

djmanu

  • Regular
  • *
  • Posts: 246
    • ICQ Messenger - 175428727
    • MSN Messenger - djmanu@icb.at
    • View Profile
    • SunRise FM
Codebeispiele mAirListScript
« Reply #42 on: January 22, 2007, 23:05:21 »
ist mir bewusst...

wie geht das mit GetStartTime ???
SunRiseFM.at - Your Dance Radio
MusicBase.FM - Don't stop the Base

Torben

  • Administrator
  • Doktor mAirList
  • *****
  • Posts: 11104
    • View Profile
Codebeispiele mAirListScript
« Reply #43 on: January 22, 2007, 23:06:14 »
Vorher mit CurrentPlaylist.GetCount nachgucken.

djmanu

  • Regular
  • *
  • Posts: 246
    • ICQ Messenger - 175428727
    • MSN Messenger - djmanu@icb.at
    • View Profile
    • SunRise FM
Codebeispiele mAirListScript
« Reply #44 on: January 22, 2007, 23:17:15 »
Code: [Select]
sl.Add('$playc1="' + FormatDateTime('hh:mm:ss', (pi.GetStartTime/10000000)/(24*60*60)) + '";');

geht nicht..
SunRiseFM.at - Your Dance Radio
MusicBase.FM - Don't stop the Base