1. Cześć Gość. Czy wiesz, że według analizy rynku urządzenia:

    • QNAP - stanowią 63% rynku,
    • Synology i pozostali - tylko 37% rynku?

    To forum przeglądasz dzięki sponsorowi - firmie QNAP oraz zespołowi QNAP Club Polska.

Skrypt do pobierania okładki napisow i konwercja do srt

Dyskusja w 'Cichociemni' rozpoczęta przez użytkownika kasiarz, 11 Maj 2010.

Ładowanie...
  1. bpajak
    Offline

    bpajak Nowy użytkownik Noobie

    Dołączył:
    19 Styczeń 2012
    Wiadomości:
    6
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    ds-212
    Witam

    Nie wiem dlaczego ale nie widzi plikow mp4. tj.

    napisy.find /filmy - - widzi wszystko poza mp4, pobiera napisy do avi i mkv
    napisy.find /filmy/nazwa_pliku.mp4 - pobiera napisy do mp4

    ponizej jak to wyglada

    DiskStation> napisy.find /filmy
    Pobranie napisĂłw dla Alphas.S02E08.HDTV.x264-ASAP.[VTV].avi
    w katalogu jest kolejny odcinek S02E09 w mp4 ktorego nie widzi i go pomija

    DiskStation> napisy.find /filmy/Alphas.S02E09.HDTV.mp4
    Pobiera napisy do mp4
     
  2. Krzysiek
    Offline

    Krzysiek System Engineer Q Specialist

    Dołączył:
    28 Lipiec 2011
    Wiadomości:
    149
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS713+
    Wystarczy zmodyfikować skrypt tak, aby wyszukiwał także pliki o rozszerzeniu mp4. Jest to bardzo proste; pod koniec pliku znajdziesz fragment kodu odpowiedzialny za wyszukiwanie plików. Wygląda on tak:
    Kod (Text):
    1.  
    2. if [ -d "$par2" ]; then
    3.     # Podano katalog
    4.     find "$par2" -name "*.avi" | while read file
    5.     do
    6.         PobierzNapisy "$file" "$par1"
    7.     done
    8.     find "$par2" -name "*.mkv" | while read file
    9.     do
    10.         PobierzNapisy "$file" "$par1"
    11.     done
    12. else
    13.     # Podano plik
    14.     PobierzNapisy "$par2" "$par1"
    15. fi
    16.  
    Następnie, zmodyfikuj go w następujący sposób:
    Kod (Text):
    1.  
    2. if [ -d "$par2" ]; then
    3.     # Podano katalog
    4.     find "$par2" \( -name "*.avi" -o -name "*.mkv" -o -name "*.mp4" \) | while read file
    5.     do
    6.         PobierzNapisy "$file" "$par1"
    7.     done
    8. else
    9.     # Podano plik
    10.     PobierzNapisy "$par2" "$par1"
    11. fi
    12.  
    I gotowe! Teraz pozostaje już tylko zapisać plik i cieszyć się z nowego, lepszego skryptu :)
     
  3. keff
    Offline

    keff System Engineer Q Specialist

    Dołączył:
    20 Kwiecień 2010
    Wiadomości:
    136
    Local Time:
    04:40
    Oceny:
    +5 / 0 / -0
    Followers:
    0
    QNAP:
    TVS-x82
    Synology:
    DS-710+
    Ethernet:
    1 GbE
    TVS-x82 1 GbE
    Działa wam skrypt na 4.2 Becie?
    Ja mam coś takiego przy pobieraniu:
    /opt/bin/napisy.find: line 23: 21835 Segmentation fault (core dumped) $progNapi "$1"

    oraz

    /opt/bin/napisy.find: line 68: [: =: unary operator expected
     
  4. Macher
    Offline

    Macher Nowy użytkownik Noobie

    Dołączył:
    10 Grudzień 2012
    Wiadomości:
    16
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112j
    U mnie dziala bez problemu.
     
  5. maciejos
    Offline

    maciejos Nowy użytkownik Noobie

    Dołączył:
    7 Marzec 2012
    Wiadomości:
    5
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS212j
    Czesc,

    Ja dostaje cos takiego i nie potrafie sobie z tym poradzic. Jakies pomysly?
    Kod (Text):
    1.  
    2. Downloading subtitles for Tenacious.D-The.Pick.Of.Destiny[2006]DvDrip[Eng]-aXXo.avi
    3. pynapi.py: Subtitles language `en'. Finding video files...
    4. pynapi.py: 1/1: Processing subtitle for /volume1/video/Movies/Tenacious D - The Pick of Destiny/Tenacious.D-The.Pick.Of.Destiny[2006]DvDrip[Eng]-aXXo.avi
    5. pynapi.py: 1/1: SUBTITLE STORED (698 bytes)
    6. /opt/bin/napisy.find: line 69: [: =: unary operator expected
    7. FPS equals
    8. Traceback (most recent call last):
    9.   File "/opt/bin/subconv.py", line 398, in <module>
    10.     fps = float(arg)
    11. ValueError: empty string for float()
    12. Convertion error or the SRT file is empty
    13. DONE !
    14.  
    Wyglada na to, ze wszystko jest ok, tylko nie konwertuje zadnych pociagnietych napisow do .srt
     
  6. Macher
    Offline

    Macher Nowy użytkownik Noobie

    Dołączył:
    10 Grudzień 2012
    Wiadomości:
    16
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112j
    698 bajtów to trochę mało jak na napisy. Pobierasz napisy w jez. Angielskim. Nie wiem czy tak ma być? Najlepej podejrzyj ściągnięty plik txt czy jest Kompletny. Dla mnie to wygląda na błędne napisy i stąd brak możliwości dopasowania FPS do filmu i co za tym idzie błąd konwersji do srt.
     
  7. sadud
    Offline

    sadud Nowy użytkownik Noobie

    Dołączył:
    14 Grudzień 2012
    Wiadomości:
    6
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112j
    Hej maciejos,
    Niestety kilka dni temu zmuszony byłem przeinstalować swojego DSM na najnowszy (4.1-2886), wcześniej pracowałem na 4.1-2881 jeśli mi pamięć nie szwankuje.
    Po instalacji zacząłem mieć ten sam problem co Ty.
    Jak łatwo można zauważyć komunikat jaki się pojawia to: "=: unary operator expected"
    Zacząłem szukać o co chodzi i szybko zauważyłem, że linijka później wypisana zostaje wartość FPS dla filmu: "FPS equals"
    Ale tutaj jej brakuje.
    Zacząłem więc sprawdzać ręcznie czy można przeprowadzić konwersję pliku mechanizmem jaki używa napisy.find.
    Okazało się że się udało, ale musiałem podać ilość FPS. To poprowadziło mnie dalej:
    Zacząłem szukać fragmentu kodu który sprawdza ilość FPS co okazało się dosyć łatwe.
    Dla plików AVI to:
    Kod (Text):
    1.  fps=$($progFile "$nazwaAvi" | cut -d',' -f4 | cut -c 2-6)
    gdzie $progFile domyślnie to: /opt/bin/file
    a $nazwaAvi w Twoim przypadku to: /volume1/video/Movies/Tenacious D - The Pick of Destiny/Tenacious.D-The.Pick.Of.Destiny[2006]DvDrip[Eng]-aXXo.avi
    Czyli dla Ciebie testowe polecenie powinno wyglądać:
    Kod (Text):
    1. /opt/bin/file /volume1/video/Movies/Tenacious D - The Pick of Destiny/Tenacious.D-The.Pick.Of.Destiny[2006]DvDrip[Eng]-aXXo.avi | cut -d',' -f4 | cut -c 2-6
    2.  
    I tutaj jest pies pogrzebany :-(
    U mnie w wyniku:
    Kod (Text):
    1. DS112> /opt/bin/file /volume1/FILMY/FILM1.avi
    2. /volume1/FILMY/FILM1.avi: RIFF (little-endian) data, AVI, 1280 x 720, 23.98 fps, video: XviD, audio: Dolby AC3 (6 channels, 48000 Hz)
    3. Segmentation fault (core dumped)
    Gdzie Segmentation fault (core dumped) oznacza błędne odczyty z pamięci z tego co wyczytałem na sieci. Niestety tutaj moje pomysły się skończyły. Może ktoś ma jakieś?
    Ja już planuję reinstalację systemu i sprawdzenie jeszcze raz czy problem nie leży gdzieś w instalacji.

    Coś mi mówi, że problem leży w instalacji pakietu file, ale nie wpadłem jeszcze na to jak to przeskoczyć.
     
  8. sadud
    Offline

    sadud Nowy użytkownik Noobie

    Dołączył:
    14 Grudzień 2012
    Wiadomości:
    6
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112j
    Witam ponownie,
    Jednak nie dałem za wygraną i tymczasowo problem rozwiązałem. Przynajmniej tak się teraz wydaje.

    A więc jedziemy:
    Kod (Text):
    1. cd /opt/bin
    2. vi napisy.find
    szukamy (linia 58):
    Kod (Text):
    1.         if [ -e "$nazwaAvi" ]; then
    2.                 fps=$($progFile "$nazwaAvi" | cut -d',' -f4 | cut -c 2-6)
    3.         else
    4.  
    I zamieniamy na:
    Kod (Text):
    1.         if [ -e "$nazwaAvi" ]; then
    2.                 fps=$(ffmpeg -i "$nazwaAvi"  2>&1 | sed -n "s/.*, \(.*\) tb.*/\1/p")
    3.         else
    A następnie ESC i SHIFT+ZZ

    Oczywiście nie daję żadnej gwarancji, że problem u wszystkich jest ten sam :-(
    To naprawi problem tylko jeśli polecenie testowe które dałem wcześniej zwraca Segmentation fault (core dumped)

    Pozdrawiam
     
  9. maciejos
    Offline

    maciejos Nowy użytkownik Noobie

    Dołączył:
    7 Marzec 2012
    Wiadomości:
    5
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS212j
    Czesc sadud,

    Wybacz tak opozniona odpowiedz, troche byłem niedostępny dla prywatnych spraw ostatnio. Ale poki co chyba znajde teraz troche czasu.
    Probujac i testując jakiś czas temu, rozwaliłem konfiguracje ipkgi pare innych ciekawych rzeczy do tego stopnia, ze będę zmuszony przeinstalować synka. Co się wlasciwie nawet dobrze sklada z nowa wersja DSM.

    Planuje to zrobić w tym tygodniu. Oczywiście uruchomienie skryptu jest jednym z priorytetow, wiec jak tylko ogarne temat, natychmiast wrzuce jakiś feedback.

    pozdrawiam
    maciejos
     
  10. shakul
    Offline

    shakul Nowy użytkownik Noobie

    Dołączył:
    12 Kwiecień 2013
    Wiadomości:
    26
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS413j
    Witam wszystkich

    Szukam beta testerów do paczki SPK ... co robi paczka?:) A daje GUI do pobierania napisów do filmów.
    Od razu napiszę, żeby nie było, że 'przywłaszczyłem' sobie cudze oprogramowanie ... w paczce umieściłem skrypty dołączone w tym wątku (z lekką modyfikacją z mojej strony).

    Aby wszystko zadziałało, trzeba mieć w systemie zainstalowane:
    mediainfo
    bash
    file
    python
    p7zip

    Następnie instalujemy SPK przez DS'a i możemy się cieszyć prostym interfejsem do przeglądania plików znajdujących się w /volume1/video/.

    Nie ma możliwości konfiguracji z poziomu DS'a (na razie ;)).
     
  11. mikhnal
    Offline

    mikhnal Guest

    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Trzeba było dać linka do paczki, z pewnością znajdą się testerzy, którzy opiszą swoje wrażenia.
     
  12. Krzysiek
    Offline

    Krzysiek System Engineer Q Specialist

    Dołączył:
    28 Lipiec 2011
    Wiadomości:
    149
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS713+
    Cześć! Ja z chęcią przetestuje, od dawna czekałem na coś takiego :)
     
  13. shakul
    Offline

    shakul Nowy użytkownik Noobie

    Dołączył:
    12 Kwiecień 2013
    Wiadomości:
    26
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS413j
    Nie miałem gdzie tego szybko wystawić.

    Obecnie znajduje się pod adresem: http://subtitlessh.no-ip.biz

    Uwagi mile widziane. Co będzie w kolejnych wersjach, opisałem na stronie.
     
  14. kasiarz
    Offline

    kasiarz System Engineer Q Specialist

    Dołączył:
    8 Czerwiec 2009
    Wiadomości:
    164
    Miejscowość:
    Prospect Heights
    Local Time:
    21:40
    Oceny:
    +3 / 0 / -0
    Followers:
    0
    QNAP:
    TS-x53
    Synology:
    DS211j, DS107e, DS112j
    Ethernet:
    100 GbE
    TS-x53 100 GbE
    Widzę ze moje skrypty żyją jestem z tego powodu zadowolony sam myślałem pisać jakieś paczki spk ale no cóż BRAK CZASU. :)
    Chętnie potestuje.
     
  15. Krzysiek
    Offline

    Krzysiek System Engineer Q Specialist

    Dołączył:
    28 Lipiec 2011
    Wiadomości:
    149
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS713+
    Na gorąco ode mnie :)

    • Przydałaby się jakaś informacja zwrotna po ukończeniu operacji (np. pobrano napisy, nie znaleziono napisów, błąd). Najlepiej, aby nie było to okno dialogowe, aby nie trzeba było klikać w kołko "OK" :) Wydaje mi się to o tyle istotne, że przy pobraniu napisów z poziomu katalogu należy w niego wejść, aby zobaczyć czy napisy się pobrały (co na dłuższą metę jest lekko uciążliwe)
    • Jeśli filmy mamy wrzucone bezpośrednio w katalog video, nie można uruchomić sprawdzania dla kilku filmów jednocześnie
    • Pobrane pliki *.srt i *.txt zapisywane są z prawami 644, a właścicielem jest root - mało fajnie, bo usunąć je będzie można tylko poprzez SSH / telnet.

    A jeśli chodzi o usprawnienia, to super byłoby, gdyby:
    • Skrypt można było ustawić tak, aby sam automatycznie sprawdzał napisy co jakiś czas :)
    • Paczka zawierała w sobie niezbędne do działania aplikacje (trochę tego jest, ale może można skrypty przerobić tak, aby korzystały z jak najmniejszej ich ilości)
     
  16. shakul
    Offline

    shakul Nowy użytkownik Noobie

    Dołączył:
    12 Kwiecień 2013
    Wiadomości:
    26
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS413j
    Zapisałem uwagi.

    Kwestie uprawnień już rozwiązałem - będzie w kolejnej wersji.

    Zrobienie informacji po pobraniu (lub nie) napisów zostawiłem na później. Nie chciałem, żeby to było upierdliwe - klikanie za każdym razem przysłowiowe 'ok'. Mam na to jakąś wizję, ale potrzebuje trochę czasu.

    Możliwość zaznaczenia kilku plików czy folderów wydaje się fajną opcją - postaram się to jakoś ogarnąć.

    Sprawdzanie co jakiś czas czy są napisy też wydaje się fajnym pomysłem. Tylko zrobienie tego na maksa - czyli sprawdzanie na przykład całego folderu /volume1/video/ można zrobić w cronie. Myślałem raczej o czymś bardziej subtelnym - możliwość zaznaczenia folderów/plików, które będą co jakiś czas sprawdzane.

    Mediainfo, p7zip ... na razie wydają mi się konieczne.
    Z basha można zrezygnować na rzecz shell'a który jest w standardzie Synka.
    File - można pokombinować i też wywalić.
    Python - no tutaj trzeba by przepisać 'pynapi.py' i 'subconv.py' na coś co jest w systemie, zostaje chyba perl czy php. Jeśli chodzi o mnie to raczej zostawię to na sam koniec ... też kwestia czasu (jeśli w ogóle znajdę na to czas) :)


    Wielkie dzięki za feedback.
     
  17. Krzysiek
    Offline

    Krzysiek System Engineer Q Specialist

    Dołączył:
    28 Lipiec 2011
    Wiadomości:
    149
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS713+
    Jasne, jasne; chodzi mi tylko o wywalenie tego co nie pochłonie zbyt dużej ilości czasu.

    Nie patrzyłem jakie zmiany wprowadziłeś, ale w oryginalnym skrypcie file służył do pobrania liczby klatek na sekundę. To samo można pobrać przez mediainfo:
    Kod (Text):
    1.  
    2. mediainfo --Inform="Video;%FrameRate%" plik.avi
    3.  
    więc nie ma większej potrzeby wymagania dwóch rzeczy służących do tego samego. Przy czym mediainfo jest o tyle fajniejsze, że - z punktu widzenia użytkownika - nie trzeba bawić się w instalację file w terminalu (a wcześniej ipkg)

    Przy odrobinie szczęścia - tak jak pisałeś - być może uda się wywalić także basha. Generalnie rzecz ujmując, super byłoby, gdyby wymagania udało się sprowadzić do tego, co można zainstalować jako paczkę :)

    Nie ma za co :) Dzięki za dobrą robotę!
     
  18. shakul
    Offline

    shakul Nowy użytkownik Noobie

    Dołączył:
    12 Kwiecień 2013
    Wiadomości:
    26
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS413j
    Jest już dostępna nowa wersja paczki - http://subtitlessh.no-ip.biz

    Ważne: Proszę przed aktualizacją odinstalować poprzednią paczkę z systemu. Napotkałem na pewne problemy w czasie upgrade'u ze ścieżkami i muszę to jeszcze zbadać.


    Wprowadzone zmiany w wersji 0.2.0:


    • Dodana została informacja po pobraniu napisów (na razie do debugowania trochę tych informacji leci, docelowo zostanie to jakoś okrojone).
      Pobrane napisy mają uprawnienia usera, który dokonał operacji.
      Dodana została zakładka konfiguracji - dostępna tylko dla usera 'admin'.
      Możliwość zmiany głównej ścieżki do przeszukiwania napisów.
      Możliwość wyświetlenia pełnego pliku z logami.
      Możliwość wyczyszczenia pliku z logami.


    --

    Mediainfo oferuje jednak lepsze wyniki fps'a niż file, więc file pewnie poleci ;)
    Bash'a też się pozbędziemy.
     
  19. shakul
    Offline

    shakul Nowy użytkownik Noobie

    Dołączył:
    12 Kwiecień 2013
    Wiadomości:
    26
    Local Time:
    02:40
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS413j
    Jest dostępna nowa wersja paczki do pobierania napisów - http://subtitlessh.no-ip.biz

    Ważne: Przed aktualizacją system krzyczy aby odinstalować poprzednią wersję paczki.

    Wprowadzone zmiany w wersji 0.3.4:


    • Możliwość zaznaczenia plików/folderów do pobrania napisów.
      Panel konfiguracyjny - walidacja wpisanych/ustawionych wartości.
      Uprawnienia - możliwość ustawienia, którzy userzy mogą korzystać z modułu - użycie systemowych uprawnień.
      Paczka jest kompatybilna z DSM 3.0 w góre.
      Nie ma już potrzeby posiadania file w systemie.
      Nie ma juz potrzeby posiadania bash'a w systemie.
      Nie ma juz potrzeby posiadania p7zip w systemie.
      Możliwość ściągania napisów dla wersji pl lub en - ustawiane w panelu konfiguracyjnym modułu.
      Możliwość wyboru czy plik TXT z napisami ma zostać usunięty po konwersji do SRT.
      Python powinien być zainstalowany z repozytorium Synology - ścieżki w skryptach zmieniły się.
      Zmiana ikony.
     
  20. tralek
    Offline

    tralek Systems Admin... Q's Expert

    Dołączył:
    29 Marzec 2013
    Wiadomości:
    367
    Local Time:
    02:40
    Oceny:
    +3 / 0 / -0
    Followers:
    0
    QNAP:
    null
    Synology:
    DS112+
    Ethernet:
    1 GbE
    null 1 GbE
    Właśnie testuje tą paczkę, świetna robota. :)

    PS: Przy takiej społeczności urządzenia Synology za parę lat to będą naprawdę kombajny prawie do wszystkiego.
     

Poleć tę stronę

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Odrzuć powiadomienie.