{------------------------------------------------------------------------------- studio_monitor_V6.mls - Notification Script for mAirList Author & Copyright: www.my-web-page.de Date: 2015 Version: 1.0.3 Version: 1.0.2 - Problem behoben das im AssistMode der Timer auf der Webseite weitergelaufen ist - Problem mit Sonderzeichen behoben Version: 1.0.3 - Problem behoben hin und wieder die Zeit ab der man Live gesendet hat verschwunden ist. -------------------------------------------------------------------------------} const // Secret Key // Bitte sicherstellen das der gleiche Key in der datei config.php verwendet wird. SECRET_KEY ='ABCDE'; MODERATOR='Ich bins'; // URL zu der 'update.php' des Webserver UPDATE_URL='http://192.168.0.40/mairlist_status/update.php'; // *************** Ab hier ekien Änderungen vornehmen ! ******************** // aktuelle Version VERSION='1.0.3'; // Scriptname SCRIPTNAME='studio_monitor_V6'; POST_URL=UPDATE_URL+'?secret='+SECRET_KEY; var liz_name:string; starttime: Longint; onair_status:Integer; procedure OnLoad; begin onair_status:=0; starttime := 0; SystemLog(SCRIPTNAME + ' Version ' + VERSION + ' geladen'); HTTPGetAsync(POST_URL+'&status=0'); end; procedure OnUnload; begin onair_status:=0; HTTPGetAsync(POST_URL+'&status=0&starttime=0'); end; procedure OnOffAir; begin onair_status:=0; HTTPGetAsync(POST_URL+'&on_air_status=0&starttime=0'); starttime := 0; end; procedure OnOnAir; begin onair_status:=1; liz_name:=URLencode(MODERATOR); starttime := Round((Now() - 25569.0 ) * (86400))-7200; //-3600; HTTPGetAsync(POST_URL+'&on_air_status=1&moderator='+liz_name+'&starttime='+IntToStr(starttime)); SystemLog(POST_URL+'&on_air_status='+IntToStr(onair_status)+'&moderator='+liz_name+'&starttime='+IntToStr(starttime)); end; procedure OnCartPlayerStart(PlayerIndex: integer; Item: IPlaylistItem); begin SystemLog('OnCartPlayerStart'); end; procedure OnCartPlayerStop (PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem); begin SystemLog('OnCartPlayerStop'); end; procedure OnCartwallPlayerStateChange(PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; OnAirMode: TCartwallOnAirMode); var row:Integer; idx, i: Integer; begin row := PlayerIndex-1 ; idx := CurrentPlaylist.IndexOf(PlaylistItem); SystemLog('row' + IntToStr(row)); SystemLog('debug' + IntToStr(idx)); SystemLog('debug1' + IntToStr(i)); //SystemLog('titel' + titel); if (NewState = psLoaded) then begin SystemLog('Cartwall loaded'); end else if (NewState = psEmpty) then begin SystemLog('Cartwall empty'); end else if (NewState = psFading) then begin SystemLog('Cartwall fading'); end else if (NewState = psPlaying) then begin SystemLog('Cartwall playing'); end else if (NewState = psLoading) then begin SystemLog('Cartwall loading'); end else if (NewState = psStopped) then begin SystemLog('Cartwall stopped'); end; end; procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem); var idx, i: Integer; pi: IPlaylistItem; s_out:string; titel:string; artist:string; activePlayer: Integer; auto_modus: Integer; begin //SystemLog('OnPlayerStop'); idx := CurrentPlaylist.IndexOf(item); if idx = -1 then begin SystemLog('Das war kein Element aus unserer Playlist ...'); exit; end; if (CurrentPlaylist.GetCount = 0) then begin HTTPGetAsync(POST_URL+'?status=0'); end; auto_modus := 0; SystemLog('suche nach aktive player auto_modus: ' + IntToStr(auto_modus)); activePlayer := -1; for i := 0 to CurrentPlaylist.GetPlayerCount - 1 do begin if CurrentPlaylist.GetPlayer(i).GetState = psPlaying then begin // SystemLog('Player '+ IntToStr(i) +' is playing... auto_modus: ' + IntToStr(auto_modus)); auto_modus := 1; break; end; end; if (auto_modus = 0) then begin SystemLog('kein aktiver player gefunden'); HTTPGetAsync(POST_URL+'&titel=&artist=&duration=00:00:00&eof=0'); end; i:= 0; while (idx < CurrentPlaylist.GetCount) and (i < 4) do begin pi := CurrentPlaylist.GetItem(idx); titel:=URLencode( pi.GetTitle); artist:=URLencode(pi.GetArtist); s_out:= IntToStr(i) + '**::--' + FormatDateTime('hh:mm:ss', currentPlaylist.GetMetadata(i).getStartTime(sttCalculated)) + '**::--' + artist + '**::--' + titel + '**::--' + FormatDateTime('hh:mm:ss', (pi.GetDuration/(24*60*60))) ; SystemLog(POST_URL+'&next_titel='+s_out) ; HTTPGetAsync(POST_URL+'&next_titel='+s_out ); Sleep(500); i := i + 1; idx := idx + 1; end; end; procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem); var titel:string; artist:string; ramp:string; sglRamp: single; begin titel:=URLencode( Item.GetTitle); artist:=URLencode(Item.GetArtist); liz_name:=URLencode(MODERATOR); ramp:=FormatDateTime('hh:mm:ss', (Item.GetCuePosition(ptRamp1)/(24*60*60))); SystemLog('Player Start'); SystemLog(POST_URL+'&titel='+titel+'&artist='+artist +'&duration=' + FormatDateTime('hh:mm:ss', (Item.GetDuration/(24*60*60))) + '&eof=0&moderator='+liz_name+'&on_air_status='+IntToStr(onair_status)+'&starttime='+IntToStr(starttime)+'&ramp='+ramp); HTTPGetAsync(POST_URL+'&titel='+titel+'&artist='+artist +'&duration=' + FormatDateTime('hh:mm:ss', (Item.GetDuration/(24*60*60))) + '&eof=0&moderator='+liz_name+'&on_air_status='+IntToStr(onair_status)+'&starttime='+IntToStr(starttime)+'&ramp='+ramp); end; // Called when (playlist) player reaches EOF warning point (default: 10s before end) procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer); begin HTTPGetAsync(POST_URL+'&eof=1'); end; procedure OnAutomationOn(PlaylistIndex: integer); begin HTTPGetAsync(POST_URL+'&auto_mode=1'); end; procedure OnAutomationOff(PlaylistIndex: integer); begin HTTPGetAsync(POST_URL+'&auto_mode=0'); end; // Called when (playlist) player enters PFL procedure OnPlayerPFLOn(PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer); begin SystemLog('OnPlayerPFLOn'); end; // Called when (playlist) player leaves PFL procedure OnPlayerPFLOff(PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer); begin //SystemLog('OnPlayerPFLOff'); end; // Called when any player, cue editor, mix editor... enters PFL // PFLCount is the number of active PFL sources procedure OnPFLOn(Item: IPlaylistItem; PFLCount: integer); begin //SystemLog('OnPFLOn'); end; // Called when any player, cue editor, mix editor... leaves PFL // PFLCount is the number of active PFL sources procedure OnPFLOff(Item: IPlaylistItem; PFLCount: integer); begin //SystemLog('OnPFLOff'); end; begin end.