Do przygotowania i napisania tego artykułu skłoniły mnie ostatnio zmiany na YouTube które, wpłynęły na działanie dość popularnej biblioteki youtube-dl do pobierania filmów z youtube (ale nie tylko). Zmiany w YouTube w sposobie przechowywania metadanych spowodowały, że pobranie ich stało się niemożliwe i próba pobrania ich kończyła się błędem o nie możliwości sparsowania danych w odpowiedni sposób.
Kod który realizował zadanie wygląda w następujący sposób:
Prosty kod który pobiera tagi z wskazanego wideo. I wspomnianego problemu bym nie napotkał gdybym nie pobierał tagów. I tu pytanie po co mi te tagi?
yt-dlp rozwiązaniem problemu
Zanim odpowiem na wcześniej postawione pytanie to z youtube-dl miałem już wcześniej problemy bo wersja na której, bazowałem była dość leciwa wersją biblioteki python. Pochodziła ona według numeru release z 2021. Samo pobieranie wideo i audio w dostępnych formatach na youtube-dl działało. Oczywiście dostępne formaty zależą od danego filmu spójrzmy na przykład:
Wykorzystuje tu binarkę która można pobrać z youtube-dl lub ytdl-nightly. A samo pobranie jest po prostu odwołaniem się do odpowiedniego formatu. Jak interesuje nasz wideo z dźwiękiem to w youtube-dl wskazujemy dostępne formaty jako sumę np 137+140 czyli wideo w formacie 1920x1080 mp4 i audio m4a razem połączone w jeden plik.
Pobranie samych tagów z poziomu binarki youtube-dl nie jest możliwe dlatego powstała potrzeba napisania prostego skryptu w python ktory zaprezentowałem powyżej. Same tagi były mi potrzebne do przygotowania wersji angielskojęzycznej filmu. Tak pobrałem film z Youtube i potem za pomocą aplikacji Captions przerabiałem go na wersję angielską i wrzucałem na drugi kanał. Tagi i inne mata dane opisowa również tłumaczyłem automatyzując cały proces do podania jedynie linku filmu. A cała magia działa się pod spodem za pomocą odpowiedniego połączenia polskiej wersji YouTube i jego odpowiednika w wersji angielskiej. Finalnie moje operacje zamykały się na jedynie opublikowaniu filmu po organoleptycznym przejrzeniu go.
Binarke już dawno zastąpiłem yt-dlp nowsza wesją zgodną za youtube-dl pod względem składni. Więc tak naprawdę w systemie linux była to po prostu podmiana binarki i zmiana nazwy yt-dlp na youtube-dl by zmiana z punktu widzenia pipeline była jak najmniejsza.
Pobieranie potrzebnych opisów tagów i meta tagów odbywała się w następujący sposób. Jak możemy zobaczyć pobieranie tagów realizowane jest przez skrypt:
To już jego poprawiona wersja i biblioteka youtube-dl zastąpiona yt-dlp. Jak widać w jednym i drugim przypadku podmiana była dość organiczna i jedynie skupiała się na zamianie nazwy.
Pobranie samego audio i zapisanie do do pliku odbywa się ze wskazaniem samego formatu audio - jak nie odniesiemy się do wariantu jakościowego formatu pobieranego. To youtube-dl lub jak przeszliśmy tak fajnie na yt-dlp pobierze nam najlepsza wersję.
Z takiego audio łatwo zrobić transkrypcję za wykorzystaniem np wisper od open-ai
Podsumowanie
Obecnie wykorzystuje w pełni bibliotekę yt-dlp. I wygląda że zadomowi się u mnie na długo szczególnie za szybki czas rozwiązywania problemów. A ty jak wykorzystujesz wspomnianą bibliotekę?
Spodobał się artykuł? podziel się nim na swoich social media - dziękuję i pozdrawiam Piotr Kośka.
Comentarios