First copy the example variables file into the usable format and edit its contents to match proper settings (like year):


Shell scripts in the root directory are meant to be used for data updates and fetches. The main logic generally resides in lib/*.py files and these shell scripts only give them appropriate arguments using file's contents.

This provides scripts for handling data during and after the event. There are different approaches for handling published entries during the event and outside the event depending on if the entry information is available in machine-friendly format.

Data handling during the event

During the event the main goal of Assembly Archive and videos on Youtube is to provide a preview possibility for visitors so that they can more carefully base their votes on PMS, and for people who miss the competition from the big screen to be able to view competition entries. This is divided into three different processes based on the type of the content we're working with:

  1. Image file acquisition, conversion, and thumbnail creation.
  2. Music file acquisition, video conversion, and Youtube upload.
  3. Video file acquisition and Youtube upload, or Youtube link handling.

Entry information (names, authors, vote results, detailed entry information) usually comes directly from PMS. Image and music files can be downloaded from PMS, but videos usually go through video conversion process and get uploaded to Youtube by someone else.

Contacts and rights needed during the event

  1. access to PMS with entry download rights for music and graphics competitions, or some other way to acquire such files. 1.1. This also needs access to someone who can make 1920x1080 music background file that can be added to videos for music entries that are uploaded to Youtube.
  2. API access rights to PMS.
  3. Youtube account.
  4. Address for elaine data dump (vods.xml).
  5. All the people who may upload data to Youtube.

PMS access is for the fact that we need to convert images and music to a format that can be viewed through web. They are usually available through PMS with compo admin rights. Other places to acquire them are from people who are responsible for such competitions and through Assembly file servers that Compocrew and HallAV use to share slides for graphics competitions. Files can also be shared through the sneakernet between Compocrew and HallAV, so it's usually beneficial to contact the people responsible for graphics and music competitions beforehand so that they know about who to contact if there are any issues.

We use Youtube for music entry playback instead of providing our own web based player, as that way we can leverage the large amount of devices and browsers that work with Youtube. This is the reason why we need a specific background for music competition entries. 1920x1080 resolution is just for it that we can make Youtube to use the highest sound quality for the playback.

API access to PMS

Process for PMS based data

Get existing PMS categories:


Seed category data with entries when they are known:

./ <category-name>

Do archive export and update PMS preview links:

./ <category-name>

Do this during the event and either add ":public true" ":public false" and ":ongoing true" ":ongoing false" fields to different compo categories.

"Export compos" link.

Process for Elaine based data


A reusable library that is used to handle these data files programmatically is at lib/

Data format