YT Download Update v1.4.0
Zu den großen Änderungen gehört unter anderem das fluent-ffmpeg mit einem eigenen System zur Kommunikation mit FFmpeg ersetzt wurde
Unter der Haube hat sich einiges geändert. Zu den großen Änderungen gehört unter anderem das fluent-ffmpeg mit einem eigenen System zur Kommunikation mit FFmpeg ersetzt wurde. Ich wollte auf unnötigen Ballast eines zusätzlichen Moduls schlicht verzichten und bin mir sicher das alles was ich vor hatte auch damit möglich gewesen wäre.
Alle Änderungen im Detail
Das Modul zur Speicherung der Einstellungen wurde komplett überarbeitet. Im Grunde tut es exakt das Gleiche, ist aber deutlich eleganter geschrieben.
Das UI kann nun kleiner skaliert werden als zuvor. Die Elemente, die die einzelnen Videos im Interface repräsentieren sind von der Höhe kleiner geworden. Die Optionen der Select Elemente haben dadurch eine fixe maximal Höhe. Die Fortschrittsanzeige habe ich auch überarbeitet. Beim Download wird nun die aktuelle Downloadgeschwindigkeit sowie beim Konvertieren der aktuelle Fortschritt angezeigt.
YT Download unterstützt nun grafikbeschleunigtes encoding. Es wird versucht automatisch den optimalen Modus zu nutzen.
Die init()
Methode aus der class Config
Anstatt nur fs
wird fs.promises
eingebunden. Damit gibt jede Funktion von fs
ein Promise zurück und Callbacks werden überflüssig. Im ersten try - catch Block wird der Ordner für die Config Datei erstellt, wenn dieser noch nicht existiert. Im Zweiten wird versucht die Config zuladen und wenn dieses scheitert werden die Standardeinstellungen gespeichert.
Der prozentuale Fortschritt beim Konvertieren
Das Objekt proc
ist ein child process
, der mittels spawn
eine FFmpeg Instanz ausführt. Verwirrend ist das die Ausgabe über stderr
gestreamt wird. Letztendlich macht es aber keinen Unterschied. Nach der Konvertierung in einem String wird der Index von time=
gesucht und diesem 5 addiert. Damit müssten wir am Index vom Timecode sein. Die Laufzeit wurde vorab mit ffProbe ausgelesen.
Der vollständige Source kann auf github eingesehen werden und bei Fragen oder Vorschlägen stehe ich sehr gerne zur Verfügung.