Wpis z mikrobloga

#programowanie #programista15k #devops #linux #docker

Hej, używam ffmpeg'a i youtube-dl w dockerze.

Przy lokalnym developmencie na windowsie wszystko śmiga (pobieranie wideo) schody zaczynają się kiedy stawiam sobie obraz dockerowy na kompie, wtedy pobieranie filmu z yt za pomocą ffmpega cały czas wyrzuca kod HTTP 403. Chce mieć to skonteneryzowane bo będę wystawiał dynamicznie na chmurze on demand (najprawdopodobniej jakaś kolejka). Any ideas, dlaczego ffmpeg i yt-dl zwraca taki błąd a developując lokalnie na windowsie już nie? W obu przypadkach te same argumenty
  • 17
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@szmichal: film to pobierasz raczej za pomoca youtubedl a nie ffmpeg...

Jak masz net? Wykluczyles wszelkie proxy do netu, a raczej ich brak?
Z tego ko tenera mozesz poprawnie pobrac cos z innych stro?
  • Odpowiedz
@annotate: net 300/30mbps, na neta bym nie zwalał bo przy developmencie lokalnie wszystko śmiga (czy użyję wsl2, ffmpeg.exe, fasady na to w postaci .neta) po wystawieniu tego w obrazie dockerowym sypią mi się 403-ki.

Używam ffmpega do pobierania filmów z YT, gdyż ten umożliwia mi pobieranie tego w częściach. Za pomocą Youtube-dl wyciągam tylko link do odpowiedniego formatu. Pobieram filmy w chunkach po 30 sekund a potem lepie w całość. Robię
  • Odpowiedz
@typ_z_internetu_pro: w dockerze jestem świeży, ot jedyne co umiem to klepnać dockerfile pod prostą apke. Podlinkowalbys, o czym mówisz? O sieć bym się nie martwił bo na tym samym obrazie pobieranie z twitcha działa tylko tam nie używam ani ffmpega ani YT-dl
  • Odpowiedz
@szmichal: szczerze to hipotytezuje - ciężko mi powiedzieć co mogłoby pomóc,
tutaj trochę o networkingu w docker-e: https://docs.docker.com/network/network-tutorial-host/
tutaj o łączeniu docker-a: https://blog.oddbit.com/post/2014-08-11-four-ways-to-connect-a-docker/

ale coś mi sie wydaje że to niekoniecznie może być problemem. Bo jak masz 403 to niby się połączył więc sieć jest OK. Problem może być gdzieś z jakimiś ustawieniami które lecą z request-em -> sprawdź co leci z request-em lokalnie i co leci z docker-a
  • Odpowiedz
@szmichal: albo windows, albo docker.
Najprościej będzie ci uruchomić kontener, wbić do środka i z palca wywołać to, co ma robić twoja aplikacja.
Swoją drogą, do takiej pierdoły to się nie pisze aplikacji, skrypt powłoki zrobi robotę w mniejszej ilości linijek.
W dodatku możesz go spreparować klejąc kolejne komendy wypracowane na zwykłym linuksie.
TL&DR: wbijasz gwoździa kluczem francuskim. W dodatku tępą stroną gwoździa w ścianę.
  • Odpowiedz
@szmichal: nie sądzę żeby to było związane bezpośrednio z dockerem. podejrzyj sobie jakie requesty robi jeden i drugi (jeśli możesz wymusić http zamiast https to wiresharkiem np, jeśli nie to musisz coś wykombinować) i zobacz czy nie różnią się np useragentem, refererem itp. Ogólnie musisz jak najlepiej udawać prawdziwego usera.
w sumie nie byłoby dziwne gdyby linuksowy ffmpeg był na jakiejś blackliście, a windowsowy nie bo i tak nikt tego nie
  • Odpowiedz
@wykopyrek: Czy ja wiem, czy strzelam z aramty do wróbla? ffmpega i yt-dl owrapowałem .netem, mam error handling, pętle, jakieś cuda wianki. Ja wiem, że #!$%@?łbym to samo jakimś skryptem powershellowym ale PSa też nie znam i szybciej to klepnąłem w c# niż miałbym się uczyć PS bo gołe wywoływanie komend z argumentami tu nic nie da, gdzie musze pobierać po 30 sekund party a tak sobie elegancko sklejam memory streamy
  • Odpowiedz
Czy ja wiem, czy strzelam z aramty do wróbla? ffmpega i yt-dl owrapowałem .netem,


Zawijasz aplikacje w inne aplikacje, w dodatku uzależniasz od bibliotek „windowsowych”, chociaż będziesz pracował na linuksie (kontener dokerowy to linuks).

mam error handling, pętle, jakieś cuda wianki.


To wszystko jest już w tych aplikacjach, ty możesz ew. to obsługiwać. Ale równie skuteczne jest wysłanie stdout i stderr na wyjście kontenera.

Ja wiem, że #!$%@?łbym to samo jakimś skryptem
  • Odpowiedz