Skip to content

Instantly share code, notes, and snippets.

@g30r93g
Created April 5, 2024 23:02
Show Gist options
  • Select an option

  • Save g30r93g/6b3d0da592d7c5b3b9a765bc69b16527 to your computer and use it in GitHub Desktop.

Select an option

Save g30r93g/6b3d0da592d7c5b3b9a765bc69b16527 to your computer and use it in GitHub Desktop.
Convert a cue sheet file to YouTube timestamps
def parse_cue_sheet(filename):
"""Parses a CUE sheet and returns a list of track dictionaries.
Args:
filename: The path to the CUE sheet file.
Returns:
A list of dictionaries, where each dictionary contains the following keys:
order: The order of the track in the CUE sheet.
title: The title of the track.
performer: The performer of the track.
timestamp: The start time of the track in HH:MM:SS format.
"""
tracks = []
current_track = {}
with open(filename, 'r') as f:
print("Parsing CUE sheet...")
for line in f:
parts = line.strip().split(' ')
if "TRACK" in parts:
if current_track != {}:
tracks.append(current_track)
current_track = {}
current_track['order'] = int(parts[1])
if "INDEX" in parts:
start_time = parts[2].split(':')
start_time_secs = int(start_time[1])
start_time_mins = int(start_time[0]) % 60
start_time_hrs = start_time_mins // 60
current_track['timestamp'] = f"{start_time_hrs:02d}:{start_time_mins:02d}:{start_time_secs:02d}"
if "TITLE" in parts:
current_track['title'] = line.replace('TITLE "', '').replace('"\n', '').strip()
if "PERFORMER" in parts:
current_track['performer'] = line.replace('PERFORMER "', '').replace('"\n', '').strip()
return tracks
cue_file = "./tracklist-copy.cue"
tracks = parse_cue_sheet(cue_file)
print(f"Found {len(tracks)} tracks in {cue_file}")
for track in tracks:
print(f" • {track.get('timestamp')}: {track['performer']} - {track['title']}")
# Sample based off of Pirapus' CIRCUIT DREAMS DJ Set: https://www.youtube.com/watch?v=VdLQfQwG4E4
PERFORMER "Pirapus"
TITLE "Circuit Dreams [DJ Set]"
FILE "Pirapus - Circuit Dreams [DJ Set]" M4A
TRACK 01 AUDIO
TITLE "Intro (Mixed)"
PERFORMER "Pirapus"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "Mesmer (Mixed)"
PERFORMER "Circadian, SOTA and Mila Falls"
INDEX 01 00:27:00
TRACK 03 AUDIO
TITLE "ID1 (Mixed)"
PERFORMER "ID"
INDEX 01 02:33:00
TRACK 04 AUDIO
TITLE "Hold You (Mixed)"
PERFORMER "Atmos"
INDEX 01 03:46:00
TRACK 05 AUDIO
TITLE "ID2"
PERFORMER "ID"
INDEX 01 04:43:00
TRACK 06 AUDIO
TITLE "ID3"
PERFORMER "ID"
INDEX 01 05:23:00
TRACK 07 AUDIO
TITLE "Griztronics [Reaper Remix] (Mixed)"
PERFORMER "Griz & Subtronics"
INDEX 01 05:47:00
TRACK 08 AUDIO
TITLE "ID4"
PERFORMER "ID"
INDEX 01 06:24:00
TRACK 09 AUDIO
TITLE "Back In Time (Mixed)"
PERFORMER "A Little Sound"
INDEX 01 07:08:00
TRACK 10 AUDIO
TITLE "Don't Be Scared (Mixed)"
PERFORMER "Bensley & Justin Hawkes"
INDEX 01 08:06:00
TRACK 11 AUDIO
TITLE "ID5"
PERFORMER "ID"
INDEX 01 08:50:00
TRACK 12 AUDIO
TITLE "Acid Shot (Mixed)"
PERFORMER "Enei"
INDEX 01 09:34:00
TRACK 13 AUDIO
TITLE "Aim For The Head (Mixed)"
PERFORMER "TEO HERUM"
INDEX 01 10:28:00
TRACK 14 AUDIO
TITLE "Skyline (feat. Metrik) (Mixed)"
PERFORMER "Grafix"
INDEX 01 11:22:00
TRACK 15 AUDIO
TITLE "Rhythm (Mixed)"
PERFORMER "Tantrum Desire"
INDEX 01 12:44:00
TRACK 16 AUDIO
TITLE "Lost With U (feat. Brody Leigh) (Mixed)"
PERFORMER "Pirapus"
INDEX 01 13:52:00
TRACK 17 AUDIO
TITLE "Lights (Mixed)"
PERFORMER "The Prototypes"
INDEX 01 15:00:00
TRACK 18 AUDIO
TITLE "Dynamite (Mixed)"
PERFORMER "Pirapus"
INDEX 01 16:04:00
TRACK 19 AUDIO
TITLE "Titanium [ID Bootleg] (Mixed)"
PERFORMER "David Guetta"
INDEX 01 17:13:00
TRACK 20 AUDIO
TITLE "ID6"
PERFORMER "ID"
INDEX 01 18:08:00
TRACK 21 AUDIO
TITLE "ID7"
PERFORMER "ID"
INDEX 01 18:44:00
TRACK 22 AUDIO
TITLE "ID8"
PERFORMER "ID"
INDEX 01 19:19:00
TRACK 23 AUDIO
TITLE "Fluxo Em Paris (Mixed)"
PERFORMER "Ventura"
INDEX 01 20:10:00
TRACK 24 AUDIO
TITLE "Huhhh (VIP) (Mixed)"
PERFORMER "QUIX"
INDEX 01 20:35:00
TRACK 25 AUDIO
TITLE "ID9"
PERFORMER "ID"
INDEX 01 21:50:00
TRACK 26 AUDIO
TITLE "STAR MVCHINE (feat. Indy Skies) (Mixed)"
PERFORMER "Pirapus"
INDEX 01 22:30:00
TRACK 27 AUDIO
TITLE "Back To U [Matrix & Futurebound Remix] (Mixed)"
PERFORMER "SLANDER & William Black"
INDEX 01 24:05:00
TRACK 28 AUDIO
TITLE "STAR MVCHINE x Back To U (Mixed)"
PERFORMER "Pirapus, SLANDER & William Black"
INDEX 01 24:55:00
TRACK 29 AUDIO
TITLE "Signal [Ivory Remix] (Mixed)"
PERFORMER "Trampa"
INDEX 01 25:57:00
TRACK 30 AUDIO
TITLE "ID10"
PERFORMER "ID"
INDEX 01 27:00:00
TRACK 31 AUDIO
TITLE "ID11"
PERFORMER "ID"`
INDEX 01 27:20:00
TRACK 32 AUDIO
TITLE "MHITR (Mixed)"
PERFORMER "Hedex"
INDEX 01 28:05:00
TRACK 33 AUDIO
TITLE "Deeper (Mixed)"
PERFORMER "Original Sin, Sub Zero & Gracie Van Brunt"
INDEX 01 29:34:00
TRACK 34 AUDIO
TITLE "SO HIGH (Mixed)"
PERFORMER "Pirapus"
INDEX 01 31:24:00
TRACK 35 AUDIO
TITLE "Unspoken (feat. Elle Exxe) [MUZZ & Oliverse Remix] (Mixed)"
PERFORMER "Oliverse & MUZZ"
INDEX 01 32:55:00
TRACK 35 AUDIO
TITLE "In The City (Mixed)"
PERFORMER "Basstripper"
INDEX 01 34:09:00
TRACK 36 AUDIO
TITLE "SUMS (feat. Roddy Campbell) (Mixed)"
PERFORMER "Pirapus"
INDEX 01 34:43:00
TRACK 37 AUDIO
TITLE "INNERBLOOM [Pirapus Bootleg] (Mixed)"
PERFORMER "RÜFÜS DU SOL"
INDEX 01 37:36:00
TRACK 38 AUDIO
TITLE "Yellow Jacket (Mixed)"
PERFORMER "Junk Mail"
INDEX 01 39:26:00
TRACK 39 AUDIO
TITLE "The Weapon (Mixed)"
PERFORMER "Kanine"
INDEX 01 40:00:00
TRACK 40 AUDIO
TITLE "Bassline (Mixed)"
PERFORMER "GotSome"
INDEX 01 40:32:00
TRACK 41 AUDIO
TITLE "Komodo (Mixed)"
PERFORMER "Whiney"
INDEX 01 41:38:00
TRACK 42 AUDIO
TITLE "Ride Or Die (feat. Indy Skies) (Mixed)"
PERFORMER "Pirapus, Andromedik & Indy Skies"
INDEX 01 42:22:00
TRACK 43 AUDIO
TITLE "Where You Are [Kartypartyy Remix] (Mixed)"
PERFORMER "John Summit & Hayla"
INDEX 01 43:48:00
TRACK 44 AUDIO
TITLE "Power (Mixed)"
PERFORMER "Pirapus & Primate"
INDEX 01 45:37:00
TRACK 45 AUDIO
TITLE "Everyday [Netsky VIP Remix] (Mixed)"
PERFORMER "Rusko"
INDEX 01 46:22:00
TRACK 46 AUDIO
TITLE "ID12"
PERFORMER "ID"
INDEX 01 47:27:00
TRACK 47 AUDIO
TITLE "Reason [Pirapus Remix] (Mixed)"
PERFORMER "SILK & Paige Cavell"
INDEX 01 48:12:00
TRACK 48 AUDIO
TITLE "Need You Now (feat. Christina Harrison) (Mixed)"
PERFORMER "Pirapus"
INDEX 01 48:54:00
TRACK 49 AUDIO
TITLE "I Need (feat. Hayla) [Wilkinson & Metrik Remix] (Mixed)"
PERFORMER "Wilkinson"
INDEX 01 49:54:00
TRACK 50 AUDIO
TITLE "Shrine (feat. Freya Ridings) [Hex Cougar Remix] (Mixed)"
PERFORMER "RL Grime"
INDEX 01 51:07:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment