Suche Script

Hallo zusammen,

ich suche ein Script, welches mir den/die Titel in der Playlist (gelb z.B.) markiert, wenn dieser Song in der laufenden Sendestunde nicht mehr gespielt werden kann, da er über die Stunde hinaus gehen würde, weil er zu lang ist.
Hoffe, man versteht es einigermaßen… :wink:
Kenne das z.B. vom DABIS.

Könnte mir jemand eins zusammenbasteln? ???

Danke, LG!

Hi,

du möchtest also quasi die länge jedes einzelnen Playlistelements mit der zeit bis zur nächsten vollen Stunde vergleichen. Wenn die Länge des Items kleiner ist wie die Zeit zur vollen Stunde, soll dieses Item gelb markiert werden.

ist das richtig so?

grüße, michi

Hm, müsste es nicht heißen “die Länge des Items größer ist, als die Zeit bis zur vollen Stunde” ?

Also es sollen die Elemente markiert werden, die nicht mehr “rein passen” in die laufende Stunde ::slight_smile:

Wünschenswert wäre es noch, wenn man im Script leicht die Zeit ändern kann - also dass man auch mal die Elemente markieren kann, die bis 5 vor Voll nicht mehr reinpassen…ist das zu realisieren?
Oder gleich 2 Scripts?

Hoffe, es ist einigermaßen klar…

ja klar :slight_smile: ich meinte größer und schrieb kleiner :smiley:

jo klar kann man das dann ändern…

wenn ich nacher lust habe, probier ich mal ob ichs hinbekomme

grüße, michi

var nextHour: TDateTime; jetzigeStunde: Integer; jetzt: TDateTime; sekBisNextHour: Integer; i: Integer; begin jetzigeStunde := StrToInt(FormatDateTime('h', now)); jetzt:=now; nextHour :=Date; nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 0.0416666666; sekBisNextHour := Round((nextHour-jetzt)*86400); for i:=0 to CurrentPlaylist.GetCount-1 do begin if (CurrentPlaylist.GetItem(i).GetEffectiveDuration/10000000) > (sekBisNextHour) then begin CurrentPlaylist.GetItem(i).SetColor(clRed); CurrentPlaylist.GetItem(i).SetColored(true); end; end; end.

Zeile 11

nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0)Also zuerst wird eine Zeit generiert, die die Zeit am Anfang dieser Stunde repräsentiert (z.B Jetzt ist es 14:30, dann repräsentiert nextHour 14:00:00).

nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 0.0416666666;

Die 0.04166666 steht für eine Stunde. Diese wird dazugezählt, damit nextHour den anfang der nächsten Stunde beinhaltet. Sie errechnet sich foilgendermaßen:

1 = 1 Tag
1/24 = 0,041666 = 1 h
1/1440 = 1minute

wenn du jetzt 5 min vor anfang der nächsten Stunde abfragen möchtest, nimmst du eine Minute (1/1440) und nimmst es mit 55 mal.

grüße, michi

Danke für Deine Mühe!

Nur will es noch nicht so recht funktionieren bei mir.
Bei der vollen Stunde passiert rein gar nichts, und bei der Version um 5 vor werden ALLE Elemente (rot) markiert… ???
Muss ich an den Scripts noch irgendwas ändern?

Und ist es richtig, bei der Variante für 5 vor, dass es dann so aussehen muss:

nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 1/1440*55;

…?

Hi,

[quote=“Antenne, post:6, topic:4595”]Nur will es noch nicht so recht funktionieren bei mir.
Bei der vollen Stunde passiert rein gar nichts, und bei der Version um 5 vor werden ALLE Elemente (rot) markiert… ???
Muss ich an den Scripts noch irgendwas ändern?[/quote]

Eigentlich musst du nix ändern.
Hast du das Script genau so kopiert wie es jetzt oben steht (habe um 19:18 nochmal was kleines verändert).
Ich kopiers dir nochmal rein, weil ich nichtmehr genau weiss ob ich was verändert hab beim testen gerade, aber bei funktioniert es garantiert mit diesem Script:

var nextHour: TDateTime; jetzigeStunde: Integer; jetzt: TDateTime; sekBisNextHour: Integer; i: Integer; begin jetzigeStunde := StrToInt(FormatDateTime('h', now)); jetzt:=now; nextHour :=Date; nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 0.0416666666; sekBisNextHour := Round((nextHour-jetzt)*86400); SystemLog(FloatToStr(sekBisNextHour) + FloatToStr(nextHour)); for i:=0 to CurrentPlaylist.GetCount-1 do begin if (CurrentPlaylist.GetItem(i).GetEffectiveDuration/10000000) > (sekBisNextHour) then begin CurrentPlaylist.GetItem(i).SetColor(clRed); CurrentPlaylist.GetItem(i).SetColored(true); end; end; end.

…das ist komisch, denn bei mir funktionierts. Hast du zum Test auch die Systemzeit verändert und nicht die mAirList-Zeit?

wenns immernoch nicht funktioniert, schick mir mal deine Konfigurationsdateien (entweder hier als anhang oder per mail an public@flashlighter.de).

[quote=“Antenne, post:6, topic:4595”]Und ist es richtig, bei der Variante für 5 vor, dass es dann so aussehen muss:

nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 1/1440*55;

…?[/quote]

Ich habs gerade ausprobiert, bei mir wird dann auch alles rot. woran das jetzt liegt weis ich auch nicht. Beim genauen Wert (0.03819444444 <—beachte: Komma ist ein PUNKT ) funktioniert es bei mir. also immer den genauen Wert hinschreiben…

grüße, michi

Also beide Scripts funktionieren nicht. Passiert gar nichts.

Bei dem für Voll steht dann unten in der kleinen Spalte unter den Playern (Standard-Design):
[Uhrzeit] 184139442,916666666

Und bei dem für 5 vor:
[Uhrzeit] [Error] (10:59): Identifier expected

Was ist da los?

[quote=“Antenne, post:8, topic:4595”]Also beide Scripts funktionieren nicht. Passiert gar nichts.

Bei dem für Voll steht dann unten in der kleinen Spalte unter den Playern (Standard-Design):
[Uhrzeit] 184139442,916666666[/quote]
Das ist ne Testausgabe, die ich vergessen habe zu entfernen… (“SystemLog(FloatToStr(sekBisNextHour) + FloatToStr(nextHour));”). hat aber keine Auswirkung auf die Funktion des Scripts.

Ein PlaylistItem wird dann Rot gefärbt, wenn die Länge Des Items größer ist als die zeitspanne zwischen jetzt und der nächsten vollen Stunde (bzw des eingestellten Werts).
du must also zum Testen die Systemzeit ändern… ist dir das bewusst?

[quote=“Antenne, post:8, topic:4595”]Und bei dem für 5 vor:
[Uhrzeit] [Error] (10:59): Identifier expected

Was ist da los?[/quote]

gemeint ist: nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 0.0416666666;

Ich vermute du hast die Zahl mit komma anstatt mit punkt geschrieben. Flieskommazahlen müssen immer mit PUNKT geschrieben werden.

Also Sytemzeit hab ich jetzt eben paar Mal geändert…also mal ne Minute vorgestellt. Ändert aber nichts.
Spielt es eine Rolle, das mAirList bei mir die Uhrzeiten der Elemente für den Start laufend aktualisiert?

[quote=“Antenne, post:10, topic:4595”]Also Sytemzeit hab ich jetzt eben paar Mal geändert…also mal ne Minute vorgestellt. Ändert aber nichts.
Spielt es eine Rolle, das mAirList bei mir die Uhrzeiten der Elemente für den Start laufend aktualisiert?[/quote]

Ich weiss nicht wie du Das meinst :wink:

Mal was Grundsätzliches, da ich glaube, dass wir aneinander vorbeireden:

Sucht du ein Script, das

a: wenn du es um kurz vor Ende der Stunde aufrufst, es dir alle Items Rot färbt, die Nichtmehr in die Stunde reinpassen würden? (so wie ich es oben geschrieben habe)

b: wenn du es irgendwann mitten in der Stunde aufrust, es dir zeigt, wieweit die Playlist in dieser Stunde noch spielen wird?

michi

Ich meine letzteres - b :wink:
Immer wenn ich es aufrufe, egal zu welcher Zeit, sollen die Elemente markiert werden (gelb am liebsten, aber im Grunde egal ;D)

TZTZTZ, warum sagst das denn nicht gleich? :wink:

var nextHour: TDateTime; jetzigeStunde: Integer; jetzt: TDateTime; sekBisNextHour: Integer; i: Integer; summe: Integer; begin jetzigeStunde := StrToInt(FormatDateTime('h', now)); jetzt:=now; nextHour :=Date; nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 0.0416666666; sekBisNextHour := Round((nextHour-jetzt)*86400); summe:=0; for i:=0 to CurrentPlaylist.GetCount-1 do begin summe:=summe+CurrentPlaylist.GetItem(i).GetEffectiveDuration/10000000; if summe > (sekBisNextHour) then begin CurrentPlaylist.GetItem(i).SetColor(clYellow); CurrentPlaylist.GetItem(i).SetColored(true); end; end; end.

Wie peinlich :wink:

Jawoll, jetzt haut’s hin!
Ich danke Dir vielmals, super! :slight_smile:

Das macht dann einen Kaffee, wenn du mal durch Schwäbisch Hall bzw ab August durch Stuttgart kommst :wink:

Alles klar! Stuttgart passt dann sowieso besser ;D

Wohnst du da? das wäre ja ein zufall :wink:

Nee, das nicht. Aber ich war schon paar Mal in Stuttgart und komme dort auch öfter hin, als nach Schwäbisch Hall. Den Ort kenn ich nur aus der Werbung :wink: In Stuttgart kenn ich mich etwas aus :wink:

Auf diese Steine .... ;)

na dann freue ich mich auf den Kaffee :slight_smile:

grüße, michi