Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

[Narzędzia] Subget - pobieranie napisów filmowych

Witam.

Zacząłem pisać kilka dni temu graficzne narzędzie służące do pobierania napisów filmowych. Oczywiście projekt jest publiczny dlatego, że lubię się dzielić z Wami moją pracą i pozwalać Wam na dowolny użytek z niej. Wolność.

Strona projektu:
- https://github.com/webnull/subget

Licencja: GPLv3

Założenia projektu: - bardzo łatwa i szybka obsługa z poziomu menu kontekstowego - duża ilość wtyczek (aktualnie tylko dwie działające: napisy.info oraz napiprojekt.pl) - interfejs graficzny w GTK - możliwość obsługi programu z poziomu shella - zaawansowane opcje konfiguracyjne (aktualnie niedostępne) - wielojęzyczność (aktualnie tylko polski i angielski) - obsługa niszowych stron z napisami w różnych językach

Niestety program nie został jeszcze przystosowany do działania pod systemami Windows, oryginalnie został zaprojektowany dla systemów Uniksowych jednak wersja dla Windows jest planowana. A użytkownicy MacOS X są zdani na siebie - nie posiadam licencji na ich "cudowny" system, niestety.

Subget został stworzony po to aby zapewniać proste i szybkie pobieranie napisów filmowych bez potrzeby używania przeglądarki. Obsługa z menu kontekstowego ma za zadanie skrócić czas procesu pobierania napisów oraz ułatwić obsługę programu.
Zbyt wiele programów pełniących tą samą funkcję dla Linuksa jest mało, i to właśnie jest kolejny powód - aby dać kolejną alternatywę, użytkownik wybierze to co wygodniejsze.

Program oferuje aktualnie: - szybkie i proste pobieranie napisów z menu kontekstowego oraz z terminala - wielojęzyczność interfejsu graficznego oraz tekstowego - obsługę wtyczek z kilkoma domyślnymi

Prosiłbym o jakieś sugestie dotyczące programu, proszę też liczyć się z tym, że jest on w fazie "alpha".

Wiem, brakuje suwaków do listy TreeView, a okno powinno być zablokowane przed zmianą rozmiaru - naprawię to przy następnym commicie. 

Komentarze

0 nowych
Quest-88   15 #1 22.06.2011 06:39

Według mnie niepotrzebnie wynajdujesz koło od nowa. Jakiś czas temu powstały porty NapiProject na Linuksa:
- (Qt) qnapi > http://www.dobreprogramy.pl/QNapi,Program,Linux,13449.html
- (GTK) gnapi > http://gnapi.sourceforge.net/

Nie wiem jak z wersją na GTK - pomimo używania GNOME, preferuję aplikacje na Qt - ale qnapi od dłuższego czasu nie jest rozwijane, chociaż niewiele mu brakuje. A brakuje mu obsługi OpenSubTitle czy dodawanie przyrostków językowych (napis.en.txt; napis.cz.txt; napis.pl.txt).

Zamiast publikować program, które ma braki w elementarnej funkcjonalności, mógłbyś poprawić to co już jest. :-)

  #2 22.06.2011 08:23

a czy ten program może zastąpić napiprojekt?
bo jest to jedna z kilku aplikacji dla których trzymam winde na wirtualce

webnull   9 #3 22.06.2011 10:30

@ałtor (niezalogowany) | 22.06.2011 8:23
Potrafi pobierać napisy z napiprojekt bez żadnego problemu.

@Quest-88 | 22.06.2011 6:39
Zdaję sobie sprawę z qnapi, jednak qnapi jest pisane w języku programowania którego nie znam dlatego łatwiej mi napisać nową aplikację która będzie spełniała moje oczekiwania i potrzeby a także pozwoli mi nabyć doświadczenia w pisaniu aplikacji graficznych przy użyciu GTK.

webnull   9 #4 22.06.2011 10:31

PS. Paczki dla Gentoo, Debiana, Ubuntu i Arch Linux są w przygotowaniu i będą na dniach dostępne repozytoria.

kuba144   5 #5 22.06.2011 18:28

Obecnie korzystam z jakiegoś sktypyu do napi projekt. Nie pamiętam nawet nazwy, bo zmieniłem na nazwę na "napi-projekt". Z konsoli: napi-projekt film.avi no i mam też skrypt do nautliusa, który obsługuje wiele plików. O wiele szybciej to działa niż na Windowsie. Klik, 2s i jest. Nie wiem co jeszcze może mi program zaoferować ale z chęcią potestuje :)

blind-oln   8 #6 22.06.2011 19:56

Zamiast pisać oddzielną aplikację, przydałyby się pluginy do najpopularniejszych odtwarzaczy. Bo tak to jak napisał Quest - wynajdowania koła na nowo.

  #7 22.06.2011 20:51

"Oczywiście projekt jest publiczny dlatego, że lubię się dzielić z Wami moją pracą i pozwalać Wam na dowolny użytek z niej. Wolność."

To znaczy że zawodowo pracujesz za darmo, a w twoim miekszaniu żyją zupełnie obcy ludzie, za darmo, bo w końcu wolność i dowolny użytek? ;)

webnull   9 #8 22.06.2011 22:03

@blind-oln | 22.06.2011 19:56
W takim razie po co rozwijać Linuksa skoro jest Windows? Wynajdowanie koła na nowo...

webnull   9 #9 22.06.2011 22:08

A odnośnie portowania aplikacji do Windows:
http://img43.imageshack.us/img43/7707/subgetwindows.png

Idzie się zdenerwować...

StawikPiast   11 #10 22.06.2011 22:38

klep program, klep, jak bedzie dobry to moze skozystam, tylko pamietaj ma byc za darmo :)

jak ja lubie takich darmowych klepaczy :) a i nie wrzucaj jakis reklam bo je wytne, program ma byc zawsze za darmo i dobrze go rozwijaj zebym nie mial z nim problemow.

wojtekadams   18 #11 22.06.2011 23:15

ja nie lubię takich programów. lobię wiedzieć jakie napisy pobieram dlatego dla mnie tylko istnieją napisy24.pl ;]

webnull   9 #12 22.06.2011 23:32

@StawikPiast | 22.06.2011 22:38
Szefie, Ty tutaj nie ustalaj warunków ;-)

Program od początku jest tworzony na wolnej licencji i na takiej pozostanie, bierzcie kod źródłowy i "róbta co chceta" z nim ;-)

ydk2   3 #13 23.06.2011 00:20

ok pobawimy się tyć programem i powiemy co myślimy, może damy jakąś myśl. :)

ydk2   3 #14 23.06.2011 00:39

jak wyszukać napisy?
przydałaby się jakaś szukajka i miejsce do wpisywania czego się szuka , inaczej tworzenie takiego programu to jednak strata czasu
smplayer ma własną wtyczkę w opensubstitute. Co nie znaczy, że nie przyda się takie narzędzie , jednak musi być funkcjonalne.
jak na razie lipa

ydk2   3 #15 23.06.2011 01:12

jak dla mnie powinieneś dodać pole tekstowe i przycisk aby było gdzie wpisać to co chce się znaleźć , a wyniki byłyby zwracane w widoku poniżej ,pobieranie podwójny klik. Wedle mnie tak uzyskałbyś podstawową funkcjonalność , nawet dla samych testów bo skąd wiesz, że pluginy dobrze działają, u mnie nic się nie pokazało tylko puste okno bez żadnej reakcji [ubuntu 11.04].
Najpierw podstawowe funkcje potem wtyczki, przede wszystkim daj funkcje szukania, ktoś tam pisał o qnapi , ale u mnie qnapi przetrwało 3 dni i pożegnałem się z tą aplikacją , wtyczka smplayera okazała się skuteczniejsza.
Osobne, proste narzędzie to niezły pomysł ;)
Jak chcesz mogę coś pomóc jednak preferuje pascal/delphi, as2/3, flex.



command-dos   18 #16 23.06.2011 10:11

@wozniak.daniel - dokładnie, trafiłeś w sedno.
@StawikPiast - na serio nie wiem, jak ten sarkazm skomentować. Kogoś, kto struga figurki, też ganisz za to, że nie bierze za swoją pracę kasy? Co to za podejście? Kasa, kasa, kasa, komercja, developers, developers - o to Ci chodzi?

  #17 23.06.2011 10:39

a czy jest albo planujesz możliwość konwertowania pobranych napisów do .srt?

webnull   9 #18 23.06.2011 12:06

@wojtekadams
Uważam, że napisy24.pl to bardzo dobry serwis z napisami i na pewno w wolnym czasie znajdę czas na napisanie obsługi tego serwisu.

webnull   9 #19 23.06.2011 12:09

@ydk2 | 23.06.2011 1:12
Dzięki, pomyślę o tym i postaram się zaimplementować.

Ogólnie to mam zamiar zaimplementować menu w całej aplikacji "Plik, Opcje" coś takiego tam bym też wyszukiwarkę dodał.

kaz12   3 #20 23.06.2011 12:23

Kiedy(jak można wiedzieć) będzie wersja na Windowsa i do tego portable.Wiem że wiele wymagam lecz trzymam kciuki za projekt.

webnull   9 #21 23.06.2011 12:33

@kaz12
Jeszcze raz podlinkuję:
http://img43.imageshack.us/img43/7707/subgetwindows.png

Jak uda mi się przezwyciężyć ten błąd bibliotek GTK/Windowsa to wersja będzie prawie, że gotowa.

Można powiedzieć, że port jest gotowy gdyby nie błąd bibliotek pod Windowsem.

webnull   9 #22 23.06.2011 12:43

@kaz12
No i tutaj jeszcze obsługa Windows NT:
Pakiet alang-py który zarządza językiem:
https://github.com/webnull/alang-py/commit/39f502b6b9fc02bbb9749f59ff93feff38b321d3

Pakiet subget czyli nasz program:
https://github.com/webnull/subget/commit/86a6af78461ac843884dcf9ad56f20303dc08772

To są commity czyli zbiory poprawek które zostały wniesione do projektu. Obydwa commity dotyczą obsługi Windows NT.

aa.bb   7 #23 23.06.2011 13:56

zapowiada się ciekawie - byle było rozwijane... chociaż i tak przejechałem się na tego typu rozwiązaniach i póki co zostanę przy manualnym wyszukiwaniu napisów (chyba że wprowadzisz resztę, również fajnych, a w polsce mniej znanych stron)

iluzion   5 #24 23.06.2011 14:11

@webnull

"Jak uda mi się przezwyciężyć ten błąd bibliotek GTK/Windowsa to wersja będzie prawie, że gotowa."

Ostrzeżeniami GTK zajmij się po poprawieniu: Cannot import opensubtitles. Rzuciłem okiem na plik subget.py i nie widzę nigdzie import opensubtitles... Widzę za to:

if os.name == "nt":
pluginsDir=os.path.expanduser("~")+"/subget/usr/share/subget/plugins/"

Nie lepszym rozwiązaniem są pakiety? Wrzucasz moduły do katalogu, dodajesz plik __init__.py i możesz w głównym pliku umieścić `from Plugins import opensubtitles`. Bez kombinowania ze ścieżkami dla danego systemu.

webnull   9 #25 23.06.2011 14:15

@iluzion | 23.06.2011 14:11
Z pakietami nie miałem za bardzo styczności, może mógłbyś jakoś pomóc mi przenieść to wszystko do pakietów?

webnull   9 #26 23.06.2011 14:20

@iluzion | 23.06.2011 14:11
OpenSubtitles.org ma skopane API, wysłałem do nich maila jakiś miesiąc temu i chyba do tej pory nie odpowiedzieli.

No cóż, będę musiał zajrzeć w źródła SMPlayera bo to jedyny program chyba który sprawnie radzi sobie z API OpenSubtitles.org

Dlatego wtyczka OpenSubtitles.org jest zaniedbana, bo nie mogę jej akutalnie rozwijać.

iluzion   5 #27 23.06.2011 14:40

@webnull

Pakiet jest katalogiem zawierającym moduły oraz plik __init__.py. Plik __init__.py może być pusty, ale ważne, żeby był w katalogu z modułami (plikami .py) -- wtedy folder staje się pakietem.

W Twoim przypadku może wyglądać to tak:

subget.py
Plugins/
__init__.py
napiprojekt.py
napisy_info.py
opensubtitles.py

Wtedy możesz w pliku subget.py dodać `import napiprojekt, napisy_info, opensubtitles`. Jeśli folder Plugins znajduje się w tym samym katalogu co program / plik główny (w tym wypadku subget.py) lub w ścieżce dostępu Pythona (patrz zmienne systemowe) to masz możliwość zaimportowania dowolnego modułu i wykorzystania w programie. Wg mnie pierwsze rozwiązanie jest lepsze, po co komuś robić bałagan w zmiennych systemowych.

W systemach unixowych dobrą praktyką jest też używanie nazw własnych modułów zaczynających się wielką literą, w ten sposób unika się ewentualnych konfliktów nazw z biblioteką standardową Pythona.

Ps Jeśli chcesz mieć możliwość zaimportowania wszystkich modułów od razu przy pomocy gwiazdki `from Plugins import *` musisz dodać do pliku __init__.py następujący wpis:

__all__ = ["napiprojekt", "napisy_info", "opensubtitles"]

Możliwe jest też stosowanie zagnieżdżeń, tzn. podkatalogów katalogu Plugins w tym przypadku. Np. `from Plugins.Grafika` import nazwa_modułu`

iluzion   5 #28 23.06.2011 15:05

Jeszcze jeden drobiazg. Stosuj poprawnie zapisane ciągi dokumentujące stosując składnię reStructuredText. Pozwoli Ci to wygenerować porządną dokumentację przy pomocy Sphinxa.

http://sphinx.pocoo.org/rest.html#source-code

O reStructuredText pisałem już kiedyś na blogu. Poza tym kursem warto też spojrzeć na to jak piszą najlepsi pythoniści;)

http://i.imgur.com/0lftk.png

Jedną z najistotniejszych rzeczy, na tym screenie jest linia przerwy pomiędzy pierwszą linijką ciągu dokumentującego, a resztą. Pisząc w IDE mamy dzięki temu poprawnie wyświetlaną podpowiedź, co dana klasa, metoda robi. Spyder IDE potrafi nawet wyświetlać w czasie pisania cały opis z uwzględnieniem składni reStructudedText jak na screenie poniżej:

http://packages.python.org/spyder/inspector.html

foreste   15 #29 23.06.2011 16:30

Czytam i zastanawiam przecież oglądanie filmów dvix jest piractwem ;> ,
a większość filmów dvd ma już napisy na dvd plus dubbling i poco te napisy ? :E.

iluzion   5 #30 23.06.2011 19:39

Powyżej napisałem:

"Wtedy możesz w pliku subget.py dodać `import napiprojekt, napisy_info, opensubtitles`."

Powinno być oczywiście:

from Plugins import napiprojekt, napisy_info, opensubtitles

webnull   9 #31 23.06.2011 19:50

@foreste | 23.06.2011 16:30
Piractwem nie jest tworzenie narzędzi dla piratów ;-)

A tak czy inaczej istnieją filmy które zostały wydane na wolnych licencjach bądź innych darmowych. Lecz są to wyjątki, zazwyczaj filmy dokumentalne które mają mieć jak największą popularność dlatego są wrzucane przez twórców do sieci, ponieważ celem nie jest zarobek a przekaz.

webnull   9 #32 23.06.2011 21:36

@iluzion | 23.06.2011 19:39
Dzięki wielkie, zaimplementuję to w następnym commicie.

webnull   9 #33 24.06.2011 18:37

http://img685.imageshack.us/img685/4660/subgetworkingonwindows.png

Postępy prac nad wersją dla Windows - to działa.

Było kilka irytujących błędów, ale udało się, wersja dla Windows działa.

Teraz popracuję nad samym programem, port dla Windows skończony i będzie rozwijany na bieżąco ;-)

kaz12   3 #34 24.06.2011 22:52

webnull rządzisz kiedy wszystko będzie dopięte na ostatni guzik(czytaj że będzie wersja portable)to jesteś moim bogiem.

iluzion   5 #35 25.06.2011 11:48

@kaz12

O wersję portable nie musisz się martwić. Webnull skorzysta zapewne z py2exe lub cx_Freeze.

http://www.dobreprogramy.pl/iluzion/Samowystarczalne-aplikacje-Pythona,25620.html

webnull   9 #36 25.06.2011 12:31

@iluzion | 25.06.2011 11:48
Pewnie, że użyję py2exe.

cx_Freeze nie będzie potrzebne bo będę tworzyć natywne paczki dla bardzo wielu systemów opartych o Linuksa.

Nie będzie potrzeby sklejania wszystkiego w binarkę.

iluzion   5 #37 25.06.2011 17:06

@webnull

Ok, ale cx_Freeze pod Windowsem działa na podobnej zasadzie jak py2exe, a do tego wydaje się być nieco wygodniejsze w użyciu. Budowa wersji exe ograniczyłaby się prawdopodobnie do wydania z wiersza poleceń:

C:\Python27\Scripts\cxfreeze subget.pyw --base-name=Win32GUI

webnull   9 #38 25.06.2011 17:51

@iluzion
Tak więc skorzystam z cx_Freeze.

Odnośnie portu aplikacji dla Windows to naszła mnie straszna nerwica przy portowaniu wtyczek i zawieszam support dla windows bo nie mam tyle nerwów aby znosić zachcianki i błędy windowsa.

iluzion   5 #39 25.06.2011 20:11

@webnull

Bez przesady;) Nie sądzę, aby te wtyczki wykorzystywały jakieś specyficzne funkcje systemu. Poprawnie napisane powinny działać bez wprowadzania zmian.

Napisz jakiego typu błędy i zachcianki Windowsa napotkałeś.

webnull   9 #40 25.06.2011 21:08

@iluzion | 25.06.2011 20:11
Nie mam pojęcia co się stało, ale nagle obie wtyczki przestały poprawnie pobierać napisy.

Już wcześniejszymi innymi błędami byłem zdenerwowany więc nawet debugować mi się tego już nie chciało, może jutro nabiorę chęci do debugowania tego.

A jednym z wcześniejszych błędów była próba rozpakowania napisów poprzez wywołanie zewnętrznego programu - 7zip, nawet podając poprawną ścieżkę w cudzysłowiach system ucinał ścieżkę i podawał coś w stylu "c:\Documents" nie można odnaleźć pliku.

Wywołanie systemowe było jak najbardziej poprawne:
"c:\documents and settings\user\subget\7zip.exe" -argumenty > plik-z-napisami.txt

iluzion   5 #41 25.06.2011 23:34

@webnull

To spróbuj przenieść do katalogu nie, który nie zawiera spacji w nazwie i wywołaj bez cudzysłowów. To nie powinno mieć znaczenia, ale spróbować można.

webnull   9 #42 25.06.2011 23:45

@iluzion | 25.06.2011 23:34
Próbowałem do C:/Subget ale też były problemy, no nic spróbuję w inny sposób.

Próbowałem przy pomocy os.system, a spróbuję może przy pomocy subprocess czy jakoś tak bo widziałem z tym przykład pod Windows.

kaz12   3 #44 26.06.2011 10:18

to można już ściągnąć na Windows ??

webnull   9 #45 26.06.2011 10:45

@kaz12 | 26.06.2011 10:18
Wybacz, ale wtyczki jeszcze nie działają, działa tylko interfejs programu pod Windows.

Na dniach będzie działać wszystko i zostanie spakowane do instalatora dla Windows oraz do paczek dla Linuksa.

vircung   5 #46 26.06.2011 11:04

Czy twój program szukając napisów sprawdza framerate lub czas trwania filmu przy szukaniu odpowiednich napisów? Parę razy nawet (chyba) najpopularniejszy pod windows napiprojekt miał parę razy u mnie z tym problem.

webnull   9 #47 26.06.2011 11:49

@vircung | 26.06.2011 11:04
Można powiedzieć, że tak ponieważ sama wtyczka napiprojekt dopasowywuje napisy po sumach kontrolnych (fragment filmu gdzie uwzględnione są takie parametry jak FPS czy czas trwania automatycznie).

webnull   9 #48 28.06.2011 20:49

@kaz12 | 28.06.2011 19:25
Dzisiaj ukończyłem kluczowe funkcje a także dodatkowe dwie wtyczki, myślę, że dzisiaj jeszcze jak się uda to udostępnię instalator dla windows.

Dla Linuksa istnieją skrypty instalacyjne, a paczki będą już za niedługo.

webnull   9 #49 28.06.2011 22:06

@iluzion | 25.06.2011 23:34
Pluję, i wyklinam Windowsa i cx_freeze - można przy tym nerwy stracić a raczej ja już straciłem.

Ratujcie ludzie, nie wytrzymam.

Paczkowanie dla windows to jakiś koszmar, najgorszy horror jaki istnieje.

Żeby istniała dobra dokumentacja z przykładami dla cx_Freeze albo py2exe... ale nawet nie piszą jak dodać więcej niż jeden plik pythona do paczki TRAGEDIA.

Od godziny staram się zapakować pakiet alang który odpowiada za języki, tak samo staram się zapakować resztę plików i prawie sobie włosy z głowy wyrywam. Nie ma to jak Linux, zrobię paczkę do każdego systemu Linuksowego i nie będzie problemów, ale z Windows zawsze będę mieć 150 tysięcy problemów.

  #50 01.07.2014 16:07

Do pobierania napisów polecam odtwarzacz ALLPlayer - nie ma co się bawić w pincet różnych programów :)
Odtwarzacz ALLPlayer sam znajduje napisy najlepiej dopasowane do wersji filmu - do wyboru dwa serwisy napisowe NapiProjekt (najlepsze PL) i OpenSubtitles (we wszystkich językach).