"""
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
Comments
0 B
|0 👍
/0 👎
0 B
|👍
/👎