Script: Hook Container

Welche Möglichkeiten habe ich mit der Scriptsprache zum Hook-Container erstellen?

  • Kann ich z.B. aus den 1-5 Elementen ein Hookcontainer erstellen lassen?
  • Kann ich aus der Playlist der nächsten Stunde die ersten 3 Titel auslesen und daraus einen Hook-Container erstellen?

Danke für einen Tipp

Sollte man nicht wenigstens abfragen, ob die Hook Punkte in diesen Titeln überhaupt gesetzt sind?
Ich würde also eher sagen:
Bilde mir aus den ersten X Titeln mit gesetzten Hook Punkten einen Hook Container.
Da hätte ich auch interesse an so einem Script.

Greetz
Malte

Ja, dies wäre natürlich auch wichtig. Kann sicher in einem zweiten Schritt folgen.
Werde mal in den kommenden Tagen versuchen ein Script zu schreiben.

Moin, auf der suche nach einem Post bzgl. nem hook-script, welchen ich schon mal gelesen hab, bin ich hier gelandet.

Gibt es denn nun eigentlich ein solches ? und wenn ja, wo ?

LG Thomas

[quote=“Radio4Players, post:4, topic:6623”]Moin, auf der suche nach einem Post bzgl. nem hook-script, welchen ich schon mal gelesen hab, bin ich hier gelandet.

Gibt es denn nun eigentlich ein solches ? und wenn ja, wo ?

LG Thomas[/quote]ich hab vor paar Tagen hier was gelesen von einem Script was sich Hook-Points in Songs der gerade geladenen PL sucht, einen Container baut und den auf einen Platzhalter an den Anfang der PL stellt. Aber frag mich nich wo das war…

gefunden, danke

Wo sind die scripter ?

Folgendes funktionierendes script ist aus dem engl. Forum, allerdings letzter Stand November 2013.

ich habe folgendes Problem:
Obwohl im Encoder bei mir Container nicht mitgeschickt werden soll (ID3Tags) werden die angezeigt als Coming up.

var
  i, iItemCount, iMax, iVol, iToth: integer;
  i64Duration: TTimeValue;
  sArtist : string;
  sMessage, sPlaylist, sTitle : string;
  currentItem, ItemHook, ItemHook2: IPlaylistItem;
  ads: IContainerPlaylistItem;
  adsPlaylist, newPlaylist: IPlaylist;
  adsContainerAsPlaylistItem, piNews: IPlaylistItem;
  sFileName, sOpener, sCloser, sMiddle: string;
  i64HookIn, i64HookFade, i64HookOut: TTimeValue;

  const SONG_MIN_LENGTH = 900000000;	

procedure startMarkup;
begin

  for i := 0 to Playlist(0).GetCount -1 do
  begin

  if Playlist(0).GetItem(i).GetTitle = 'Top of the hour' then begin
	iToth := i;
	SystemLog(Playlist(0).GetItem(i).GetTitle);
	break;
  end;
  end;

end;

procedure MarkupCurrentPlaylist;
begin

// Set values (REPLACE THESE WITH YOUR OWN)
  sOpener := 'Opener.mp3';
  sMiddle := 'Middle.mp3';
  sCloser := 'Closer.mp3';


// Reset counters etc.
  iMax := iItemCount - 1;
  iVol := 0;

// Display our start up message
  SystemLog('Hook: '
    + 'Checking the playlist, looking for songs with Hooks.');

ads.GetPlaylist.InsertFile(0, sOpener, [fitMMD, fitTags, fitNativeTags, fitDuration, fitTilde, fitAutoCue, fitDatabaseLookup]);

// Step through each item in the current (selected) Playlist
  for i := iToth + 2 to Playlist(0).GetCount -1 do
  begin

    
// Create a local reference to the current item
// This makes all subsequent code easier to read and slightly faster to process
    currentItem := Playlist(0).GetItem(i);

// Store the current item's Artist, Title, and Effective Duration
    sArtist := currentItem.GetArtist;
    sTitle := currentItem.GetTitle;
    i64Duration := currentItem.GetDuration;

// Is this a song?
    if 0 >= 0 then
    begin
      

// Add the song to the container and set it to a hook.

ItemHook := iPlaylistItem(currentItem.Clone);

i64HookIn := ItemHook.GetCuePosition(ptHookIn);
i64HookFade := ItemHook.GetCuePosition(ptHookFade);
i64HookOut := ItemHook.GetCuePosition(ptHookOut);


if (i64HookIn > 0) then
begin
//	SystemLog('Added');
	ads.GetPlaylist.Add(ItemHook);
	if (iVol < 2) then
	begin
         ads.GetPlaylist.InsertFile(ads.GetPlaylist.GetCount, sMiddle, [fitMMD, fitTags, fitNativeTags, fitDuration, fitTilde, fitAutoCue, fitDatabaseLookup]);
	end;
	ItemHook.SetCuePosition(ptCueIn, i64HookIn);
	ItemHook.SetCuePosition(ptFadeOut, i64HookFade);
	ItemHook.SetCuePosition(ptStartNext, i64HookFade);
	ItemHook.SetCuePosition(ptCueOut, i64HookOut);
	ItemHook.SetArtist('Coming up: '+ currentItem.GetArtist);
	iVol := iVol + 1
end;

if (iVol = 3) then
begin
 break;
end;

SystemLog('Hook: ' + 'Item '
        + IntToStr(i + 1)
        + ' ('
        + Trim(currentItem.GetTitle)
        + ' / '
        + Trim(currentItem.GetArtist)
        + ') '
        + '.');

    end
      

  end;  // of for... loop


// All Playlist items processed, inform user

     if (ivol < 3) then
     begin
     ads.GetPlaylist.Delete(ads.GetPlaylist.GetCount -1);
     end;
   ads.GetPlaylist.InsertFile(ads.GetPlaylist.GetCount, sCloser, [fitMMD, fitTags, fitNativeTags, fitDuration, fitTilde, fitAutoCue, fitDatabaseLookup]);

  SystemLog('Hook: ' + 'Checking done.');

end;



begin

// Create a new Container Item
  ads := Factory.CreateContainerPlaylistItem;

// create a copy of the reference as an IPlaylistItem interface
   
   adsContainerAsPlaylistItem := IPlaylistItem(ads);
   startMarkup;
   MarkupCurrentPlaylist;

   adsContainerAsPlaylistItem.SetTitle('Coming Up Next'); 
 
   Playlist(0).Insert(iToth + 1, adsContainerAsPlaylistItem);

end.

ein einfaches entfernen der Zeile zeigt natürlich keine Reaktion, und ich bin KEIN scripter.

ich hab keine Ahnung was dieses Script macht (soviel zum Thema Scripter) aber wenn es eins zum Themaa ist… nur mal so als Gedanke: Es baut aus den Hooks dreier Songs einen Container und stellt diesen auf einen Platzhalter… legt man diesen Container vorher schon als “blank” an? Vielleicht kann man den auf diesem Weg oder evtl. den Platzhalter von vornherein “vom Logging ausschließen”

hm, wie gesagt es funktioniert hervorragend, aber
ich denke im script ist irgendwo definiert, ID3Tag.

Meine Frage also nochmals, kann das jemand sich ansehen, bitte.

@ dj, ich bezweifel das es so klappt, bei mir sind ja container auch nicht im logging einbezogen.

niemand der helfen kann ?