New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wersja StarDict #2
Comments
Czyli tabfile składa się z dwóch pól rozdzielonych tabem: wszystkich odmian oraz definicji, tak? Jeśli tak, to i to może się generować automatycznie. |
...i pionowe kreski zamiast przecinków. |
Najważniejsze, to chyba wyłapać które słowo powoduje błąd, bo może to definicja jest z błędem. TabFile.zip dostępny już na cc-sjp.zabałaganionemiejsce.pl. Jak dojdziemy co jest nie tak, dopiszę funkcje wykorzystujące ten plik do przerobienia na StarDict i poprawiające plik ifo o odpowiednia dane wg. https://github.com/huzheng001/stardict-3/blob/master/dict/doc/StarDictFileFormat:
Żeby to wszystko wyglądało tak jak należy (szczególnie data wygenerowania). Dzięki. |
W sumie z pyglossary zainstalowanym, to można te dane podać, jeżeli konwersje zrobi się w skrypcie bez gui.
tylko obecnie sprawdzam jak należy podać odmiany, jeżeli by się zrobiło bez konwersji pośredniej do TabFile |
Co do problematycznych słów: to na czytniku mam problem ze słowem fizyka, ale już jak odpalam KoReadera na Linuksie, to problemu brak. |
Od razu zaznaczam, że skrypty o których ja mówię to php + ew. bash. Jeśli to problem z długością hasła, to można temu zaradzić. |
from pyglossary import Glossary
from datetime import date
Glossary.init()
glos = Glossary()
with open('SJP_202302181705.txt') as file:
for line in file:
word, abberation, definition = line.split('\t')
if abberation:
abberation = abberation.split(', ')
glos.addEntryObj(
glos.newEntry([word, *abberation], definition, defiFormat='h')
)
glos.setInfo('title', 'SJP info')
glos.setInfo('author', 'San Zamoyski')
glos.setInfo('date', date.today().strftime('%Y%m%d'))
staroptions = {'dictzip': True, 'sametypesequence': 'h', 'merge_syns': True}
glos.write(
f"sjp-{date.today().strftime('%Y%m%d')}.ifo", 'Stardict', **staroptions
) tak powinien wyglądać mniej więcej konwersja przy użyciu pythona z już wcześniej istniejącego formatu Można co prawda rozdzielić definicje i też podać w postaci listy. |
Autora można podać po konwersji edytując plik tekstowy ifo, który wygląda mniej więcej tak
Więc po konwersji autora, datę, opis, maila oraz stronę można dopisać ręcznie czy jakimś skryptem. Tytuł z tego co widzę, jeżeli jest konwertowany to pobiera z nazwy pliku wejściowego. Tutaj w razie co komenda do konwersji z formatu tabfile:
Przepraszam, że tak chaotycznie Do skompresowania przez pyglossary słownika potrzebny jest program dictzip |
Układ można poprawić plikiem .css, który się wrzuca obok plików słownika. Skrypt naprawiający problemy z plikami html: Użyty skrypt do konwersji z HTML na StarDict Textual: Słownik można pobrać tutaj: |
Powyższy kod jest do przekonwertowania wersji z SJP-{data} do formatu tabfile rozumianego przez pyglossary, który potem umożliwia konwersja do formatu StarDict
Do konwersji do StarDicta użyłem następujących opcji:
Słownik można tutaj pobrać https://tokariew.xyz/nextcloud/s/dQB5Dc6q3tzDndN
Można go przetestować w programie Koreader
The text was updated successfully, but these errors were encountered: