最后活跃于 12 hours ago

thomas's Avatar thomas 修订了这个 Gist 12 hours ago. 转到此修订

1 file changed, 264 insertions

studio_monitor_V6.mls(文件已创建)

@@ -0,0 +1,264 @@
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.
上一页 下一页