Tarantula is YSTV's new scheduling and automation system, to control the Video Server and output matrix, enabling the Scheduling Manager to queue up shows to play on the web stream throughout the day, like a "real" TV channel. It supports text and Flash graphics overlay with CasparCG, playlists, device control via plugins and the ability to automatically schedule short videos such as idents and trailers to fill a specified time period.


User Interface

For users granted access to the system on the website, Tarantula is here. The main view should show yesterday, today and tomorrow's schedule, and a calendar on the left allows selection of other centre dates. Be careful to avoid crossing midnight with an event, as while the event will still run, the user interface will be broken until the event has run.

Seven different types of events can be added using the Add links in the top left; the types and details fields are summarised below. For every event type a Date and Time to start must be set (time in HH:MM:SS format), along with a description. The description is used to display the event on the internal schedule, and also as the show name in the Now or Next graphics.

Pre-recorded Show

Anything from the YSTV back catalogue, with a brief continuity fill at the beginning, where the system will automatically select an ident and a couple of trailers to run before the event, along with generating graphics to show the current and next show, and in-show popups for the same.

Either select a video from the drop-down list, or use the search box and hit the 'Select Video' link in one of the results.

Live Show

Generates the same continuity fill as before, along with a switch to the live show rig and an instruction to PiVT to play a 30-second countdown clock right before the show starts. Will also interact with the director control application so the show can be moved around and delayed as needed.

During a live show, future events will be stalled until the show finishes, and when it does (as marked by the Director Control 'Stop' button) they will be moved around to account for the show running too long or too short.

A duration of the show needs to be filled in to the Length box, in HH:MM:SS form.

Information Slideshow

Shows a series of info slides. Length in HH:MM:SS form.


Shows an analogue clock. Length in HH:MM:SS form.


Exactly like Pre-recorded show, but without any of the continuity filling at the beginning.


Render a custom graphics event, which will be added with some data at the start time, and removed after whatever Length was set to.

Length in HH:MM:SS form, the Template Name field is the name by which the graphic is known to the Video Server and the data fields will allow custom text, such as the now and next text automatically added to the continuity graphics.

Automatic (Lazy) Mode

Fill a length of time with anything from the YSTV back-catalogue, as if it were added as a pre-recorded show. As this isn't a particularly clever system, it could schedule anything (although it will aim to avoid repeating too often), for example Christmas shows in summer, Elections manifestos or Checkmate!

In this mode the description fields are filled in from the video box name on the website.

Idents and Trailers

For videos uploaded to the website which are channel idents or trailers that Tarantula can used to fill in space, set the Video Type and Weighting Factor in the Scheduler Settings box on the video's admin page, either when the video is added or by clicking the pencil icon, and then Update Details.


Tarantula itself is running on ystvstrm1 within a GDB instance in a root screen session. It is written in C++ and the configuration is set by XML files in /opt/Tarantula/config_base.

Synchronisation of the website videos with the Tarantula database is handled by a script in /opt which is run by a cronjob every hour, and pulls the video lists from the website to update the Tarantula list.


Tarantula was developed as an open-source project, so check out the Trac pages at https://ystvdev.york.ac.uk/trac/Tarantula for status on the project and access to the source code to get involved.