Forum: PC-Programmierung Templates (auch) für yt-dlp - was bedeuten die Formatierungszeichen, Klammern usw.?


von Darius (dariusd)


Lesenswert?

Hallo

Bei den Kommandozeilenprogramm yt-dlp ("Nachfolger" bzw. funktionierende 
Variante -oder wohl richtig "Fork"?- von yt-dl) kann man sogenannte 
Templates für heruntergeladen Videos erstellen.

Darin wird vorgegeben wie die heruntergeladen Mediendatei (Video bzw. 
reines Audio) textlich dargestellt werden soll, es kann z.B. der 
Kanalname, der Titel und das Erstelldatum der Mediendatei usw aus der 
Quelle (z.B. YouTube) übernommen werden. und in beliebiger Abfolge mit 
eigenen festen Textbestandteilen "gemischt" werden.

Eine sehr schöne Sache, die wenn man sie mal verstanden hat einfach 
Anwenden kann.
Aber was passiert da eigentlich, was bedeuten all die 
Formatierungszeichen, Klammern usw.?

Das wird leider in der "Anleitung" nicht erklärt, das es sich wohl um 
eine eigene Übergreifende "Programmiersprache"  handelt die yt-dlp 
einfach verwendet? (Reine Vermutung, wird in der "Anleitung" irgendwie 
angedeutet)

Nun zur Sache:

So ein Template (Vorlage) sieht z.B. so aus:

-o "%(title)s.%(ext)s"

Das -o ist ein "Befehl" von yt-dlp und title, ext (und viele andere 
mehr) sind vorgegebene Variablen.

Was (warum) "sind" aber die Anführungszeichen, die Klammern (zum 
Gruppieren?), das Prozentzeichen, das s direkt hinter der Klammer und 
einiges mehr bei umfangreicheren Templates?

Dazu steht leider überhaupt nichts in der "Anleitung" bzw. wird auch bei 
den (leider wenigen) externen Erklär- und Ableitungsseiten bzw. Videos 
zu gesagt.

Man (ich) kann es zwar Anwenden und weis was man nachahmen muß - die 
eigentliche Funktion (Der Medienname wird nach seinen Wunsch erstellt) 
ist gegeben, aber man (ich) als einfacher Anwender, für den die Hürde 
Kommandozeile und das Denken dahinter, schon heftig genug war, weis 
nicht was ich den da genau und warum mache.

Aber genau das möchte ich, wenigstens grob, verstehen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Darius schrieb:
> Was (warum) "sind" aber die Anführungszeichen, die Klammern (zum
> Gruppieren?), das Prozentzeichen, das s direkt hinter der Klammer und
> einiges mehr bei umfangreicheren Templates?

Die Anführungszeichen brauchst du, damit das Ding nicht in mehrere Teile 
zerfällt, wenn eins der ersetzten Attribute ein Leerzeichen enthält.

Das Prozentzeichen wandelt offensichtlich die Sonderfunktion ein, dass 
danach ein Attribut ersetzt wird. Wenn der Name des Attributs aus 
mehreren Zeichen besteht (wird wohl immer so sein ;-), dann brauchst du 
die Klammern, damit der Parser weiß, wo der Name des Attributs wieder 
aufhört.

Das ist jetzt alles nur vom Gefühl her, ohne dass ich da irgendwo in 
deren Code nachgeschaut hätte. Mein Gefühl sagt mir, dass das "s" für 
eine String-Konvertierung steht – eine numerische Konvertierung 
(vermutlich sowas wie "d" für dezimal oder "x" für hexadezimal) wird ja 
eher nicht das sein, was du brauchst. ;-)

von Norbert (der_norbert)


Lesenswert?


von Matthias S. (dachs)


Lesenswert?

Darius schrieb:
> %(title)s.%(ext)s

Sieht für mich nach einer Formatierung ähnlich der Formatierung für 
printf in C aus.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Norbert schrieb:
> Dort ist alles ausführlich beschrieben.

Und bestätigt auch meine Vermutung, dass man mit "d" eine numerische 
Konvertierung machen kann. ;-)

von Norbert (der_norbert)


Lesenswert?

Jörg W. schrieb:
> Und bestätigt auch meine Vermutung, dass man mit "d" eine numerische
> Konvertierung machen kann. ;-)

Yep.

Was mich immer wieder verwundert, ich habe zehn Sekunden mit 
EnteEnteGehGeh gebraucht um die vollständige Beschreibung zu finden. 
Aber ich bin auch schon älter und falle nicht mehr in den Bereich der 
von der aktuellen ICILS beobachteten Gruppe.

: Bearbeitet durch User
von Darius (dariusd)


Lesenswert?

Hallo

Vielen dank an Jörg W. - deine Erklärung ist in den wirklich wichtigen 
Punkten für mich verständlich und vor allem wirklich hilfreich.

Was Attribute sind verstehe ich sogar so etwa (Aus andere Zusammenhängen 
- und da hat es lange gedauert bis es Klick gemacht hatte, das alles hat 
so wenig mit Alltagssprache und auch Praktische Hobbyelektronik zu 
tun...)

Was ein Praser ist...
Na ja - eine sehr Vage (und grobe wahrscheinlich zu einfache) Vermutung 
liegt vor... ;-)


Norbert schrieb:
> https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#output-template
>
> Dort ist alles ausführlich beschrieben.

Sorry, aber als ich dort angekommen war habe ich schnell aufgegeben und 
an Anwendungsseiltiger  wichtiger Stelle,

(Es geht ja letztendlich um die Mediendaten lokal nach seinen Vorgaben 
zu sichern und dann zu genießen - so ein Programm, egal wie gut es ist, 
soll ja kein Selbstzweck sein)

gezielt weitergelesen.

Die "Erklärung" und "Anleitung" an der angegebenen Stelle ist doch was 
von Experten für andere Kommandozeilenjünger mit eigener 
Programmiererfahrung...

Matthias S. schrieb:
> Sieht für mich nach einer Formatierung ähnlich der Formatierung für
> printf in C aus.

Jörg W. schrieb:
> Und bestätigt auch meine Vermutung, dass man mit "d" eine numerische
> Konvertierung machen kann. ;-)

Genau diese Erkenntnisse zeigen mir das die Erklärung und Anleitung sich 
an relative Fachleute (vorgebildete, das denken dahinter verinnerlicht - 
kein Allgemeinwissen) wenden.

Schön für Matthias, Jörg und alle die dieses sehr spezielle Vorwissen 
haben..., blöd für "Normale" Anwender.

-Wobei Kommandozeilennutzng schon selbst nicht mehr das "Normal" ist, 
sondern man damit schon selbst bei der Mehrheit der Anwender von 
Software als "Experte" gilt... ;-)



Leider haben die "Anleitungsschreiber" (oft wohl irgendeiner aus den 
Entwicklerteam der zu tief in der Sache und den Fachdenken steckt?!) 
-vergessen haben wer vorrangig die eigentliche Funktionalität des 
Programms  nutzen will und woher sie selbst mal hergekommen sind =>
Normale Anwender halt...

Extrem habe ich das (es ist so jede Überheblichkeit ist da nicht 
angebracht) Arduino Libarys kennengelernt:
Von der absoluten unverständlichen in  Fachchinesisch (oder "am besten" 
gar keine) geschriebenen Dokumentation, bis zur eigenen Homepage, sehr 
vielen Beispielen und Videotutorials die sich alle an Normale Nutzer und 
Anwender wenden...

Norbert schrieb:
> Was mich immer wieder verwundert, ich habe zehn Sekunden mit
> EnteEnteGehGeh gebraucht um die vollständige Beschreibung zu finden.

Und was für eine Beschreibung?
Mit meinen Wissen konnte ich nur sehr allgemeine Suchbegriffe und 
Formulierungen verwenden  - entsprechend waren die Ergebnisse (zu 
Speziell, zu Allgemein oder wieder zurück zur GitHub Seite mit der 
"Anleitung" und den ""Erklärungen" die mir schon, im Startbeitrag 
angesprochenen Punkt, so gar nicht gebracht haben).

Gute und vor allem Allgemeinverständliche (der Knackpunkt) Beispiele im 
diesem gesamten Umfeld, Schritt für Schritt vorrechnen bei 
Mathematischen Problem -gerade in der "härteren" E-Technik(andere 
Baustellen, aber vom Grundsatz her das gleiche Problem), verständliche 
Erklärung  von Programmiersprachen (die Details, Fachbegriffe, 
Bedeutungen)  sind insgesamt sehr selten.

: Bearbeitet durch User
von Matthias S. (dachs)


Lesenswert?

Darius schrieb:
> Genau diese Erkenntnisse zeigen mir das die Erklärung und Anleitung sich
> an relative Fachleute (vorgebildete, das denken dahinter verinnerlicht -
> kein Allgemeinwissen) wenden.

Das widerspricht sich mit

Darius schrieb:
> Eine sehr schöne Sache, die wenn man sie mal verstanden hat einfach
> Anwenden kann.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Darius schrieb:
> -Wobei Kommandozeilennutzng schon selbst nicht mehr das "Normal" ist,

Das hat aber mit einer Kommandozeile erstmal primär nichts zu tun. Auch, 
wenn du sowas in eine GUI einpacken willst, wenn du mit der Gestaltung 
deiner Dateinamen flexibel sein willst, brauchst du irgendeine Form von 
Beschreibungssprache. Ansonsten gibt's halt nur die starren Muster, die 
sich der Ersteller der GUI vorgestellt hat.

In einer GUI könntest du höchstens noch sowas wie Dropdown-Menüs 
anbieten, damit man die Attribute aus einer Liste einfügen kann.

von Ein T. (ein_typ)


Lesenswert?

Darius schrieb:
> Die "Erklärung" und "Anleitung" an der angegebenen Stelle ist doch was
> von Experten für andere Kommandozeilenjünger mit eigener
> Programmiererfahrung...

Weder die Experten noch ihre Expertise sind vom Himmel gefallen, sondern 
das Ergebnis eines Lernprozesses. Daraus folgt: man kann diese Dinge 
erlernen, das ist weder Hexenwerk noch Raketenwissenschaft.

Wer man in Norberts Link [1] nicht schon beim ersten Satz aufgibt, 
findet bereits im zweiten Satz "navigate me to examples" einen weiteren 
Verweis auf eine Vielzahl von Beispielen unter [2]. Damit kommt auch ein 
Laie zum Ziel, wenn er interessiert genug ist, zehn Minuten Lebenszeit 
zu investieren. Und wenn er nicht interessiert genug ist, dann war es 
auch nicht wichtig genug, und auch damit ist alles fein. :-)


[1] https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#output-template
[2] 
https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#output-template-examples

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.