pwn2dict

StarDict jest bardzo udaną nakładką. Używam go od jakiegoś czasu i jestem bardzo zadowolony. Wszystkie słowniki w jednym miejscu, przeszukiwanie na wiele sposobów itd. Wszystko to bardzo fajne, ale mocno brakowało mi baz ze słownika PWN Oxford 2004. Dlatego też postanowiłem ten brak naprawić. Żeby zrozumieć format zajrzałem do kodu Kydpdict - nakładki obsługującej m.in. rzeczony słownik. I w ten sposób na wakacjach powstał program, który po odleżeniu się jakiś czas na dysku, przepisaniu do Pythona i paru poprawkach oddaję w wasze ręce. W końcu nie jestem sobkiem :)

pwn2dict.py
Program konwertuje pliki angpol.win i polang.win z dwujęzycznego słownika PWN Oxford 2004 do formatu obsługiwanego przez StarDicta 3.0. Hasła są zapisywane jako HTML dla zachowania formatowania. Wszelkie symbole są konwertowane do UTF8, więc nie ma problemu z transkrypcja fonetyczną. Ponadto pozwoliłem sobie na drobne poprawki w nazwach haseł (usunięcie pionowych kresek i numerów definicji), żeby szukało się lepiej. Przekonwertowanych baz używam z powodzeniem u siebie i mam nadzieję, że u was będzie nie inaczej :)

Obsługa jest bardzo prosta:

pwn2dict zrodlo.win nazwa.dict

Skrypt odczyta zrodlo.win i utworzy komplet plików dla StarDicta: nazwa.dict, nazwa.idx i nazwa.ifo, które następnie należy skopiować do /usr/share/stardict/dic/nazwa/ i zrestartować StarDicta.

Uwagi końcowe:
Autor nie ponosi odpowiedzialności za używanie programu z nielegalnymi kopiami baz słownika. Prośby o przesłanie baz będą ignorowanie.
Z tego miejsca zachęcam do zakupu słownika w ulubionej księgarni. Jest wart każdej złotówki.

Update 12.02.2009:
Naniosłem parę kosmetycznych zmian w skrypcie i poprawiłem(?) bug przy konwertowaniu pod Windowsem. Poza tym dorzuciłem pwn2tabfile. Ta alternatywna wersja skryptu, jak sama nazwa wskazuje, konwertuje bazy do formatu tabfile.

Update 01.03.2009:
Rozgryzłem format słowników PWN Oxford 2006 i 2007 i zaimplementowałem obserwacje, dzięki czemu skrypt obsługuje teraz edycje 2004, 2006 i 2007. Przy okazji poprawiłem kilka nieskonwertowanych symboli w kilku hasłach. Nie przedłużając, zapraszam do pobrania nowych wersji pwn2dict i pwn2tabfile :)

Update 05.06.2009:
Przypadkiem zauważyłem kosmetyczny błąd przy konwersji jednej encji (') w wersjach 2006/2007. Oba skrypty zostały zaktualizowane. Zapraszam do pobrania najnowszych wersji pwn2dict i pwn2tabfile.

Update 17.06.2009:
Dodałem obsługę formatu używanego w wersji dołączanej do papierowego słownika w edycji 2005. Różni się on głównie innym zapisem transkrypcji i nagłówkiem definicji. Jeśli mieliście problem z tą wersją, zapraszam do pobrania pwn2dict i pwn2tabfile.

Update 01.09.2009:
Dodałem obsługę słownika polsko-rosyjskiego i rosyjsko-polskiego. Nowe wersje obu skryptów do pobrania w stałym miejscu.

Update 11.02.2010:
Wydałem pwn2dict 2.0, znacznie zoptymalizowaną i dodającą nowe funkcje. Funkcjonalność skryptu pwn2tabfile została wchłonięta i w związku z tym nie będzie on już rozwijany.

140 komentarzy

  1. Obecnie w repo jest Qstardict. Samego StarDicta nie ma już. QstarDict do działania wymaga plików: .dict[.dz] file – main dictionary file – .idx – index file – .ifo – description file
    QstarDict bez pliku “dz” nie działa :/

    Jak uzyskac plik “dz” za pomocą Twojego konvertera pwn2dict by działał z QstarDictem?

    • O ile pamiętam, .dz to była po prostu kompresowana gzipem baza słownika zoptymalizowana dodatkowo pod szybkie skakanie po indeksach. Plik .dict można skompresować do .dz za pomocą narzędzia dictzip. Temat był kiedyś poruszany tu w komentarzach.

  2. Rafał writes:

    Ogólnie działa, chociaż skrypt cmds.sh sypie komunikatami o nieistniejących plikach a przy tym sporo nazw pozostaje niezmienionych. Sir_Yaro jakbyś kiedyś opracował ulepszoną wersję to nie zapomnij się podzielić. :)

  3. No tak. nie zwrocilem uwagi uzyles tam regularne, a dodatkowo "icon" raczej nie sugerowalo pliku wave :) :)

    Dla zainteresowanych POD LINUKSEM:
    wget http://www.sfr-fresh.com/unix/privat/kydpdict-0.9.5.tar.gz:a/kydpdict-0.9.5/contrib/kydpdict-0.9.3-oxpwnsnd.tar.gz
    wyciagamy z archiwum plik exwavaes.c
    i potem
    gcc exwavaes.c -O exwaves
    exwaves wave.wol wave.000
    i mamy katalog wave z plikami

    sciagamy ten plik:
    https://docs.google.com/leaf?id=0B7DJJNEKp25uNWFjZGQ0NDUtMzJlZC00ZDdmLThjNjAtY2E4Zjg4ZTI3Nzdm&hl=pl&authkey=CKuRw4kL
    wrzucamy do katalogu wave i uruchamiamy.

    Po dluzszej chwili pliki beda sie nazywac tak jak powinny.
    A po _dluuugim_ czekaniu mamy gotowa baze wymowy z plikami w osobnych katalogach.
    Z zawartosci pliku prosze sie za bardzo nie smiac – nie mialem potrzeby pisac do tego programu tylko wygenerowalem liste polecen :)

  4. Filtrowania linkow w kodzie nie widze – ale na pythonie sie raczej słabo znam. Strzelalbym, ze raczej nie odczytujesz jakis wartosci.

    Moglbys mi wskazac gdzie tego w kodzie szukac ?
    Bo mysle, ze sam sobie z tym jakos bym poradzil..

  5. Oka sam sobie odpowiem.
    w kydpdict w katalogu contrib jest plik exwaves.c
    Po jego skompilowaniu w kilka sekund tworzy katalog wave z 52.000 plikami wave zawierajacymi wymowe…
    Super…. tylko skad do diabła wiedziec ktory wave odpowiada jakiemu słowu ?

    Czy widzial ktos gdzies jakies mapowanie – rekord w slowniku / wave z wymowa ?

  6. Udało sie to juz mi zrobic i zapomnialem napisac.
    Sprawa jest banalna wystarczylo kod po skompilowaniu odpalic jako root. Program probuje zapisac pliki gdzies (juz nie pamietam dokladnie gdzie) w drzewie /usr gdzie zwykle nie sie sie uprawienien – stad segfault.
    Tylko czemu tak prostego wyjatku autor nie obsluzyl?

    Michal a czy masz jakis pomysl na rozprucie pliku wave.000 z wymową na poszczególne pliki wave ?

  7. Na pewno nie w tym skrypcie. W końcu to pwn2dict :)

    W każdym razie, kiedyś z ciekawości spojrzałem na kod tamtego konwertera i nie porażał on czytelnością. Stąd zaniechałem prób przepisania go jako skryptu pythona.

  8. Celowo dałem taki warunek w obawie przed usunięciem za dużo. Jeśli chcesz spróbować, usuń spację przed nawiasem kwadratowym. Wtedy będzie usuwać WSZYSTKO między dwoma skośnikami występującymi po tabulatorze.

  9. Osobiście nie czuję potrzeby reklamowania skryptu. Jak widać po ilości komentarzy, ludziom udaje się tu trafić. Krótko mówiąc, nie miałbym nic przeciwko, ale nie jest to wysoko na liście moich priorytetów.

    Skrypt, zgodnie z komentarzem na początku pliku, wydałem na licencji GPLv3.

  10. Jakub writes:

    Panie Michale, skrypt działa fantastycznie! Bardzo dziękuję! Przy okazji dwie sprawy: 1) Przydałoby się go szerzej rozreklamować, miałem poważne problemy ze znalezieniem go w sieci, w końcu trafiłem przypadkiem przez forum poświęcone Debianowi. Może na stronie głównej projektu umieściliby link do pana skryptu? 2) Na jakiej licencji Pan udostępnia ten program?

  11. Grzegorz writes:

    Znalazłem ciekawy program słownikowy na windowsa.
    Sam program nie powala i raczej nie umywa się do Lingoes. Bardziej interesujące są słowniki w formacie stradicta, a mianowicie słowniki PWN-u, słownik techlanda, collinsa i jeden całkiem niezły, o którym nic nawet nie wiedziałem – słownik Fundacji Kościuszkowskiej. Program jest darmowy. Nie bardzo wiem jak autor poradził sobie z licencjami na te słowniki ;)
    Polecam:
    http://ultimate-dictionary.softonic.pl/

  12. Grzegorz writes:

    Czy ktoś wie jakie zainstalować fonty aby poprawnie wyświetlać transkrypcję fonetyczną w Mdict ?
    (zainstalowałem ksphonetic.ttf i inne z chińskiego forum developerskiego).
    Stardict wyświetla poprawnie ale mdict nie radzi sobie z częścią tych znaków.

  13. Tak? W takim razie będę musiał zobaczyć jak to zrobili.

    A jeśli chodzi o te słowniki PWN, przydałaby mi się lista wszystkich pozostałych encji (‐) i nowych znaczników. Wtedy mógłbym rozbudować skrypt. Wyślij mi maila w tej sprawie, to obgadamy szczegóły.

  14. Dobrze wiedzieć :) Odnośniki nie mają szansy działać. Dlatego z reguły je odfiltrowuję. Pełna obsługa tych słowników to pewnie kwestia dopisania paru znaczników i encji do tablicy z zamienianymi elementami.

  15. bwo writes:

    melduję posłusznie, że udało mi się tym skryptem skonwertować także Słownik Wyrazów Obcych PWN i Słownik Frazeologiczny PWN :-))

    SF – praktycznie bez błędów (przynajmniej nie zauważyłem do tej pory), nie działają tylko odnośniki do innych haseł

    SWO – ogólnie jest OK, troszkę się sypie miejscami, ale może to tylko w goldendict (nie zamienia np. ‐ na "-")

    Szkoda tylko, że Słownik Poprawnej Polszczyzny i Encyklopedia PWN mają jakiś inny format…

  16. Strasznie fajna nakładka, ale brakuje mi paru rzeczy ze StarDicta: przeszukiwania "as-you-type", full-text searcha i z użyciem wyrażeń regularnych i wildcartów. Co liczy się na plus: szukanie na stronach internetowych, przeszukiwanie Wikipedii i Wiktionary oraz wbudowana transliteracja. Może z czasem porzucę StarDicta. Na razie nie pozwalają mi na to stare nawyki.

  17. Anonim writes:

    Prawdę mówiąc całkiem przesiadłem się na Goldendicta – obsługuje różne formaty słowników, wiec nie trzeba robić konwersji, które wyglądają nie do końca dobrze. Dobrze też obsługuje wyszukiwania w necie (choć przez to trochę muli) – staricta nigdy mi się nie udało do tego zmusić
    PozdrawiAM

  18. Anonymous writes:

    Pierwsze wrazenia z Goldendict bardzo pozytywne, nie ma z pewnoscia bledow qstardicta, na pierwszy rzut oka niczym innym nie razi. A co dla mnie wazne, jest w qt i jest w ciaglym rozwoju (niestety, mimo w miare swiezych akcji w svnie qstardicta, dzieki czemu wczesniej napisalem, iz jest na biezaco rozwijany, na forum wypowiedzial sie autor, ze nie ma na razie czasu na rozwoj i nie wie czy kiedykolwiek bedzie mial, takze na poprawe qstardicta nie ma co liczyc w najblizszym czasie.)

    Dzieki za info Rafi :)

  19. Rafi writes:

    Mamy nową, dość rozbudowaną nakładkę działającą na qt4. Program nazywa się GoldenDict i właśnie pojawił się w repozytorium Debiana testing. Po krótkim zapoznaniu wydaje się, że działa bardzo dobrze.

  20. Anonymous writes:

    Zglosilem blad na stronie tworcow o wiele wczesniej niz tutaj, ale przez kilka dni nikt mi nic nie odpowiedzial, dlatego zglosilem sie z pytaniem tutaj.
    Dobrze, ze tutejszy autor ma glowe na karku i udalo mu sie niesamowicie szybko wykryc problem.

  21. Anonymous writes:

    Masz racje :)

    Nie zwrocilem uwagi, ze chodzi o fonetyke wymowy.
    Generalnie, na dzien dzisiejszy przychylam sie w takim razie rowniez do niepolecania tej nakladki :)

    Aplikacja ciagle sie rozwija, moze w niedalekiej przyszlosci zostana rozwiazane te problemy.

  22. Sprawa jest niezmiernie prosta, jak się okazuje: QStardict nie widzi słowników, które mają w .ifo zadeklarowaną wersję jako 3.0.0. Wystarczy zmienić na 2.4.2 i QStardict już widzi. Ale to obala też argument o pełnej obsłudze formatu Stardicta.

    Niestety, nadal widzę te same błędy. Nawet po wyłączeniu reformarowania list niektóre hasła wyświetlają się ucięte (np. rapscallion). Nie lubię tej nakładki :P

  23. Anonymous writes:

    Dzieki wielkie !

    W szukaniu rzeczywiscie jest problem, ale ja i tak praktycznie korzystam tylko z funkcji scan, takze az tak we mnie to nie razi.

    A co masz na mysli, mowiac o ucietym wyswietlaniu ?
    U mnie rapscallion jak i kilkanascie innych testowych slowek wyswietlaja sie poprawnie, nic nie ucina itp.

    Generalnie, mam nadzieje, ze jeszcze troche ja dopracuja (funkcje wyszukiwania), ale mi sie na razie podoba, glownie ze wzgledu na port qt4 (nie przepadam za gtk) i, ze na obecnym kde 4.2 przynajmniej mam traya normalnie :)

  24. Anonymous writes:

    QStardict jest na biezaco rozwijany (czego nie mozna powiedziec niestety juz o stardict), ostatnia stabilna wersja z lutego 09, natomiast w svnie ostatni commit sprzed 2 tygodni (i tej wersji wlasnie uzywam) i wstepnie testujac go z innymi slownikami, nie zauwazylem zadnych problemow z szukaniem czy formatowaniem, takze prawdopodobnie zostalo to poprawione na przestrzeni czasu.

    Stabilne kde 4.3 juz za 4 dni, takze niedlugo powinien skonczyc sie moj problem z ikonka w trayu.

    A czy moglbys moze ewentualnie wyprobowac najnowszego qstardicta (najlepiej z svnu), czy dzialalyby ci slowniki pwnu (uzywam konkretnie skonwertowanej bazy wersji 2006) ?

  25. Próbowałem kiedyś QStardicta i widział bazy, ale były różne drobne usterki z szukaniem i formatowaniem. Na paru innych bazach też były pewne niedoróbki. Nie mogę tej nakładki polecić.

    Co do Stardicta i KDE4, to używam takiego tandemu i nie mam tego problemu z ikoną w trayu. Może dlatego, że używam testowej wersji KDE 4.3, gdzie rozwiązano wiele problemów z nim związanych.

  26. Anonymous writes:

    Uzywa ktos z was moze QStarDict (gui dla stardicta w qt4 o przyjemnym interfejsie i dobra integracja z kde4 – u mnie np. stardict nie ma w ogole ikonki w trayu – w sensie jest, ale jakby pusta, przezroczysta) ?

    Pytam, bo nie wiem czemu, ale qstardict nie widzi mi w ogole skonwertowanych slownikow pwn (ktore widzi stardict), ale za to widzi wszystkie inne, jakie probowalem z stardict.org .

    Na stronie qstardict tworca pisze o pelnym wsparciu dla slownikow stardicta i generalnie, nie wiem po czyjej stronie moze lezec wina..

  27. Anonim writes:

    Ściągnąłem Pythona 2.6 pod Windowsa. Wrzuciłem pliki pwn2dict i angpol.win (ze słownika 2006) do głównego folderu Pythona (C:Python26) i otworzyłem Python Interactive Shell i wpisałem po kolei: "cmd" – enter – "cd C:Python26" – enter – "python.exe pwn2dict.py angpol.win pol.dict" – enter i nic się nie dzieje, poza tym, że przepisuje to co napisałem w pojedynczym cudzysłowie, a żadne pliki się nie tworzą. Proszę powiedzcie laikowi co robi nie tak i co ma zrobić, żeby mieć te pliki Stardicta i gdzie one mają się utworzyć.

  28. i jeszcze jedno pytanko.
    mianowice slownik.opf po przerobce w mobi creator wyszukuje tylko (na cybook3) te same znaczenia, czyli ,,walk,, znajdzie a walked juz nie?!

    czy orientuje sie ktos czy oby to nie trzeba cos poustawiac w mobi creatorze,zeby ten index latal

  29. jedno pytanie

    jak chce przerobic slownik.win dla stardict to uzywam pwn2dict i wyjsciowym formatem bedzie slownik.dict

    a jaki wyjsciowy format bedzie dla pwn2tabfile?
    bo jak chce puscic na koncowce .tab albo .tabfile

    np. pwn2tabfile slownik.win slownik.tab

    to mam errory

    pozdro

  30. Za bardzo się nie orientuję w używanych formatach, ale chyba będziesz musiał użyć pwn2tabfile, a uzyskany tabfile potraktować odpowiednim konwerterem. W tym przypadku to chyba tab2opf. Nie mam palmtopa, więc nie bardzo mogę pomóc w tej materii.

  31. dzieki, poszlo na pelnych sciezkach i lata na stardict.

    moze z innej beczki – to co opublikowales:

    If there are any Polish users here or just anyone interested in a Polish-English dictionary then they'll be happy to learn that it's possible to turn PWN Oxford Polish-English dictionaries into a Mobipocket one.
    You need 2 Python scripts: pwn2tabfile.py and tab2opf.py. You can find the first one @ http://mzblog.grajpopolsku.pl/2008/10/31/pwn2dict.
    Pwn2tabfile supports 2004, 2006 and 2007 editions of the PWN Oxford dictionary. It preserves all formatting so it's really cool. :-)
    After you use tab2opf.py (remember to use "-utf" option) you need to generate a .mobi file out of the .opf. Use either mobigen or Mobipocket Creator to do this.

    teraz jak bym chcial uzyskac mobipocket to musze uzyc pwn2tabfile nastepnie otworzyc to w mobipocket creator i stworzyc slownik?

    czy bedzie to mniej wiecej: pwn2tabfile.py -utf test.win test.(i tu nie wiem jaka koncowka)

    pozdrawiam – soros, ze mecze bola – ale naprawde chcialbym potestowac to sobie na mobipocket.

  32. mziab wielkie dzieki a szybka odpowiedz, ale wyglada na to, ze problem lezy gdzie indziej. jak widac ponizej-wszystkie pliki sa w katalogu python26 (jednak sam python jest 2.5.4 – sprawdzalem inna wersje) jedyne co przychodzi mi na mysl to uwalony plik pwn2dict?!

    Directory of C:Python26

    05/06/2009 13:38 dir
    05/06/2009 13:38 dir
    06/10/2006 08:40 61,156,716 angpol.win
    05/06/2009 13:38 dir DLLs
    05/06/2009 13:38 dir Doc
    05/06/2009 13:38 dir include
    05/06/2009 13:45 dir Lib
    05/06/2009 13:38 dir libs
    23/12/2008 15:17 33,061 LICENSE.txt
    23/12/2008 15:04 130,361 NEWS.txt
    17/10/2006 14:43 68,964,136 polang.win
    05/06/2009 14:02 9,564 pwn2dict.py
    05/06/2009 13:57 8,845 pwn2tabfile.py
    23/12/2008 15:11 24,064 python.exe
    23/12/2008 15:11 24,576 pythonw.exe
    23/12/2008 15:04 56,354 README.txt
    05/06/2009 13:38 dir tcl
    05/06/2009 13:38 dir Tools
    23/12/2008 15:11 4,608 w9xpopen.exe
    10 File(s) 130,412,285 bytes
    9 Dir(s) 230,685,310,976 bytes free

    C:Python26>python.exe pwn2dict angpol.win test.dict
    python.exe: can't open file 'pwn2dict': [Errno 2] No such file or directory

    co do wielkosci plikow – sciagnalem je u siebie w pracy i mialy po 6kb – zrobile remota do domu i pliczki juz wygladaly inaczej. okazalo sie antyvir na firewallu firmy ciacha co jakis czas date:)

    jescze raz dzieki za szybka odpowiedz

  33. Problem polega na tym, że odpalasz to ze ścieżki U: i tam będzie szukało plików. Wykonaj "cd C:Python26", a potem "python.exe pwn2dict.py angpol.win pol.dict". Powinno być w porządku. Ewentualnie możesz zastąpić wszystkie nazwy plików ścieżkami absolutnymi.

    A pwn2tabfile konwertuje te same bazy, ale do formatu tabfile, który można z kolei potraktować paroma innymi konwerterami (np. tab2opf).

  34. witam
    wlasnie zaczolem sie tym bawic i maly problem.

    wiec zainstalowalem pythona 2.6.1 pod xp
    wrzucilem angpol.win z twoimi 2ma skryptami do glownego katalogu pythona i probowalem to ruszyc z command line.

    U:>C:Python26python.exe pwn2dict.py angpol.win pol.dict
    C:Python26python.exe: can't open file 'pwn2dict.py': [Errno 2] No such file or
    directory

    oczywiscie pliki siedza w C:Python26 i sciagnolem je kilka razy i najnowsza wersje ktora obsluguje wzystkie wersje 2004 -5-6-7 ja mam 2006

    przy odpaleniu bezposrednio z python shella mam

    >>> pwn2dict angpol.win test.dict
    File "<stdin>", line 1
    pwn2dict angpol.win test.dict
    ^
    SyntaxError: invalid syntax

    dodam, ze probowalem z pythonem wersja 2.6.1 i 2.6.2

    i jeszcze jedno pytanko – co robi skrypt pwn2tabfile?
    rozumien,ze ten pierwszy konwertuje slownik do formatu stardict

    pozdrawiam i reszcze raz dzieki za pomoc

  35. Anonim writes:

    Witam. Czy mógłby ktoś użyczyć ten słownik już w formacie prc? Posiadam zakupioną wersję słownika 2006 i korzystam na PC i Macu (dzięki PYM dictionary)i bardzo mi zależy na tym słowniku dla mobipocketa ale na pisaniu skryptów i konwersji w ogóle się nie znam. Byłbym bardzo wdzięczny. Pozdrawiam :) Mój email: teseus@op.pl

  36. Rafal writes:

    OK. Udało mi się sklecić mobipocketową wersję Langenscheidta. Skorzystałem z dostępnych (nielegalnie) w Internecie baz pod Xlatora. Wystarczy wpisać w Google…

    Potem przekonwertowałem bazę z Xlatora na format MDict(HTML) i przerobiłem plik na kompatybilny z tab2opf tabfile. Że programować nie potrafię, to nagrałem w UltraEdicie odpowiednie makro no i lata. Szkoda tylko, że nie ma formatowania.

    Wśród innych słowników pod Xlatora można znaleźć też przerobionego Collinsa i np. słownik polsko-hiszpański i hiszpańsko-polski Leksykonii. Nie są jednak w ten sposób nazwane…

  37. Rafal writes:

    Może pomoże ci w jakiś sposób program Col2SM, który konwertuje słowniki YDP do formatu SuperMemo (niestety nie do Q&A). Program dzieli wszystkie wpisy ze słownika na pojedyncze pliki .rtf, w których jest wyraz + definicja (sformatowane).

    Niestety nie ma źródeł. Program trudno zdobyć, bo strona autora już nie istnieje. Wrzuciłem go tutaj: http://ifile.it/56w2iup

    Trzymam kciuki ;-)

    Rafal

    PS. Col2SM normalnie konwertuje tylko Słownik Collinsa, ale wystarczy zamienić w nazwie plików bazy "100" na "200" i wszystko działa.

  38. Rzuciłem na to okiem. Sama struktura plików jest bardzo prosta (w porównaniu z PWN), za to znaczniki strasznie nieczytelne. Kod z Kydpdict też niewiele lepszy, szczerze mówiąc. Będzie to wymagało wielu kombinacji, ale może coś wymyślę. Na razie tylko wstępnie rzuciłem okiem.

  39. Tak, zaglądałem do tego. Strasznie nieczytelnie napisany program, auć. Zaglądałem też do pewnej biblioteki do obsługi tego słownika, ale nie bardzo nadaje się do tych zastosowań. W każdym razie, mam pod ręką tego Langenscheidta, więc może kiedyś coś przy tym podłubię :)

  40. Rafal writes:

    Tak się nieśmiało zastanawiam… czy nie mógłbyś w wolnej chwili zrobić podobnego skryptu do konwertowania słowników YDP (angielski Collins, niemiecki Langenscheidt) na format StarDict/tabfile? Byłbym dozgonnie wdzięczny. :-)

  41. Jack writes:

    Witam. Czy mógłby ktoś użyczyć ten słownik już w formacie prc? Posiadam zakupioną wersję słownika 2006 i korzystam na PC i Macu (dzięki PYM dictionary)i bardzo mi zależy na tym słowniku dla mobipocketa ale na pisaniu skryptów i konwersji w ogóle się nie znam. Byłbym bardzo wdzięczny. Pozdrawiam :)

  42. Z odnośnikami to właśnie nie takie hop-siup. Bo nie każde hasło ma wymowę, o ile dobrze pamiętam (dawno nie używałem windowsowej wersji). Po prostu nie miałbym pewności czy linkuję odpowiedni plik wav. Zapewne gdzieś jest indeks i do tego. Szczerze mówiąc, dźwięki nie są mi do szczęścia potrzebne. Stąd moje małe zainteresowanie tematem.

  43. Anonim writes:

    Najłatwiej pewnie jest wyciągnąć z wersji 2005. Tam
    głosy są zapisane w wave.000 w formacie RIFF WAV, a indeksy w wave.vol
    Ale w wersji z 2006 są czymś zaszyfrowane
    Gdybyś machnął jakiś skrypcik dla wersji 2005 byłbym glad ;)

  44. Nic mi nie wiadomo na temat zapisu dźwięków. Ale z Kydpdictem chyba kiedyś dołączano służacy do tego skryptu, o ile mnie pamięć nie myli. Możliwe, że od tamtego czasu zmienił się format.

  45. Marek writes:

    Racja – Lingoes nie działa pod Liniksem, szkoda, że Ci się nie przyda.
    ..Problem mam właśnie ze skryptem tab2opf – po wpisaniu komendy pojawia się „SyntaxError: EOF while scanning triple-quoted string literal” Będę musiał znaleźć kogoś kto używa Linuksa albo sam zainstalować.
    Jeśli udałoby Ci się ulepszyć skrypt tab2opf tak aby usuwał transkrypcję ale jakimś cudem zachowywał ją, to byłbym bardzo wdzięczny za info, mój mail: mroova_ancestor@o2.pl.
    Jeszcze raz dziękuję za pomoc i pozdrawiam :)

  46. Lingoes niestety nie bardzo przyda mi się pod Linuksem, ale i tak dzięki :)

    O szczegóły lepiej zapytaj kogoś, kto używa Pythona pod Windosem. W każdym razie, sprawa sprowadza się do konwersji słownika za pomocą pwn2tabfile, a potem powstałego pliku za pomocą tabfile2opf. Mogą wystąpić problemy z transkrypcją fonetyczną. Na razie nie znalazłem 100% skutecznego na usunięcie samej transkrypcji. Będę jeszcze w tym dłubał.

  47. Marek writes:

    Słownik zaczął działać po restarcie kompa :) Liczba słów w ang-pol to 63020. Podejrzewam Mziab, że stworzenie skryptu wiązało się ze sporym wysiłkiem dlatego niniejszym składam wyrazy uznania i podziękowania. Jedyne co przychodzi mi teraz do głowy aby choć trochę się odwdzięczyć to podanie linku do strony z programem podobnym do Stardict, oto on: http://www.lingoes.net/en/index.html
    Sposób działania niemal identyczny ale Lingoes ma o wiele ładniejszy i bardziej przejrzysty layout – polecam :)
    Wiem, że to może niewłaściwe miejsce ale czy ktoś mógłby odpowiedzieć na pytania z poprzedniej wiadomości? Bardzo zależy mi na konwersji do .opf i dlatego tak męczę :)
    Pozdrawiam

  48. To ciekawe. Nie mam pojęcia czemu miałby słownik nie działać, skoro jest wykrywany. Jaka liczba słów jest wyświetlona w Manage Dict? Czy słownik jest zaznaczony w Query Dict i Scan Dict?

  49. Marek writes:

    Witam ponownie,
    z pomocą kolegi udało mi się skonwertować bazy słownika z 2007 roku – zarówno do formatu dict jak i tab (przy okazji mam pytanie: tabfile powinien mieć rozszerzenie .tab czy .txt?) – a zatem nowe skrypty działają. Mam jednak podobny problem jak z0rr0 – stardict nie widzi bazy słownikowej PWN-Oxford, u mnie jednak pojawia się on w Manage Dict, jest zaznaczona ale po wpisaniu dowolnego słowa program nie wyświetla wyników z PWN-Oxford.
    Mam jeszcze prośbę – czy ktoś mógłby mi pomóc przy konwersji do .opf lub .prc? (chciałbym aby słownik działał na Mobipocket). Przydatne narzędzia znalazłem na http://www.mobileread.mobi/forums/showthread.php?t=20480
    Stawiam jednak pierwsze kroki w pracy z wierszem poleceń dlatego byłbym bardzo wdzięczny za pomoc,
    pozdrawiam.

  50. Marek writes:

    Witam,
    na wstępie chciałbym przeprosić za poziom pytań – dla wielu mogą się wydać niemal retoryczne, niemniej prosiłbym o udzielenie odpowiedzi.
    Czytając posty bardzo spodobał mi się pomysł skonwertowania słownika PWN-Oxford do formatu Mobipocket.
    Problem w tym, że nie mam pojęcia jak to zrobić, czy ktoś mógłby opisać mi to krok po kroku? Byłbym bardzo wdzięczny.
    Działam na Windows XP i posiadam słownik PWN-Oxford z 2007 roku.
    Z góry dziękuję za pomoc i pozdrawiam.

  51. z0rr0 writes:

    A tak z ciekawości – czy bazy 2004, 2006 i 2007 różnią się czymś? Wydaje mi się, ze słownik elektroniczny jest wersją słownika papierowego, a od 2004 nie wyszła jego nowsza wersja. Wersje chyba dotyczą tylko programu do przeglądu bazy, ale nie samej bazy, choć moze sie myle?
    Pozdr

  52. Przeglądając zauważyłem trochę nowych haseł (przynajmniej w polsko-angielskim; angielsko-polski ma dokładnie tyle samo haseł) i dodatkowych znaczeń dla istniejących. Tyle z rzeczy nietechnicznych :) Z punktu widzenia technicznego zmienili nieznacznie strukturę bazy, dodali parę nowych tagów i przerobili zapis transkrypcji na encje IPA (np. &IPA322;). I z nimi właśnie miałem najwięcej roboty.

  53. Właśnie też na to trafiłem. Jedyną ciekawą rzeczą, jaką trafiłem w archiwum był indeks haseł. Sądząc po adresach, indeks został przeniesiony w inne miejsce, może nawet poza samą bazę. Nie obraziłbym się, gdyby ktoś podał mi na maila (<mziab at o2.pl>) pierwsze 10kB obu baz ;) Ale i tak nic nie obiecuję.

  54. Spodziewam się, że zmienili format. W najlepszym przypadku może się okazać, że zmiany są niewielkie. W przypadku wersji 2004 miałem o tyle ułatwione zadanie, że autor Kydpdicta rozgryzł format, a ja przeportowałem algorytm. Główny problem jest taki, że nie mam dostępu do żadnej nowszej wersji słownika.

  55. Glebozgryz writes:

    Pod windowsem też żadna filozofia…
    Potrzebujemy pythona dla windows np.: ActiveState ActivePython 2.6. (3.x o czym było wyżej może sprawiać problemy).
    Umieszczamy: pwn2dict.py i zrodlo.win w tym samym folderze.
    Dalej uruchamiamy command line (cmd) i:

    cd "sciezka_do_plikow_pwn2dict.py_i_zrodlo.win"
    sciezka_do_folderu_instalacji_pythonapython.exe pwn2dict.py zrodlo.win cel.dict

    Czy jest jakaś szansa na dostosowanie tego skryptu do nowszych baz *.win ze słownika PWN Oxford 2006 (2.0) albo 2007 (3.0)?
    BTW… świetna robota

    incorrect file header – to problem z niewłaściwą bazą *.win. Nie ta wersja słownika Oxford.

  56. Pod Windowsem raczej nie pomogę. Pod Ubuntu powinno wystarczyć nadanie atrybutu wykonywalnego skryptowi (chmod +x pwn2dict.py) i odpalenie go z odpowiednimi argumentami. Zakładam, że wiersz poleceń nie jest czarną magią? Jeśli jest, będą schody.

  57. W Pythonie 3 zmieniono implementację ciągów. Spróbuj usunąć te wszystkie u przed cudzysłowami. Skrypt był pisany i testowany pod Pythonem 2.5 i powinien też działać pod 2.6. Z 3.0 nie sprawdzałem.

  58. Czesc,
    A co moze oznaczac ten blad w linii 31 podczas wykonywania skryptu i jak sie go pozbyc ?
    Mam Pythona 3.0.1.

    C:Python30>python pwn2tabfile.py angpol.win slownik.dict
    File "pwn2tabfile.py", line 31
    "à": u"u00E0",
    ^
    SyntaxError: invalid syntax

  59. Anonymous writes:

    Dokładnie. Miałem ten sam problem z .ifo w StarDict. Pomogło pożyczenie .ifo z innego słownika i ręczne wpisanie do niego odpowiednich danych.

    Tak jak pisze mziab — chodziło na pewno o kodowanie znaków w pliku albo znaki końca linii.

  60. z0rr0 writes:

    Działa! Wielkie dzięki! Tym razem Stardict widzi bez problemu i nawet StardictEditor potrafi zrobić z niego tabfile! Jesteś great!
    Powalczę teraz trochę z konwrsją na pdb, tak żeby widział wszystkie znaki.
    Pozdr

  61. Konwertując do ANSI raczej stracisz polskie znaki, o transkrypcji nie wspominając.

    Hmm, twój .ifo ma ten sam tekst, ale inną sumę kontrolną. Jedyne możliwe wytłumaczenie to inne znaki końca linii. Problem wziął się stąd, że konwertujesz pod Windowsem i Python użył windowsowych znaków końca linii w .ifo, a Stardict najwyraźniej tego nie lubi.

    Na początek spróbuj zmienić:
    ifo = open(basename+".ifo", "w")
    na:
    ifo = open(basename+".ifo", "wb")

    Przekonwertuj jeszcze raz. Tym razem plik .ifo powinien mieć sumę 4cf7a0e002ab73ba6e74ac785e442300.

    EDIT: Zaktualizowałem skrypt i dorzuciłem drugi, konwertujący do tabfile.

  62. z0rr0 writes:

    Z nazwami plików nie kombinowałem – są takie jak poniżej. Z sumami md5 to mnie zażyłeś, musiałem wpierw sprawdzić w necie, o co chodzi. MD5 Checker wygenerował mi cuś takiego:

    angpol.dict C3232054783C914B48EE23370C464B5F
    angpol.idx 3AF6B2C5937F5CCEC5327CDD009EA9B1
    angpol.ifo 7CD361EF71E3AC083C28CA55576C3A5A

    Nie widzi, czyli nie pojawia się Manage Directories – nie chodzi, ze wyświetla z błędami, tylko go w ogóle nie zauważa. Plików jak powyżej, ścieżka dostępu w jednym z poprzednich postów. Treść .ifo:
    StarDict's dict ifo file
    version=3.0.0
    idxoffsetbits=32
    wordcount=63020
    idxfilesize=1184203
    bookname=angpol.dict
    sametypesequence=h

    To, że nie widzi, to ciut mniejszy ból, trochę bardziej zależy mi na tym tabfilu. Udało mi się już przejść raz proces i zrobiłem słownik do ereadera z jednego ze słowników Stardicta, choć musiałem na końcu zlikwidować to formatowanie UTF-8 na ANSI. Zastanawiam się czy będzie to finalnie wygladało dobrze?
    Pzdr

  63. Owszem, zachowałem formatowanie html, żeby hasła pozostały czytelne. Nie jest to jednak nic poza specyfikacją i jak najbardziej działa. Osobiście podejrzewam złe nazwy plików albo coś namieszane w systemie.

    Może sprecyzujmy. Co masz na myśli poprzez "nie widzi"? Nie pojawia się w Manage dictionaries? Jak masz ponazywane wszystkie pliki? Utworzyłeś podfolder w dic i tam je wrzuciłeś? Jaka jest zawartość .ifo? Jakie sumy md5 mają pliki .dict i .idx?

  64. z0rr0 writes:

    Może podeśle Ci te pliki, to rzuciłbyś okiem, czy to kwestia złej konwersji, czy jakiegoś buga na moim kompie? Ale w robocie na lapie tez zainstalowałem stardicta i tez nie widział ;-(
    Ja coś podejrzewam to formatowanie do html – inne słowniki nie są formatowane w ten sposób.
    pozdr

  65. Nie mogę tego potwierdzić. Sprawdziłem właśnie pod Windowsem. Zrobiłem podkatalog w dic, wrzuciłem tam słownik i pojawił się na liście. Przeszukiwanie i wyświetlanie haseł działa, wszystko jak pod Linuksem. Nic nie pakowałem. Obawiam się, że robisz coś źle. Tym bardziej to dziwne, że rozmiary plików się zgadzają.

  66. z0rr0 writes:

    Hejka,
    No niestety, nie widzi. Skopiowałem wszystkie 3 pliki do d:Program FilesStarDictdicangpol. Żeby nie było wątpliwości, angpol.win mam z wersji 2004 (66,875,812 b). Po przepuszczeniu przez Twój skrypt otrzymałem pliki: angpol.dict 16,293,708 b, angpol.idx 1,184,203 b i angpol.ifo 139 b.
    Początek tego pierwszego pliku dawał takie krzaczki:

    /kÉ™m'plektÉŞd/ in combinations <SMALL>US</SMALL> = -complexioned/kÉ™m'plekĘnd/ in combinations dark/light–complexioned o ciemnej/jasnej karnacji/kĘŚm/ in

    Nie podziałał restart Stardict ani całego systemu ;-(

    Spróbowałem tez spakować go do gz i zamienić rozszerzenie na dz, bo to ponoć ten sam algorytm (może się mylę?), tez nie zadziałało.

    Zmieniałem ręcznie wersję na 2.4.2 w pliku .ifo, ale Stardict-editor jest mądrzejszy i przejrzał ten chitry plan – dalej wywala ten sam błąd. Może on rozpoznaje to po formatowaniu? Jak przeglądałem inne pliki .dict to jednak ich struktura jest inna, choć nie znam się na tym. Pozdr

  67. Nic nie trzeba pakować, choć można. Wystarczy założyć podkatalog w dic, wrzucić tam te 3 pliki i zaznaczyć słownik w Manage dictionaries.

    Co do konwersji do tabfile, możesz spróbować zmienić wersję w pliku .ifo. Powinno pomóc. Spróbuję też wykopać starą wersję skryptu.

  68. z0rr0 writes:

    Witam,
    Walczę trochę z tym konwerterem. Musiałem poznać podstawy Pythona, ale w końcu udało mi się uzyskać te 3 pliki. Problem jest, bo Stardict nie widzi ich jako słownika (wersja 3.0.1 na winxp). Czy coś jeszcze trzeba zrobić z nimi (np. spakować dict do dz)? Na razie siedzą skopiowane w katalogu dic, ale zero – nie rusza.
    Próbuje też zrobić to co Rafał, ale nie mogę skonwertować słownika do tabfile. Stardict-editor po załadowaniu pliku ifo wywala mi błąd:
    "Building…
    Error, file version is not 2.4.2
    Done!"
    Pomocy, pliz!
    Może masz jeszcze tę pierwotną wersję skryptu, która konwertowała PWN do tabfile? To by pozwoliło mi zacząć walkę o konwersję słownika do PML i dalej do pdb.
    Pozdr

  69. z0rr0 writes:

    Witam,
    No prawie tego szukam, tylko chodzi mi o taką konwersję aby słownik dało się czytać przez ereadra (pdb). Może ktoś wie jak to zrobić? Zresztą taki słownik do Mobipocketa też by się przydał
    Będę dozgonnie wdzięczny
    z0rr0

  70. Rafal writes:

    OK, przećwiczę usuwanie transkrypcji. :-)

    Tak, najpierw konwertowalem do tabfile.

    Co do tab2opf — już wszystko wiem, wystarczyło w wierszu poleceń dorzucić "-utf" i polskie litery już są (ale nie IPA).

  71. No proszę, mój skrypt się faktycznie komuś przydał :)

    Rozumiem, że przerobiłeś go, żeby zapisywał hasła do formatu tabfile? W sumie miałem roboczą wersję, która zapisywała właśnie do tego formatu. Potem doszedłem do wniosku, że wygodniej będzie przekonwertować prosto do formatu StarDicta.

    Krótki rzut oka na tab2opf sugeruje, że polskie znaki i ten skrypt to niezbyt fortunna kombinacja. Obawiam się, że niewiele mogę pomóc w tej materii.

    Jeśli chodzi o usuwanie transkrypcji, to chyba wystarczy dopisać jedną linię kodu do funkcji format:
    temp=re.sub("/[^ ]+/ ", "", temp)

  72. Rafal writes:

    Super sprawa!

    Dzięki twojemu skryptowi mam słownik PWN-Oxford na moim iRex DR1000S ;-) Tyle że StarDicta przekonwertowałem jeszcze na Mobipocketa, żeby mieć możliwość wyszukiwania wyrazów w tekście (Dictionary Look-Up).

    Mam tylko problemy z polskimi literami. Ale to wynika raczej z drugiego skryptu (tab2opf.py) albo z możliwości urządzenia.

    Mam jedno pytanie: czy da się zrobić tak, żeby wyrzucić z definicji wyrazu IPA (tj. alfabet fontetyczny)?

    Wielkie dzięki! :-)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *