Author Topic: Suche Script  (Read 1715 times)

Antenne

  • Regular
  • *
  • Posts: 136
    • View Profile
Suche Script
« on: December 26, 2007, 17:49:02 »
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... ;)
Kenne das z.B. vom DABIS.

Könnte mir jemand eins zusammenbasteln? ???

Danke, LG!

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #1 on: December 26, 2007, 18:11:55 »
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

Antenne

  • Regular
  • *
  • Posts: 136
    • View Profile
Re: Suche Script
« Reply #2 on: December 26, 2007, 18:33:51 »
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 ::)

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...

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #3 on: December 26, 2007, 18:38:24 »
ja klar :) ich meinte größer und schrieb kleiner :D ...

jo klar kann man das dann ändern...

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

grüße, michi

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #4 on: December 26, 2007, 20:14:26 »
Code: [Select]
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
Code: [Select]
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).

Code: [Select]
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
« Last Edit: December 26, 2007, 20:18:46 by flashlighter »

Antenne

  • Regular
  • *
  • Posts: 136
    • View Profile
Re: Suche Script
« Reply #5 on: December 26, 2007, 20:47:24 »
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:

Code: [Select]
nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 1/1440*55;...?

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #6 on: December 26, 2007, 21:15:07 »
Hi,
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?

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:

Code: [Select]
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).


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

Code: [Select]
nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0) + 1/1440*55;...?


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

Antenne

  • Regular
  • *
  • Posts: 136
    • View Profile
Re: Suche Script
« Reply #7 on: December 26, 2007, 21:39:26 »
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?

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #8 on: December 26, 2007, 21:49:50 »
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
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?


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

Was ist da los?

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.



Antenne

  • Regular
  • *
  • Posts: 136
    • View Profile
Re: Suche Script
« Reply #9 on: December 26, 2007, 22:02:59 »
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?

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #10 on: December 26, 2007, 22:20:16 »
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?


Ich weiss nicht wie du Das meinst ;)

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

Antenne

  • Regular
  • *
  • Posts: 136
    • View Profile
Re: Suche Script
« Reply #11 on: December 26, 2007, 22:21:58 »
Ich meine letzteres - b ;)
Immer wenn ich es aufrufe, egal zu welcher Zeit, sollen die Elemente markiert werden (gelb am liebsten, aber im Grunde egal ;D)

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #12 on: December 26, 2007, 22:24:04 »
TZTZTZ, warum sagst das denn nicht gleich? ;)

flashlighter

  • Regular
  • *
  • Posts: 643
    • ICQ Messenger - 289125779
    • View Profile
    • http://www.flashlighter.de
    • Email
Re: Suche Script
« Reply #13 on: December 26, 2007, 22:26:24 »
Code: [Select]
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.

Antenne

  • Regular
  • *
  • Posts: 136
    • View Profile
Re: Suche Script
« Reply #14 on: December 26, 2007, 22:29:45 »
Wie peinlich ;)

Jawoll, jetzt haut's hin!
Ich danke Dir vielmals, super! :)