""" yt-dlp -x "https://www.youtube.com/watch?v=lohYA3mAQTk" ffmpeg -i German\ march\ compilation\ \[4\ hours\]\ \[lohYA3mAQTk\].opus German\ march\ compilation\ \[4\ hours\]\ \[lohYA3mAQTk\].wav pip install pydub # pydub does things in milliseconds """ import unicodedata import itertools import pydub import re from pathlib import Path zeitstempel = [ (e.split(maxsplit=1)[0].strip(), e.split(maxsplit=1)[1].strip()) for e in """ 0:00 Hohenfriedberger Marsch 3:55 Preußens Gloria 5:33 Yorckscher Marsch 8:14 Königgratzer Marsch 10:52 Badenweiler Marsch 13:42 Helenenmarsch 16:14 Fridericus Rex Grenadiermarsch 19:06 Dessauer Marsch 22:38 Steinmetz Marsch 25:04 Pariser Einzugsmarsch 27:16 Graf-Zeppelin Marsch 30:26 Unsere Marine 32:35 Marsch aus der Zeit Friedrichs des Großen 35:40 Regimentsgruß 37:42 Bayerischer Defiliermarsch 39:42 Der Coburger 42:58 Gruß an Kiel 45:06 Königsmarsch 50:38 Der Alsenströmer 52:14 Die deutsche Kaisergarde 54:53 Nibelungenmarsch 58:37 Der treue Husar 1:01:29 Preußicher Präsentiermarsch 1:03:13 Düppeler Schanzen Marsch 1:06:54 Preußischer Schützenmarsch Nr. 1 1:09:31 Landgraf Marsch 1:12:47 Kaiser Wilhelm Siegesmarsch 1:16:38 Fehrbelliner Reitermarsch 1:19:04 Alte Kameraden 1:21:56 Petersburger Marsch 1:23:41 Des großen Kurfürsten Reitermarsch 1:27:31 Siegesmarsch von Metz 1:30:41 Linden Marsch 1:33:06 Bismarck Marsch 1:36:31 Lockstedter Jägermarsch 1:39:41 Waidmannsheilmarsch 1:41:56 Schneidige Truppe 1:44:20 Marsch der Elisabether 1:47:03 Tölzer Schützenmarsch 1:49:32 O Deutschland hoch in Ehren 1:53:06 Die Wacht am Rhein Marsch 1:55:48 Schützen Defiliermarsch 1:58:00 Vaterländischer Marsch 2:01:14 Mir sein die Kaiserjäger 2:03:49 Parademarsch Nr. 1 2:07:14 Parademarsch Nr. 2 2:10:24 Seeteufel Graf Luckner Marsch 2:13:00 Heil Europa Marsch 2:16:20 Der Jäger aus dem Schwarzwald 2:19:09 Frei weg 2:21:14 Marsch der hannoverschen Garde-Jäger 2:23:53 Hohenzollern Marsch 2:26:55 Defiliermarsch 2:29:21 Kreuzritterfanfare 2:31:50 Parademarsch der 18er Husaren / Großenhainer Marsch 2:35:03 Zehner Marsch 2:36:24 Lützows wilde Jagd 2:39:10 Hoch Heidecksburg 2:43:14 Hoch Württemberg 2:45:43 Borussia 2:48:40 Aus allen deutschen Gauen 2:51:28 Schwedischer Reitermarsch 2:55:06 Preußenmarsch 2:58:05 Ein Jäger aus Kurpfalz 3:00:20 Admiral Stosch Marsch 3:02:24 König Ludwig II Marsch 3:05:26 Alter Jägermarsch 3:07:24 Der Leuthener 3:10:46 Jagdeschwader Richthofen Marsch 3:14:34 Torgauer Parademarsch 3:17:32 Der Pappenheimer 3:18:51 Auf Friedenswacht 3:21:14 Holsteiner Marsch 3:23:27 Laridah Marsch 3:26:36 Auf zum Start 3:29:35 Althessischer Reitermarsch 3:32:02 Parademarsch der NVA Nr. 1 3:33:36 Frankenmarsch 3:36:18 Große Zeit, neue Zeit 3:38:53 Margarethenmarsch 3:41:35 Bayerischer Präsentiermarsch 3:42:53 König Karl Marsch 3:45:26 Tautinger Marsch 3:48:00 Weltenstürmer Marsch 3:50:21 Das ist Berlin 3:52:44 In Treue fest 3:57:04 Marsch (1756) 3:57:52 Einzug der Plagiatoren """.splitlines() if e.strip() ] audio = pydub.AudioSegment.from_wav( "German march compilation [4 hours] [lohYA3mAQTk].wav" ) def parse_timestamp(text): parts = tuple(map(int, text.split(":"))) result = 0 for part, factor in zip(reversed(parts), [1, 60, 3600]): result += part * factor return result * 1000 for anfang, ende in itertools.pairwise(zeitstempel): start_ms = parse_timestamp(anfang[0]) ende_ms = parse_timestamp(ende[0]) name = unicodedata.normalize("NFKC", ende[1]) # print(f"[{start_ms}:{ende_ms}].export({name}.mp3)") file = Path(name.replace("/", "-")).with_suffix(".mp3") if not file.exists(): print(name) segment = audio[start_ms:ende_ms] try: # der Feler kam durch den Schrägstrich zustande segment.export(f"{name}.mp3", format="mp3") except FileNotFoundError: print("Problem mit", name) continue