Created
April 5, 2024 23:02
-
-
Save g30r93g/6b3d0da592d7c5b3b9a765bc69b16527 to your computer and use it in GitHub Desktop.
Convert a cue sheet file to YouTube timestamps
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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']}") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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