Marusz Logo
Strona główna
Artykuły
Seriale, daty premier
Kontakt
Promowane artykuły:
Dreamhost i czas warszawski
WinBinder - wprowadzenie
Prosty packer CSS
Zend Studio i Ubuntu
WebMail Claros Software
Miasto Plusa - bramka napisana w PHP
Płatnik na Laptopie - opis instalacji
Płatnik - przeniesienie programu
Captcha w PHP - prosty przykład
Linux, skrypt txt2srt
Windows, prosta konwersja txt2srt
Linux, NapiProjekt, TXT i SRT

Linux i napisy z NapiProjekt (zapis w formacie TXT lub SRT)

2014-03-23 19:39

Od kilku miesięcy praktykuję rozwiązanie, które szczerze polecam każdemu. Nie ma - moim skromnym zdaniem - lepszej (prostszej) metody na pobieranie napisów z serwisu NapiProjekt bezpośrednio pod konsolą systemu Linux. No to zabieramy się do pracy. Pobieramy archiwum ZIP zawierający dwa skrypty, mianowicie napi.sh oraz subotage.sh.

Rozpakowujemy archiwum
unzip master.zip

Przechodzimy do utworzonego katalogu i odpalamy skrypt install.sh
./install.sh

Powinniśmy otrzymać informację zwrotną na kształt:

BIN_dir : [/usr/bin]
SHARED_dir : [/usr/share]
"napi_common.sh" -> "/usr/share/napi/napi_common.sh"
"subotage.sh" -> "/usr/bin/subotage.sh"
"napi.sh" -> "/usr/bin/napi.sh"

Tyle. Przykłady użycia:
- przechodzimy do katalogu z filmem
- wpisujemy komendę: napi.sh nazwafilmu.avi
- czekamy moment na pobranie napisów

Jeśli napisy znajdują się na serwerze NapiProjektu, to w mig pojawią się obok pliku z filmem. Jeśli napisów nie ma, skrypt zwróci odpowiedni komunikat.

A co, jeśli nasz dekoder/odtwarzacz/ustrojstwo obsługuje tylko napisy w formacie SRT? Nic prostszego:
- przechodzimy do katalogu z filmem
- wpisujemy komendę: napi.sh -f subrip nazwafilmu.avi

Nie wiem czy da się prościej. A co, jeśli mamy już napisy w formacie TXT a chcielibyśmy skonwertować je do formatu SRT? Patrzcie na to:
- przechodzimy do katalogu z napisami
- wpisujemy komendę: subotage.sh -i napisy_w_formacie.txt -o napisy_w_formacie.srt

Warto dodać, że skrypt wymaga obecności poniższych narzędzi:
wget, find, dd, md5sum, cut, mktemp, 7z (p7zip), awk, grep

Większość z nich jest dostępna od razu po instalacji dowolnej dystrybucji linuksowej. U mnie brakowało jedynie narzędzia 7z, więc doinstalowałem go wydając komendę:
apt-get install p7zip-full

Voila!

Komentarze

pemergency @ 81.151.117.*

wysłany: 2014-08-09 00:04

działa wyśmienicie ;) Dzięki

j0hnn @ 195.95.144.*

wysłany: 2014-08-20 21:21

Dzięki!

Hip43 @ 83.10.102.*

wysłany: 2014-09-05 22:57

Hmmm
"napi.sh i subotage.sh nie zostaly poprawnie zainstalowane".
Wrzuciłem je, jak wszystkie własne skrypty do /usr/local/bin

Hip43 @ 83.10.102.*

wysłany: 2014-09-05 23:04

Hmmm, ok... Wykorzystałem "install" i już prawie działa. Znaczy nadal nie działa "#00:0001 ERROR -> 7z nie jest dostepny. zmieniam id na 'pynapi'. PRZYWRACAM TRYB LEGACY" ale już coś robi.

do Hip43 @ 62.87.146.*

wysłany: 2014-09-06 19:44

A widzisz, najnowsza wersja wprowadza pewne zmiany. Postaram się niebawem napisać o tym kilka słów.

Wojtek @ 31.175.176.*

wysłany: 2014-09-13 11:39

A czy jest opcja pobrania angielskich napisów z napiprojekt przy pomocy tego skryptu?

Marusz @ 78.8.158.*

wysłany: 2014-09-13 22:36

Zapoznaj się z opcją -L i ogólnie wpisz napi.sh aby sprawdzić możliwości skryptu.

Dodam, że komenda napi.sh -L list wyświetli Ci całą listę obsługiwanych języków.

Wojtek @ 188.33.127.*

wysłany: 2014-09-14 00:54

Super skrypt. Dzięki ;)

stgf @ 89.75.97.*

wysłany: 2014-09-21 14:53

Program mi nie działa. Tez dostaje error: #00:0001 ERROR -> 7z nie jest dostepny. zmieniam id na 'pynapi'. PRZYWRACAM TRYB LEGACY

Jakie jest na to rozwiązanie?

do stgf @ 78.8.245.*

wysłany: 2014-09-22 08:52

Musisz napisać coś więcej, ot chociażby jaki Linux? Ogólnie komunikat jest prosty: brakuje Ci w systemie programu, który potrafiłby rozpakować pliki 7zip. Na Debian, Mint albo Ubuntu wpisałbym komendę:
apt-get install p7zip-full

No i ściągnij dla testu jakikolwiek odcinek serialu czy film, gdzie masz 100% pewności, że w bazie NapiProjektu są napisy.

Jeszcze dla pewności wpisz w wierszu poleceń komendę:
7z

powinieneś otrzymać coś w stylu:
7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=pl_PL.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)
...

stgf @ 89.75.97.*

wysłany: 2014-09-22 21:21

korzystam z OS X 10.9.4. Zainstalowałem p7zip stąd: http://sourceforge.net/projects/p7zip/ ale nie mam pewności czy to jest to co trzeba.
Testowałem na serialu który na pewno ma napisy.

doomin @ 37.8.227.*

wysłany: 2014-09-26 07:41

Brakuje konwersji do UTF8 - fajnie jak by była.

do doomin @ 62.87.247.*

wysłany: 2014-09-26 08:52

Ludzie, Wy czytacie to co wyrzuca komenda napi.sh? Przecież stoi jak byk, że przełącznik -C zmienia kodowanie napisów. Co za tym idzie, wpisując:

napi.sh film.mp4 -C UTF-8 # otrzymamy napisy w UTF-8
napi.sh film.mp4 -C ISO-8859-2 # otrzymamy napisy w ISO 8859-2
napi.sh film.mp4 -C WINDOWS-1250 # otrzymamy napisy w CP1250

do stgf @ 78.8.153.*

wysłany: 2014-09-27 22:44

Temat wpisu dotyczy konkretnie Linuxa. Pojęcia nie mam, jakie problemy mogą wystąpić na innych systemach. Polecam poczytać dokumentację i sprawdzić listę wymaganych przez skrypt aplikacji:

- bash shell
- wget (can be installed via Homebrew/Macports)
- find tool
- dd (coreutils)
- md5sum (in OS X, it's md5)
- cut
- mktemp
- 7z (if napiprojekt3 is used) (p7zip)
- awk
- grep

klagu @ 87.116.253.*

wysłany: 2014-09-28 13:28

Niestety nie znajduje napisów, nawet do filmów do których napewno są.

klagu @ 87.116.253.*

wysłany: 2014-09-28 13:30

Cofam to co napisałem. Działa za****ście

justBORYS @ 31.6.138.*

wysłany: 2014-10-29 20:53

ktoś tu jescze działa bo mi to nie działa :(

do justBORYS @ 78.8.155.*

wysłany: 2014-10-29 20:54

mnie działa i to bardzo dobrze.

justBORYS @ 31.6.138.*

wysłany: 2014-10-29 21:07

Co mogę robić źle?

justBORYS @ 31.6.138.*

wysłany: 2014-10-29 21:08

jestem nowym użytkownikiem Linuxa i mam Ubuntu 14.04

do justBORYS @ 78.8.2.*

wysłany: 2014-10-30 08:26

niestety nikt z nas nie jest wróżką i niestety nie potrafimy odpowiedzieć na takie pytanie. może źle podłączyłeś zasilanie do komputera albo wypiął Ci się kabel od internetu?

napisz konkretnie co zrobiłeś, jaki dostałeś błąd/komunikat, wszystko krok po kroku.

przekładając Twoje pytanie na motoryzację to jest tak, jakbyś napisał na forum samochodowym, że nie działa ci samochód. tyle i teraz powodzenia w zgadywaniu.

DuchAMK @ 79.191.23.*

wysłany: 2014-12-28 19:57

Dzięki, Dobra robota :)

Raq @ 93.174.29.*

wysłany: 2015-01-03 01:11

genialna rzecz

koto @ 79.185.193.*

wysłany: 2015-02-10 18:17

WItam

a mi nie chce pobierac srt, mimo ze próbuje w ten podany sposob to pobiera txt. Konwersja pozniej dziala


Pozdrawiam

Zgredek @ 176.10.98.*

wysłany: 2015-02-14 21:43

Jedno pytanie.
W którym miejscu to rozwiązanie jest PROSTE! Mam dziesiątki filmów i w każdym mam opdalać temrinal!

do Zgredek @ 159.205.6.*

wysłany: 2015-02-14 22:04

Nie, podpinasz sobie owy skrypt pod dowolny menadżer plików, mc, cokolwiek. A w którym miejscu proste? Zwyczajnie, z założenia.

bratbob @ 83.24.34.*

wysłany: 2015-02-20 23:09

super skrypt; lifesaver :) dodałem wrapper do crona i przestałem myśleć o napisach :)

revo @ 91.215.1.*

wysłany: 2015-03-29 04:42

Dla leniwych http://pastebin.com/0x4PMkfB

Dodatkowe opcje w menu (KDE) na plikach video

Emkas @ 193.0.96.*

wysłany: 2015-08-03 10:29

Morze wódki dla Autora! Świetny skrypt!

Przemek @ 89.69.13.*

wysłany: 2015-08-05 12:42

Wielkie dzięki, działa super

aaa @ 2.101.253.*

wysłany: 2015-09-01 20:07

niestety u mnie nigdy nie znajduje pliów. A konsola nie przyjmuje np. nawiasów w nazwie filmów

#00:0001 - wywolano o Tue Sep 1 18:58:58 BST 2015
#00:0002 - system: linux, forkow: 4, wersja: v1.3.5
#00:0003 - =================================================
#00:0004 - napi.sh od wersji 1.3.1 domyslnie uzywa nowego
#00:0005 - API (napiprojekt-3)
#00:0006 - Jezeli zauwazysz jakies problemy z nowym API
#00:0007 - albo skrypt dziala zbyt wolno, mozesz wrocic do
#00:0008 - starego API korzystajac z opcji --id pynapi
#00:0009 - =================================================
#00:0010 - znaleziono 0 plikow..

do aaa @ 159.205.6.*

wysłany: 2015-09-02 10:05

to niemożliwe. zamiast wyniku komendy wklej samą komendę.

ox1de @ 78.8.250.*

wysłany: 2015-10-09 15:29

Mały problem jest którego jeszcze nie analizowałem po pobraniu wszystkich napisów i przekonwertowaniu ich na UFT-* ( napi.sh -f subrip -C UTF-8 *) sypia sie uprawnienia do plików .srt musiałem rekursywnie nadac chmod-a, jakaś solucja ?

do ox1de @ 178.37.176.*

wysłany: 2015-10-14 15:13

Sypią się w jakim sensie? Bo zwykle są ustawiane takie uprawnienia jakie ma użytkownik który odpala skrypt. Co jest chyba naturalne. Musisz napisać coś więcej.

arbuz @ 77.254.131.*

wysłany: 2015-11-16 10:03

Cześć,
korzystalem z napi.sh pod RPi1 i sprawdząło się znakomicie.
Wczoraj postawiłem nowy system na RPi2 i "zainstalowałem" najnowsza wersję napi.sh. Przy niektórych filmach mam problem.

#00:0001 - wywolano o Mon 16 Nov 08:03:01 UTC 2015
#00:0002 - system: linux, forkow: 16, wersja: v1.3.5
#00:0003 - =================================================
#00:0004 - napi.sh od wersji 1.3.1 domyslnie uzywa nowego
#00:0005 - API (napiprojekt-3)
#00:0006 - Jezeli zauwazysz jakies problemy z nowym API
#00:0007 - albo skrypt dziala zbyt wolno, mozesz wrocic do
#00:0008 - starego API korzystajac z opcji --id pynapi
#00:0009 - =================================================
#00:0010 - znaleziono 1 plikow...
#01:0001 UNAV -> Amy.1080p.mkv

I napisy nie ściągnięte :) Możecie podpowiedzieć co jest nie tak lub co robię źle?

Marek @ 159.205.93.*

wysłany: 2015-11-16 13:11

Odpal z parametrem:
napi.sh -v 3

I dokładnie się wczytaj, czego może Ci brakować. Może nie masz 7zipa albo innego wgeta. Daj znać w każdym razie co wywali komenda.

Sergio @ 83.4.227.*

wysłany: 2015-12-27 10:32

Dzięki , Marusz jesteś mistrzem :D

bombałek @ 185.9.127.*

wysłany: 2016-02-03 15:01

Hej. Dzięki za ten skrypt ale mam jedno pytanie. Jak zintegrować ten skrypt z thunarem?

szagajew @ 46.215.165.*

wysłany: 2016-02-18 18:57

Edycja --> Czynności...

bombałek @ 83.9.128.*

wysłany: 2016-02-22 11:55

Tyle wiem ale jakie polecenie by to działało. Bo napi.sh -f subrip nie działa (nic się nie dzieje) a najlepiej by pobierało automatycznie po kliknięciu w srt w kodowaniu CP1250 i usuwało stary plik .txt :)

Marek @ 87.105.112.*

wysłany: 2016-02-24 15:25

Bombałek, nie wiem w czym konkretnie masz problem. Otwierasz czynności i piszesz:
Nazwa: Pobierz napisy
Polecenie: /usr/bin/napi.sh -f subrip -d %f
Wybierasz sobie ikonkę jaką chcesz i przechodzisz do zakładki "Wyświetlanie". Tam zaznaczasz ptaka przy "Pliki nagrań wideo".

Tam na dole podczas dodawania czynności masz legendę co oznaczają zmienne.

zax0ml @ 93.157.116.*

wysłany: 2016-03-06 03:47

Witam!
Mam problem z tym skryptem.
Mianowicie, podczas konwersji do UTF-8 zmienia uprawnienia napisów na 0600 i nie są do odczytu.
Jeżeli nie dodam do linii -C UTF-8 pliki z napisami mają uprawnienia 0644 i da się z nich bez problemów skorzystać.

napi.sh -s -v 3 -d -C UTF8 -f subrip -L PL -e srt -a PL "/macierz/video/Seriale/

Proszę o pomoc.

Marek @ 78.8.135.*

wysłany: 2016-03-06 10:33

Do zax0ml: ano, jest to rezultat użycia (do trzymania plików tymczasowych) komendy mktemp. Na ten moment - aby obejść kwestie uprawnień - musiałbyś napisać prosty skrypt w bashu. Przykład:

stwórz plik zmienuprawnienia.sh
nano /usr/bin/zmienuprawnienia.sh

Wrzuć do niego poniższe 2 linijki:
#!/bin/sh
chmod 777 "$1"

Nadaj mu prawo do wykonywania:
chmod +x /usr/bin/zmienuprawnienia.sh

I teraz wywołaj napi.sh z parametrem +S
napi.sh -f subrip -d plik.avi -S /usr/bin/zmienuprawnienia.sh

Oczywiście do pliku zmienuprawnienia.sh możesz wrzucić co chcesz: zmianę właściciela pliku, wysłać sobie e-mail z informacją, itp.

zax0ml @ 195.160.184.*

wysłany: 2016-03-06 22:21

Do Marek:
super! dzięki za błyskawiczną odpowiedź :-D działa! cały wieczór i pół nocy się z tym mordowałem ;-)

Świetna robota!
pozdrawiam serdecznie!

Mateusz @ 195.212.29.*

wysłany: 2016-04-19 13:38

Witam,

Marek, mały problem z Twoim skryptem i wykorzystaniem polecenia mktemp.
Wywołanie z linii poleceń działa ok, natomiast przy stworzeniu skryptu, który wywoływany jest z programu rtorrent:

skrypt.sh:
#!/bin/bash
(...)
napi.sh -C UTF-8 -f subrip "/mnt/hdd/movies/$name/$filename" -S /usr/bin/napi_uprawnienia.sh >/dev/null 2>&1

program nie pobiera napisów. Po zadumie na Twoim skryptem doszedłem do tego, że w momencie tworzenia pliku tymczasowego mktemp napi.7z.XXXXXX nie jest on tworzony, ponieważ nie wiadomo dlaczego skrypt ma aktualną ścieżkę ustawioną na / a to chyba problem albo skryptu albo samego mktemp, ponieważ plik xml sciąga sie bez problemu w odpowiednie miejsce, jedynie jego zawartość nie jest wrzucana do napi.7z.XXXX, gdyż ten plik nie może się stworzyć w /napi.7z.XXXX

Rozwiązałem sobie to bardzo prosto dodając: mktemp /tmp/napi.7z.XXXX, gdzie wszyscy mają dostęp.

Pozdrawiam,
Mateusz

Krystian @ 164.127.52.*

wysłany: 2016-04-19 16:05

Hej,

Program pobiera napisy ale zadne urzadzenie ich nie widzi (TV, kodi). Na poczatku myslalem ze to przez uprawnienia, skrypt ustawia 600 ale ustawienie na 777 nie pomoglo. Gdy sciagam napisy przez oryginalny NapiProjekt wszystko jest ok.
Tak uruchamiam skrypt:

napi.sh -C UTF-8 -e srt -f subrip -b 200 -s -S /home/krystian/Skrypty/fixSub.sh -v 0 -d $filePath/*

do Krystian @ 159.205.6.*

wysłany: 2016-04-19 21:00

A co się stanie, jeśli ściągniesz napisy stosując poniższą komendę:
napi.sh -C UTF-8 -f subrip -d plik.avi

Czy wtedy odtwarzacze będą rozpoznawały plik z napisami? Jeśli nie, to wrzuć na pastebin.com ściągnięte napisy przez napi.sh oraz NapiProjekt i podeślij linki. Zobaczymy czy są jakieś różnice.


Wpisz swoje imię, pseudonim:

Wpisz treść: