-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
294066d
commit 8089ae5
Showing
7 changed files
with
217 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,51 @@ | ||
# polishify | ||
# polishify | ||
|
||
## Setup | ||
|
||
Simply | ||
|
||
```sh | ||
pip install polishify | ||
``` | ||
|
||
## Usage | ||
|
||
If you have some text that is in Polish but characters look weird it might not be encoded with `windows-1250` or `iso-8859-2` encoding. If your file is `sometext.txt` you may | ||
|
||
```sh | ||
polishify sometext.txt | ||
``` | ||
|
||
and it will show you something like | ||
|
||
``` | ||
detected encoding is: windows-1250 | ||
``` | ||
|
||
If you wish to get this file converted to `utf-8` just do | ||
|
||
```sh | ||
polishify sometext.txt properly-encoded.txt | ||
``` | ||
|
||
If you do it in bash script you might not want to see any outputs, the script supports silent mode as follows | ||
|
||
```sh | ||
polishify sometext.txt properly-encoded.txt --silent | ||
``` | ||
|
||
This package contains words with polish letters, you might want to use your own dataset `dataset.json` file. | ||
|
||
```sh | ||
polishify sometext.txt properly-encoded.txt --silent --dataset dataset.json | ||
``` | ||
|
||
We also provide a tool that generates it from a text | ||
|
||
```sh | ||
polishify-extract sometext.txt dataset.json --encoding windows-1250 | ||
``` | ||
|
||
## Author | ||
|
||
Made by [Marek Narożniak](https://mareknarozniak.com/), for the world and especially people who have people in the family who needs subtitles in Polish and want to bulk convert their encodings. No warranty provided. Licensed under GPL-3. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
__version__ = '0.1.0' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# import string | ||
# print(string.printable) | ||
|
||
import argparse | ||
import re | ||
import json | ||
|
||
parser = argparse.ArgumentParser(description='Polishify by Marek Narozniak, a tool that helps you get rid of old encodings in Polish text.') | ||
parser.add_argument('input', | ||
help='Input file that contains polish text to generate the dataset') | ||
parser.add_argument('output', | ||
help='Output file that will store the dataset') | ||
parser.add_argument('--encoding', | ||
default='utf-8', | ||
help='Encoding of the file.') | ||
args = parser.parse_args() | ||
|
||
def main(): | ||
data = None | ||
with open(args.input, 'rb+') as f: | ||
data = f.read() | ||
|
||
decoded = data.decode(args.encoding).lower() | ||
|
||
keep = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' | ||
remove = '0123456789!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~\r\n' | ||
|
||
for r in remove: | ||
decoded = decoded.replace(r, ' ') | ||
|
||
decoded = re.sub(' +', ' ', decoded) | ||
|
||
words = decoded.split(' ') | ||
words = list(set(words)) | ||
|
||
polish = 'łąęźćżńó' | ||
dataset = {} | ||
|
||
for p in polish: | ||
selected = [] | ||
for word in words: | ||
if p in word: | ||
selected.append(word) | ||
print(p, len(selected)) | ||
dataset[p] = selected | ||
|
||
with open(args.output, 'w') as f: | ||
json.dump(dataset, f, ensure_ascii=False) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
import argparse | ||
import sys | ||
import re | ||
import json | ||
|
||
from polishify import static | ||
|
||
try: | ||
import importlib.resources as pkg_resources | ||
except ImportError: | ||
# Try backported to PY<37 `importlib_resources`. | ||
import importlib_resources as pkg_resources | ||
|
||
parser = argparse.ArgumentParser(description='Polishify by Marek Narozniak, a tool that helps you get rid of old encodings in Polish text.') | ||
parser.add_argument('--silent', | ||
required=False, | ||
action='store_true', | ||
help='Silent mode makes it not show any output.') | ||
parser.add_argument('input', | ||
help='Input file that contains polish text with unknown encoding.') | ||
parser.add_argument('--out', | ||
help='If present, writes the utf-8 encoded text there') | ||
parser.add_argument('--dataset', | ||
help='You may use your own words reference dataset json file.') | ||
args = parser.parse_args() | ||
|
||
|
||
def getLowercaseWords(text): | ||
remove = '0123456789!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~\r\n' | ||
lowered = text.lower() | ||
for r in remove: | ||
lowered = lowered.replace(r, ' ') | ||
lowered = re.sub(' +', ' ', lowered) | ||
words = lowered.split(' ') | ||
words = list(set(words)) | ||
return words | ||
|
||
|
||
def isPolish(text, dataset): | ||
polish = 'łąęźćżńó' | ||
words = getLowercaseWords(text) | ||
for j, p in enumerate(polish): | ||
required_words = dataset[p] | ||
common = [value for value in words if value in required_words] | ||
if len(common) == 0: | ||
return False | ||
return True | ||
|
||
|
||
def main(): | ||
dataset = None | ||
if args.dataset: | ||
with open(args.dataset, 'r') as f: | ||
dataset = json.load(f) | ||
else: | ||
with pkg_resources.open_binary(static, 'dataset.json') as f: | ||
dataset = json.load(f) | ||
|
||
encodings = ['utf-8', 'iso-8859-2', 'windows-1250'] | ||
|
||
data = None | ||
with open(args.input, 'rb+') as f: | ||
data = f.read() | ||
|
||
target_encoding = None | ||
for encoding in encodings: | ||
try: | ||
decoded = data.decode(encoding) | ||
except: | ||
continue | ||
if isPolish(decoded, dataset): | ||
target_encoding = encoding | ||
if not args.silent: | ||
print('detected encoding is: ', encoding) | ||
break | ||
|
||
if args.out: | ||
if not args.silent: | ||
print('Writing to', args.out) | ||
decoded = data.decode(target_encoding) | ||
with open(args.out, 'w') as f: | ||
f.write(decoded) |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"ł": ["dotykał", "właśnie", "pamiętał", "generał", "byłam", "długa", "była", "słonecznym", "zgłodniałeś", "współrzędne", "znalazł", "wysiłku", "krzesło", "małej", "dotykałem", "popełniamy", "całkowita", "przybyły", "pełni", "około", "człowieku", "istniała", "światło", "współczuję", "powiedziałbym", "miałbym", "właściwą", "układzie", "miałeś", "powiedział", "pokonał", "niezwykłą", "powiedziałam", "chciałem", "żałuje", "głodny", "zasłużyliście", "słyszeć", "położenie", "białek", "połączeniem", "zawiodła", "obsługi", "miało", "moduł", "zmarnowałeś", "widziałem", "ustaliłem", "chciał", "wokół", "błędny", "siły", "powstrzymywało", "malowidła", "włączymy", "włączam", "wyraził", "połączenie", "siłowe", "działać", "łatwym", "odkrył", "tłumaczyć", "dłużej", "północ", "przepełniło", "chciała", "sprowadził", "przydział", "osłonę", "wiedział", "mówiła", "przesyła", "przesłać", "włącznie", "wyłączaj", "usłyszeć", "strzelałeś", "dołączycie", "mały", "kłopoty", "mówiłem", "przyjaciół", "zastanawiałem", "łańcucha", "cały", "spisałeś", "wykrywał", "członkowie", "włączaj", "mogłeś", "usiadłem", "cała", "zostało", "poczułem", "źródło", "dorównywałaby", "wzrastało", "zauważyłem", "chłopiec", "chłopaki", "przyszłość", "zapadło", "pomysł", "myślałem", "bawiłam", "został", "załapałem", "kałużowy”", "skupiłem", "udało", "żołnierzy", "widział", "zgubiłam", "przesłona", "właściwy", "wiedziałem", "odległej", "tyłu", "przeszłość", "sygnał", "tańczyła", "całe", "miała", "posłuchaj", "pułkowniku", "poszedł", "zmieniło", "śniło", "mogło", "diabła", "sprawdziłem", "wyłączenia", "należało", "pułkownika", "stało", "dół", "był", "pomyślałam", "przyprowadziłem", "główną", "powiedziałeś", "rozległe", "wyłącz", "odbijało", "działa", "słyszałem", "zapamiętał", "zatonęło", "pułkownik", "podobało", "smakowałam", "całego", "bały", "posłuchać", "spał", "nazywało", "wyłączyła", "leżało", "całkowicie", "zaskoczył", "mogły", "próżnował", "włączają", "opadły", "przeczytałam", "przesyłaj", "wyłączcie", "szukały", "znalazłeś", "przełamać", "byłem", "zrobiłeś", "słuchajcie", "źródła", "powracał", "pełno", "przetrwało", "zabrałaś", "zrobiłem", "piekło", "głowę", "niewłaściwym", "zdołasz", "głównego", "hałasu", "miła", "najechał", "obsługiwać", "miło", "członków", "próbowałem", "zobaczył", "nastąpiło", "włączyć", "było", "wybierałam", "zostałeś", "doskonałe", "miły", "błagał", "strzał", "dotknęła", "sprowadziłeś", "głód", "została", "pozostałe", "zgadzało", "pułkownikiem", "wysłać", "połączenia", "zgłosiliście", "trwałoby", "zebrałam", "były", "załamuje", "udział", "chciałaś", "głodowi", "podjęłaś", "słucham", "całym", "mogła", "umysłu", "udzielił", "generała", "załóż", "powiedziałem", "dowiedziałem", "mało", "osłony", "przyjaciółmi", "właściwie", "miałem", "światła", "musiał", "zagłada", "wyczułeś", "karłowata", "przeładować", "błędy", "łącznie", "zupełnie", "zespół", "kałużowy", "wydawało", "tłumaczenie", "wyłączeniu"], "ą": ["powstrzymują", "mijają", "wodą", "najmądrzejsi", "wymagają", "ściągnie", "mogą", "wygląda", "pomogą", "przelatujący", "mówią", "ziemią", "skąd", "zbliżających", "właściwą", "dotąd", "wyczuwają", "zacząć", "niezwykłą", "jedną", "dyplomatyczną", "stwierdzą", "zaczną", "spędzą", "znaną", "połączeniem", "sądzę", "latające", "zbuntowaną", "wystarczająco", "dokądś", "potrafią", "mówiąc", "osiąga", "potężną", "idą", "włączymy", "misją", "włączam", "naszą", "interesującego", "połączenie", "ją", "pańską", "niewyobrażalną", "wracają", "szczątkowymi", "mną", "bądź", "odciągnąć", "włącznie", "wyłączaj", "dołączycie", "pomocą", "urządzeniu", "lądowania", "dokąd", "mają", "waszą", "oglądam", "zabierając", "bądźcie", "włączaj", "tą", "wyglądają", "moją", "twoją", "otwartą", "galaktyką", "śpią", "imponujące", "wziąć", "bawią", "związek", "są", "usiąść", "przywódcą", "porządku", "wylądujemy", "muszą", "pozwalają", "początku", "zjawią", "rozwalą", "nieosiągalny", "wykonując", "wyłączenia", "reprezentujących", "ekspedycyjną", "główną", "wyłącz", "określających", "którą", "lecą", "tysiące", "potrzebują", "niesamowitą", "wyrządzona", "zbliżają", "sobą", "ojczyzną", "bronią", "wyłączyła", "nawiązaliśmy", "zamknąć", "najpotężniejszą", "chwilą", "włączają", "wiedzą", "wyłączcie", "przebudzą", "wykrywają", "aktywują", "oglądasz", "nadlatują", "pewnością", "powstrzymujące", "stąd", "powierzchnią", "ciągle", "inną", "przybędą", "niebezpieczną", "nastąpiło", "wątpię", "włączyć", "rozwiązanie", "chcą", "ostatnią", "rangą", "obudzą", "dobrą", "wyjątkowemu", "żyją", "otrząśnij", "połączenia", "lądujcie", "gorące", "nawiązywać", "postąpić", "ściągnij", "będą", "biorąc", "nawiązaliście", "wyruszą", "technologią", "podjąć", "łącznie", "zasilają", "latającym", "zewnątrz", "zająć", "widzą", "wyłączeniu"], "ę": ["przegapię", "pamiętał", "imię", "galaktykę", "miesięcy", "wędrowców", "naprawdę", "współrzędne", "pragnę", "konsolę", "będzie", "zabiorę", "rację", "cię", "noktowizję", "współczuję", "antarktydę", "okazję", "szurnięci", "grupę", "spędzą", "sondę", "wodę", "ochronę", "sądzę", "błędny", "mogę", "potężną", "parę", "wrócę", "nadaję", "sprzętu", "myślę", "potęga", "dostęp", "stronę", "szczęście", "boję", "uwięziliście", "osłonę", "idę", "atlantydę", "obronę", "zapętlone", "nazwę", "klęknij", "rozmowę", "między", "potędze", "nowinę", "wiarę", "ciężko", "będziesz", "umrę", "placówkę", "uwagę", "znajdę", "cieszę", "planetę", "względu", "pojęcia", "chwilę", "poślę", "będę", "przemyślę", "najwięcej", "zgadnę", "maskę", "celę", "uszkodzę", "chcę", "stuknięci", "radę", "daję", "energię", "większym", "zasięg", "ziemię", "szansę", "będziecie", "dziękuję", "zapamiętał", "zatonęło", "następnym", "herbatę", "trochę", "tę", "najpotężniejszą", "muszę", "mówię", "przybędzie", "zaakceptuję", "części", "strefę", "decyzję", "zapamiętaj", "się", "potrzebuję", "dźwięk", "czuję", "dziurę", "proszę", "lubię", "kamerę", "zdecyduję", "głowę", "zwięźle", "przybędą", "więcej", "więc", "wątpię", "wszędzie", "wyrażę", "dotknęła", "funkcję", "dzięki", "pamiętam", "próbuję", "zasięgiem", "nadzieję", "garstkę", "część", "zdobędziecie", "ramię", "kartotekę", "oblężeni", "pozycję", "podjęłaś", "widzę", "uwzględniono", "rękach", "będziemy", "technologię", "będą", "poświęca", "ręka", "błędy", "językiem", "dziwię", "zaczęliśmy"], "ź": ["sprawdź", "przyprowadź", "chodźmy", "wejdźcie", "później", "znaleźliśmy", "chodźcie", "bądź", "idźcie", "najwyraźniej", "przyjaźń", "bądźcie", "idź", "weź", "źródło", "późno", "odpowiedź", "znaleźć", "przejdź", "znajdźcie", "źli", "źródła", "nieźle", "dźwięk", "zwięźle", "źle"], "ć": ["pośpieszyć", "przedrzeć", "spodziewać", "zobaczyć", "odejść", "zostać", "darować", "porozmawiać", "ruszać", "ilość", "reaktywować", "zadbać", "użyć", "zaoferować", "przeszukać", "potraktować", "wracać", "sprawdzić", "wstawać", "zatrzymać", "stać", "zacząć", "słyszeć", "jeść", "zapalać", "być", "podtrzymać", "opuszczać", "zareagować", "lecieć", "przerwać", "wychodzić", "wymieniać", "iść", "wybierać", "działać", "tłumaczyć", "szukać", "negocjować", "zapewnić", "martwić", "widzieć", "ustanowić", "wpakować", "przesłać", "odciągnąć", "usłyszeć", "sieć", "spróbować", "startować", "obecność", "zabezpieczyć", "kryć", "wyrazić", "zdolność", "przyszłość", "ćwiczeniom", "wziąć", "wylecieć", "handlować", "używać", "poznać", "uczyć", "utworzyć", "brakować", "usiąść", "bać", "pozwolić", "ocalić", "ćwiczenia", "podnieść", "przeszłość", "robić", "znaleźć", "widać", "ustalić", "spowodować", "potrzebować", "wrócić", "zapalić", "bawić", "ewakuować", "zatrzymywać", "dopuścić", "atakować", "dzwonić", "posłuchać", "powiedzieć", "opuścić", "siedzieć", "porzucić", "zamknąć", "gadać", "śmierć", "strzelać", "żyć", "dość", "przełamać", "rozwalić", "wiadomość", "dostać", "pokazać", "latać", "cześć", "obstawiać", "przygotować", "niewidzialność", "przekonywać", "wypatrywać", "uratować", "ludzkość", "umrzeć", "obsługiwać", "wpuść", "czekać", "zasilić", "włączyć", "wyruszać", "zostawić", "zbadać", "spytać", "pohandlować", "udać", "otworzyć", "zrobić", "wysłać", "wiedzieć", "przypominać", "część", "zabić", "ciemność", "zebrać", "zejść", "myśleć", "nawiązywać", "wyobrazić", "zastanowić", "postąpić", "mnożyć", "zawrócić", "przemieszczać", "obróć", "walić", "sprawić", "zabrać", "przeładować", "przejść", "podjąć", "pójść", "mieć", "zająć"], "ż": ["próżniowej", "niż", "użyć", "bliżej", "zbliżających", "żniwo", "także", "przecież", "żebyś", "chociaż", "żałuje", "życie", "zasłużyliście", "położenie", "sierżancie", "żywe", "wyjeżdżam", "przekaż", "tuż", "potężną", "przeżyli", "uważajcie", "żartujesz", "niewyobrażalną", "dłużej", "boże", "żadnego", "każdy", "drużyna", "drużyny", "ciężko", "starożytni", "należy", "ważniejszego", "pilotażowi", "że", "zużywa", "zauważyłem", "używać", "ponieważ", "podróż", "kałużowy”", "żołnierzy", "pokaż", "możliwości", "żerowiska", "możesz", "żartuj", "zbliża", "najodważniejsi", "należało", "zużycie", "podróży", "też", "żywot", "zbliżają", "leżało", "poważny", "nieważne", "próżnował", "najpotężniejszą", "żyć", "życia", "poważne", "może", "możemy", "niezależne", "żyje", "ostrożniejszy", "żeby", "życiu", "wyrażę", "możecie", "zbliżonych", "pomoże", "aż", "żyją", "uważam", "upoważnienia", "już", "oblężeni", "każdym", "duże", "najwyższy", "żerowisko", "mnożyć", "odżywiane", "załóż", "ostrożni", "duża", "pomóż", "przeróżne", "kałużowy", "możliwe", "dużo"], "ń": ["pański", "zadzwońcie", "zostań", "pańską", "badań", "przyjaźń", "łańcucha", "ogień", "końcu", "zakończenie", "dzień", "tańczyła", "skończyliśmy", "broń", "dzwońcie", "niebezpieczeństwie", "odsuńcie", "pokoleń", "mieszkańcy", "przestrzeń"], "ó": ["próżniowej", "pozwól", "wędrowców", "współrzędne", "bandytów", "mówią", "siódmy", "córka", "stóp", "współczuję", "krajów", "pomóc", "móc", "spróbujcie", "przywódca", "którzy", "genów", "spróbuj", "zrób", "naróbcie", "potrójnie", "którymi", "później", "wokół", "zetów", "nieporównywalna", "sposób", "mówiąc", "wrócę", "ogóle", "dopóki", "północ", "dwóch", "światów", "mówiła", "wrócili", "równie", "pokój", "mówiłem", "spokój", "przyjaciół", "spróbować", "spójrzcie", "placówkę", "którego", "spójrz", "które", "źródło", "dorównywałaby", "komórkach", "róbcie", "późno", "mówi", "wróg", "podróż", "krótkie", "przywódcą", "środków", "przycisków", "przodków", "podwójnie", "próbowaliśmy", "wrócimy", "której", "dół", "milionów", "wrócić", "stój", "placówce", "podróży", "główną", "odwróci", "którą", "gotów", "próżnował", "mnóstwo", "mówię", "ósmy", "źródła", "powrócimy", "spróbujemy", "wśród", "placówki", "których", "głównego", "twój", "który", "którym", "członków", "próbowałem", "mój", "która", "wrót", "głód", "powróci", "komórki", "próbuję", "odbiór", "niektórzy", "swój", "niektórych", "wkrótce", "zawrócić", "załóż", "wrócisz", "obróć", "przyjaciółmi", "adresów", "pomóż", "przeróżne", "zespół", "pójdziemy", "pójść"]} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import setuptools | ||
import polishify | ||
|
||
|
||
setuptools.setup( | ||
name='polishify', | ||
version=polishify.__version__, | ||
packages=['polishify', 'polishify.static'], | ||
license='MIT', | ||
description = 'Helps you convert Polish text of unknown encoding into UTF-8', | ||
long_description=open('README.md').read(), | ||
long_description_content_type="text/markdown", | ||
author = 'Marek Narozniak', | ||
author_email = 'marek.yggdrasil@gmail.com', | ||
install_requires=['argparse'], | ||
url = 'https://github.com/marekyggdrasil/polishify', | ||
classifiers=[ | ||
"Programming Language :: Python :: 3", | ||
"Programming Language :: Python :: 2", | ||
"License :: OSI Approved :: MIT License", | ||
"Operating System :: OS Independent", | ||
], | ||
include_package_data=True, | ||
package_data = { | ||
# If any package contains *.txt or *.rst files, include them: | ||
'': ['dataset.json'], | ||
}, | ||
entry_points={ | ||
'console_scripts': [ | ||
'polishify=polishify.polishify:main', | ||
'polishify-extract=polishify.extract:main' | ||
], | ||
}, | ||
) |