studio_monitor_V6.mls
· 7.0 KiB · Text
Bruto
{-------------------------------------------------------------------------------
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.
| 1 | {------------------------------------------------------------------------------- |
| 2 | studio_monitor_V6.mls - Notification Script for mAirList |
| 3 | Author & Copyright: www.my-web-page.de |
| 4 | Date: 2015 |
| 5 | Version: 1.0.3 |
| 6 | |
| 7 | Version: 1.0.2 |
| 8 | - Problem behoben das im AssistMode der Timer auf der Webseite weitergelaufen ist |
| 9 | - Problem mit Sonderzeichen behoben |
| 10 | Version: 1.0.3 |
| 11 | - Problem behoben hin und wieder die Zeit ab der man Live gesendet hat verschwunden ist. |
| 12 | |
| 13 | |
| 14 | -------------------------------------------------------------------------------} |
| 15 | |
| 16 | const |
| 17 | // Secret Key |
| 18 | // Bitte sicherstellen das der gleiche Key in der datei config.php verwendet wird. |
| 19 | SECRET_KEY ='ABCDE'; |
| 20 | MODERATOR='Ich bins'; |
| 21 | |
| 22 | |
| 23 | // URL zu der 'update.php' des Webserver |
| 24 | UPDATE_URL='http://192.168.0.40/mairlist_status/update.php'; |
| 25 | |
| 26 | |
| 27 | |
| 28 | |
| 29 | |
| 30 | |
| 31 | |
| 32 | // *************** Ab hier ekien Änderungen vornehmen ! ******************** |
| 33 | |
| 34 | // aktuelle Version |
| 35 | VERSION='1.0.3'; |
| 36 | // Scriptname |
| 37 | SCRIPTNAME='studio_monitor_V6'; |
| 38 | POST_URL=UPDATE_URL+'?secret='+SECRET_KEY; |
| 39 | |
| 40 | |
| 41 | var |
| 42 | liz_name:string; |
| 43 | starttime: Longint; |
| 44 | onair_status:Integer; |
| 45 | |
| 46 | procedure OnLoad; |
| 47 | begin |
| 48 | onair_status:=0; |
| 49 | starttime := 0; |
| 50 | SystemLog(SCRIPTNAME + ' Version ' + VERSION + ' geladen'); |
| 51 | HTTPGetAsync(POST_URL+'&status=0'); |
| 52 | |
| 53 | end; |
| 54 | |
| 55 | |
| 56 | procedure OnUnload; |
| 57 | begin |
| 58 | onair_status:=0; |
| 59 | HTTPGetAsync(POST_URL+'&status=0&starttime=0'); |
| 60 | end; |
| 61 | |
| 62 | |
| 63 | procedure OnOffAir; |
| 64 | begin |
| 65 | onair_status:=0; |
| 66 | HTTPGetAsync(POST_URL+'&on_air_status=0&starttime=0'); |
| 67 | starttime := 0; |
| 68 | end; |
| 69 | |
| 70 | procedure OnOnAir; |
| 71 | |
| 72 | begin |
| 73 | onair_status:=1; |
| 74 | |
| 75 | liz_name:=URLencode(MODERATOR); |
| 76 | |
| 77 | starttime := Round((Now() - 25569.0 ) * (86400))-7200; |
| 78 | //-3600; |
| 79 | HTTPGetAsync(POST_URL+'&on_air_status=1&moderator='+liz_name+'&starttime='+IntToStr(starttime)); |
| 80 | SystemLog(POST_URL+'&on_air_status='+IntToStr(onair_status)+'&moderator='+liz_name+'&starttime='+IntToStr(starttime)); |
| 81 | end; |
| 82 | |
| 83 | |
| 84 | |
| 85 | procedure OnCartPlayerStart(PlayerIndex: integer; Item: IPlaylistItem); |
| 86 | begin |
| 87 | SystemLog('OnCartPlayerStart'); |
| 88 | end; |
| 89 | |
| 90 | |
| 91 | procedure OnCartPlayerStop (PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem); |
| 92 | begin |
| 93 | SystemLog('OnCartPlayerStop'); |
| 94 | |
| 95 | end; |
| 96 | |
| 97 | procedure OnCartwallPlayerStateChange(PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState; |
| 98 | Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; OnAirMode: TCartwallOnAirMode); |
| 99 | |
| 100 | var |
| 101 | row:Integer; |
| 102 | idx, i: Integer; |
| 103 | |
| 104 | begin |
| 105 | row := PlayerIndex-1 ; |
| 106 | idx := CurrentPlaylist.IndexOf(PlaylistItem); |
| 107 | |
| 108 | SystemLog('row' + IntToStr(row)); |
| 109 | SystemLog('debug' + IntToStr(idx)); |
| 110 | SystemLog('debug1' + IntToStr(i)); |
| 111 | //SystemLog('titel' + titel); |
| 112 | |
| 113 | |
| 114 | |
| 115 | if (NewState = psLoaded) then |
| 116 | begin |
| 117 | SystemLog('Cartwall loaded'); |
| 118 | end |
| 119 | |
| 120 | else if (NewState = psEmpty) then |
| 121 | begin |
| 122 | SystemLog('Cartwall empty'); |
| 123 | end |
| 124 | else if (NewState = psFading) then |
| 125 | begin |
| 126 | SystemLog('Cartwall fading'); |
| 127 | end |
| 128 | else if (NewState = psPlaying) then |
| 129 | begin |
| 130 | SystemLog('Cartwall playing'); |
| 131 | end |
| 132 | |
| 133 | else if (NewState = psLoading) then |
| 134 | begin |
| 135 | SystemLog('Cartwall loading'); |
| 136 | end |
| 137 | |
| 138 | else if (NewState = psStopped) then |
| 139 | begin |
| 140 | |
| 141 | SystemLog('Cartwall stopped'); |
| 142 | end; |
| 143 | |
| 144 | end; |
| 145 | |
| 146 | procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem); |
| 147 | var |
| 148 | idx, i: Integer; |
| 149 | pi: IPlaylistItem; |
| 150 | s_out:string; |
| 151 | titel:string; |
| 152 | artist:string; |
| 153 | activePlayer: Integer; |
| 154 | auto_modus: Integer; |
| 155 | |
| 156 | begin |
| 157 | //SystemLog('OnPlayerStop'); |
| 158 | idx := CurrentPlaylist.IndexOf(item); |
| 159 | if idx = -1 then begin |
| 160 | SystemLog('Das war kein Element aus unserer Playlist ...'); |
| 161 | exit; |
| 162 | end; |
| 163 | if (CurrentPlaylist.GetCount = 0) then begin |
| 164 | HTTPGetAsync(POST_URL+'?status=0'); |
| 165 | end; |
| 166 | auto_modus := 0; |
| 167 | SystemLog('suche nach aktive player auto_modus: ' + IntToStr(auto_modus)); |
| 168 | activePlayer := -1; |
| 169 | for i := 0 to CurrentPlaylist.GetPlayerCount - 1 do begin |
| 170 | if CurrentPlaylist.GetPlayer(i).GetState = psPlaying then begin |
| 171 | // SystemLog('Player '+ IntToStr(i) +' is playing... auto_modus: ' + IntToStr(auto_modus)); |
| 172 | auto_modus := 1; |
| 173 | break; |
| 174 | end; |
| 175 | end; |
| 176 | |
| 177 | if (auto_modus = 0) then begin |
| 178 | SystemLog('kein aktiver player gefunden'); |
| 179 | HTTPGetAsync(POST_URL+'&titel=&artist=&duration=00:00:00&eof=0'); |
| 180 | end; |
| 181 | i:= 0; |
| 182 | while (idx < CurrentPlaylist.GetCount) and (i < 4) do begin |
| 183 | pi := CurrentPlaylist.GetItem(idx); |
| 184 | titel:=URLencode( pi.GetTitle); |
| 185 | artist:=URLencode(pi.GetArtist); |
| 186 | |
| 187 | |
| 188 | s_out:= IntToStr(i) + '**::--' + FormatDateTime('hh:mm:ss', currentPlaylist.GetMetadata(i).getStartTime(sttCalculated)) + '**::--' + artist + '**::--' + titel + '**::--' + FormatDateTime('hh:mm:ss', (pi.GetDuration/(24*60*60))) ; |
| 189 | SystemLog(POST_URL+'&next_titel='+s_out) ; |
| 190 | HTTPGetAsync(POST_URL+'&next_titel='+s_out ); |
| 191 | Sleep(500); |
| 192 | i := i + 1; |
| 193 | idx := idx + 1; |
| 194 | end; |
| 195 | end; |
| 196 | |
| 197 | procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem); |
| 198 | var |
| 199 | titel:string; |
| 200 | artist:string; |
| 201 | ramp:string; |
| 202 | sglRamp: single; |
| 203 | begin |
| 204 | titel:=URLencode( Item.GetTitle); |
| 205 | artist:=URLencode(Item.GetArtist); |
| 206 | liz_name:=URLencode(MODERATOR); |
| 207 | |
| 208 | |
| 209 | |
| 210 | ramp:=FormatDateTime('hh:mm:ss', (Item.GetCuePosition(ptRamp1)/(24*60*60))); |
| 211 | |
| 212 | SystemLog('Player Start'); |
| 213 | 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); |
| 214 | 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); |
| 215 | |
| 216 | end; |
| 217 | |
| 218 | // Called when (playlist) player reaches EOF warning point (default: 10s before end) |
| 219 | procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer); |
| 220 | begin |
| 221 | HTTPGetAsync(POST_URL+'&eof=1'); |
| 222 | end; |
| 223 | |
| 224 | procedure OnAutomationOn(PlaylistIndex: integer); |
| 225 | begin |
| 226 | |
| 227 | HTTPGetAsync(POST_URL+'&auto_mode=1'); |
| 228 | end; |
| 229 | |
| 230 | procedure OnAutomationOff(PlaylistIndex: integer); |
| 231 | begin |
| 232 | |
| 233 | HTTPGetAsync(POST_URL+'&auto_mode=0'); |
| 234 | end; |
| 235 | |
| 236 | // Called when (playlist) player enters PFL |
| 237 | procedure OnPlayerPFLOn(PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer); |
| 238 | begin |
| 239 | SystemLog('OnPlayerPFLOn'); |
| 240 | end; |
| 241 | |
| 242 | // Called when (playlist) player leaves PFL |
| 243 | procedure OnPlayerPFLOff(PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer); |
| 244 | begin |
| 245 | //SystemLog('OnPlayerPFLOff'); |
| 246 | end; |
| 247 | |
| 248 | // Called when any player, cue editor, mix editor... enters PFL |
| 249 | // PFLCount is the number of active PFL sources |
| 250 | procedure OnPFLOn(Item: IPlaylistItem; PFLCount: integer); |
| 251 | begin |
| 252 | //SystemLog('OnPFLOn'); |
| 253 | |
| 254 | end; |
| 255 | |
| 256 | // Called when any player, cue editor, mix editor... leaves PFL |
| 257 | // PFLCount is the number of active PFL sources |
| 258 | procedure OnPFLOff(Item: IPlaylistItem; PFLCount: integer); |
| 259 | begin |
| 260 | //SystemLog('OnPFLOff'); |
| 261 | end; |
| 262 | |
| 263 | begin |
| 264 | end. |