Ostatnio aktywny 14 hours ago

Rewizja 5aa09362eb68213c216355867838a9928d9cbb19

studio_monitor_V6.mls Surowy
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
16const
17// Secret Key
18// Bitte sicherstellen das der gleiche Key in der datei config.php verwendet wird.
19SECRET_KEY ='ABCDE';
20MODERATOR='Ich bins';
21
22
23// URL zu der 'update.php' des Webserver
24UPDATE_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
35VERSION='1.0.3';
36// Scriptname
37SCRIPTNAME='studio_monitor_V6';
38POST_URL=UPDATE_URL+'?secret='+SECRET_KEY;
39
40
41var
42 liz_name:string;
43 starttime: Longint;
44 onair_status:Integer;
45
46procedure OnLoad;
47begin
48 onair_status:=0;
49 starttime := 0;
50 SystemLog(SCRIPTNAME + ' Version ' + VERSION + ' geladen');
51 HTTPGetAsync(POST_URL+'&status=0');
52
53end;
54
55
56procedure OnUnload;
57begin
58 onair_status:=0;
59 HTTPGetAsync(POST_URL+'&status=0&starttime=0');
60end;
61
62
63procedure OnOffAir;
64begin
65 onair_status:=0;
66 HTTPGetAsync(POST_URL+'&on_air_status=0&starttime=0');
67 starttime := 0;
68end;
69
70procedure OnOnAir;
71
72begin
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));
81end;
82
83
84
85procedure OnCartPlayerStart(PlayerIndex: integer; Item: IPlaylistItem);
86begin
87 SystemLog('OnCartPlayerStart');
88end;
89
90
91procedure OnCartPlayerStop (PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
92begin
93 SystemLog('OnCartPlayerStop');
94
95end;
96
97procedure OnCartwallPlayerStateChange(PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState;
98 Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; OnAirMode: TCartwallOnAirMode);
99
100var
101 row:Integer;
102 idx, i: Integer;
103
104begin
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
144end;
145
146procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
147var
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
156begin
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;
195end;
196
197procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
198var
199 titel:string;
200 artist:string;
201 ramp:string;
202 sglRamp: single;
203begin
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
216end;
217
218// Called when (playlist) player reaches EOF warning point (default: 10s before end)
219procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
220begin
221 HTTPGetAsync(POST_URL+'&eof=1');
222end;
223
224procedure OnAutomationOn(PlaylistIndex: integer);
225begin
226
227 HTTPGetAsync(POST_URL+'&auto_mode=1');
228end;
229
230procedure OnAutomationOff(PlaylistIndex: integer);
231begin
232
233 HTTPGetAsync(POST_URL+'&auto_mode=0');
234end;
235
236// Called when (playlist) player enters PFL
237procedure OnPlayerPFLOn(PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
238begin
239 SystemLog('OnPlayerPFLOn');
240end;
241
242// Called when (playlist) player leaves PFL
243procedure OnPlayerPFLOff(PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
244begin
245 //SystemLog('OnPlayerPFLOff');
246end;
247
248// Called when any player, cue editor, mix editor... enters PFL
249// PFLCount is the number of active PFL sources
250procedure OnPFLOn(Item: IPlaylistItem; PFLCount: integer);
251begin
252 //SystemLog('OnPFLOn');
253
254end;
255
256// Called when any player, cue editor, mix editor... leaves PFL
257// PFLCount is the number of active PFL sources
258procedure OnPFLOff(Item: IPlaylistItem; PFLCount: integer);
259begin
260 //SystemLog('OnPFLOff');
261end;
262
263begin
264end.