pwn2dict
Friday, 31. October 2008, 18:19:32
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:
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.
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.










1 2 3 Next »
Anonymous # 29. November 2008, 16:18
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! :-)
Michał Ziąbkowski # 29. November 2008, 17:07
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)
Anonymous # 29. November 2008, 18:16
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).
Anonymous # 30. January 2009, 08:15
Dzieki za skrypt, zaoszczedziles mi sporo pracy, jeszcze raz wielkie dzieki!
Anonymous # 8. February 2009, 15:24
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
Anonymous # 9. February 2009, 23:36
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
Michał Ziąbkowski # 10. February 2009, 14:25
Co do konwersji do tabfile, możesz spróbować zmienić wersję w pliku .ifo. Powinno pomóc. Spróbuję też wykopać starą wersję skryptu.
Anonymous # 10. February 2009, 22:46
Hejka,
No niestety, nie widzi. Skopiowałem wszystkie 3 pliki do d:\Program Files\StarDict\dic\angpol\. Ż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 US = -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
Michał Ziąbkowski # 11. February 2009, 12:51
Anonymous # 11. February 2009, 23:44
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
Michał Ziąbkowski # 11. February 2009, 23:50
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?
Anonymous # 12. February 2009, 12:17
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
Michał Ziąbkowski # 12. February 2009, 14:43
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.
Anonymous # 12. February 2009, 22:33
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
Anonymous # 18. February 2009, 17:06
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.
Lukasz # 20. February 2009, 22:10
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
Michał Ziąbkowski # 20. February 2009, 22:18
Anonymous # 22. February 2009, 13:49
Mógłbyś napisać krok po kroku jak to skonwertować ? :>
Bo jestem noobem w Pythonie :D
Michał Ziąbkowski # 22. February 2009, 14:06
Anonymous # 22. February 2009, 14:42
Windows albo Ubuntu
Michał Ziąbkowski # 22. February 2009, 15:18
Anonymous # 23. February 2009, 18:46
kurczę, nie wiem co źlę robie ale cały czas wyskakuje mi błąd:
bash: pwn2dict: polecenie nieodnalezione
Michał Ziąbkowski # 23. February 2009, 18:56
Anonymous # 23. February 2009, 19:04
Anonymous
Możesz też uruchomić w ten sposób:
python pwn2dict.py zrodlo.win nazwa.dict
mziab
Dzięki za skrypt. Zrobiłeś naprawdę wspaniałą rzecz.
Anonymous # 23. February 2009, 20:23
Też jestem nowicjuszem w pythonie i wyskakuje mi taki błąd ; incorrect file header :(
Anonymous # 23. February 2009, 20:26
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_pythona\python.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.
Anonymous # 23. February 2009, 20:37
Aahh już wiem w czym problem - wersja mojego słownika to 2006 ;(
Michał Ziąbkowski # 23. February 2009, 21:00
Anonymous # 26. February 2009, 22:28
Tu jest ktos komu udalo sie rozgryzc format na OSX:
http://pym.uce.pl/pymdictionary.html
moze to pomoze troche :)
Michał Ziąbkowski # 26. February 2009, 22:35
Lukasz # 28. February 2009, 12:23
Daj znać czy jesteś zainteresowany.
Michał Ziąbkowski # 28. February 2009, 12:31
dd if=angpol.win of=angpol_10kb.win bs=1k count=10
Po if= i of= odpowiednio plik źródłowy i docelowy.
Gdyby to nie wypaliło, proszę o kontakt mailowy.
Lukasz # 28. February 2009, 12:33
Michał Ziąbkowski # 28. February 2009, 12:41
Michał Ziąbkowski # 1. March 2009, 20:19
Lukasz # 1. March 2009, 20:54
Serdeczne dzięki.
Anonymous # 2. March 2009, 15:12
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
Michał Ziąbkowski # 2. March 2009, 15:21
Anonymous # 14. March 2009, 22:34
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.
Anonymous # 15. March 2009, 19:23
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.
Michał Ziąbkowski # 15. March 2009, 20:25
Anonymous # 16. March 2009, 16:48
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
Michał Ziąbkowski # 18. March 2009, 22:04
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ł.
Anonymous # 19. March 2009, 12:29
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 :)
Michał Ziąbkowski # 19. March 2009, 13:47
Anonymous # 20. March 2009, 17:15
Witam.
Mam pytanie czy da się wyciągnąć pliki dźwiękowe ?
Michał Ziąbkowski # 20. March 2009, 18:27
Anonymous # 21. March 2009, 18:27
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 ;)
Anonymous # 21. March 2009, 19:57
Posłuchałem sobie tego pliku w winampie ;)))
Anonymous # 21. March 2009, 19:58
To tylko 879 minut i znam wszystkie słówka