From 83718c6543a73060591c6b80d5a444b51b84b16c Mon Sep 17 00:00:00 2001 From: alekssamos Date: Tue, 2 Feb 2021 21:25:24 +0300 Subject: [PATCH] fix errors --- README.md | 2 +- addon/doc/en/readme.md | 90 ++++++++++++++++--- .../textnormalizer/textnormalizer.py | 37 +++++++- buildVars.py | 2 +- 4 files changed, 115 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index a70b6d4..517938e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Дополнение Text Normalizer для NVDA -[Скачать версию 2021.02.02](https://github.com/alekssamos/textnormalizer_for_nvda/releases/latest/download/textnormalizer-2021.02.02.nvda-addon) +[Скачать версию 2021.02.03](https://github.com/alekssamos/textnormalizer_for_nvda/releases/latest/download/textnormalizer-2021.02.03.nvda-addon) ### Горячие клавиши Свободных комбинаций нынче стало не хватать, да и они могут уже использоваться в других дополнениях. diff --git a/addon/doc/en/readme.md b/addon/doc/en/readme.md index 9517fa2..517938e 100644 --- a/addon/doc/en/readme.md +++ b/addon/doc/en/readme.md @@ -1,17 +1,87 @@ -# Дополнение crypto info для NVDA +# Дополнение Text Normalizer для NVDA -[Скачать версию 2021.01.31](https://github.com/alekssamos/crypto_info/releases/latest/download/crypto_info-2021.01.31.nvda-addon) +[Скачать версию 2021.02.03](https://github.com/alekssamos/textnormalizer_for_nvda/releases/latest/download/textnormalizer-2021.02.03.nvda-addon) ### Горячие клавиши -* nvda+Alt+K - Показать список криптовалют -* nvda+Alt+0-9 - Прослушать информацию о выбранной криптовалюте в позиции от 0 до 9 -> То есть nvda+Alt+0, nvda+Alt+1, nvda+Alt+2 и так далее. +Свободных комбинаций нынче стало не хватать, да и они могут уже использоваться в других дополнениях. -Пока менять нельзя, возможно скоро сделаю. Если неудобно, поменяйте через Жесты ввода. +Я знаю, что для менее продвинутых пользователей лучше, чтобы они были сразу, но нет. Я не придумал удобные свободные жесты. -Сейчас их как раз на сайте 10 штук, больше нет. +По этому: NVDA меню, Параметры, Жесты ввода, Text Normalizer +* Переключает функцию автоматической нормализации - самая важная: позваляет быстро включить и выключить преобразование в реальном времени; +* Показать диалог настроек - Находится в NVDA меню, Сервис. Включить копирование в буфер обмена, а так же протестировать конвертер, два текстовых поля, в одно пишете, нажимаете на кнопку, во втором получаете исправленный текст; +* Копировать последний текст в буфер обмена - Сказал "н@ши мopo3ы cильныe", нажал и скопируется "наши морозы сильные"; +* Нормализовать выделенный текст - Выделил одно слово, нажал, услышал читаемый вариант; +* Нормализовать последнюю сказанную фразу - NVDA просто что-нибудь проговорила, нажал, услышал читаемый вариант; +* Нормализовать текст из буфера обмена - у вас уже есть скопированный текст, после нажатия он заменится на исправленный. +* Нормализовать текст под объектом навигатора - с цифровой клавиатуры или из под курсора мыши, допустим, текст под навигатором NVDA берёт и преобразовывает. +### Примеры: +> Слушайте сначала без дополнения, затем с ним. -В первой версии информация берётся со страницы [Криптовалюты в реальном времени — Investing.com](https://ru.investing.com/crypto/), +* Coбиpаeм @пельcины, кoтopые висят у мeня нa дepeBe и кyшaeм иx, нe 3абывaйтe тoлькo иx пoчиcтить, а шкурки выкинyть в мycopHoe BEДPO. +* BAШ 6aлaнс мeHee 5 рyблeй, пoпoлнитe BAШ Cчёт. +* ПPEДЛ@Г@Ю 3@paб0т0к В ИнтepHeте бeз BЛOЖEHИй! XOЧEШЬ 3@p@60ТAТЬ? на 1Phone, 1Pad, 1POD? +* Я 3HAЮ ТBOЙ `п@poль` и лoгин для дocтyпа в личный к@бинeт! +* BЫXOДA HEТ! -возможно в будущем добавлю другие. -Сейчас мне лень. +> Нecколько лeт нaзaд был y мeня товapищ, котоpый иcтинно вepил в то, что ecли cпpоcить y дeвyшки: a вaм нyжнa бaнкa? И онa cкaжeт – нyжнa. То жeнa c нee полyчитcя - xозяйcтвeннaя xpaнитeльницa домaшнeго очaгa. +> +> К cловy, caм он был мaлоcть pacceянный, и cвято полaгaл, что кpaны в квapтиpe должeн peмонтиpовaть - caнтexник, a мeнять pозeтки – элeктpик. +> И нe мог он нaйти тy, котоpой былa нyжнa бaнкa. +> +> И вот кaк-то звонит он и пpeдлaгaeт нaпитьcя. Спpaшивaю: что cлyчилоcь? +> B пapкe зaвязaлcя paзговоp c cимпaтичнeнькой дeвyшкой. Нy и по тpaдиции: +> +> - А вaм бaнкa нyжнa? +> А онa в отвeт: - Нyжнa! +> +> Я – говоpит, зaмyж ee чyть нe позвaл в тy жe ceкyндy. +> +> А онa в отвeт: - А вaм отвepткa нyжнa? +> - Нeт, - c yлыбкой нa лицe сказал мой товapищ... + +> Сидeл я. Никого нe тpогaл. Можно cкaзaть, что пpимycы починял ceбe cпокойно гдe-то зa гоpодом. Звонит нeзнaкомый номep. Бepy тpyбкy. Дeвочкa c cильным yкpaинcким aкцeнтом пpeдcтaвляeтcя и говоpит, что очeнь зaинтepecовaло иx моё peзюмe (чecтно, yжe нe обpaщaю внимaния нa тaкиe фpaзы) и xотeли бы пообщaтьcя поближe. Пpоговоpили вопpоc минимaльной зapплaты. Иx вcё ycтpоило. +> +> - Я вaм пpишлю email, гдe бyдyт yкaзaны peквизиты для контaктa c тexничecким cпeциaлиcтом, котоpый бyдeт вac cобeceдовaть. +> +> Чepeз нeкотоpоe вpeмя нa почтe было пиcьмо c контaктaми. Добaвил в Skype и договоpилиcь, что зaвтpa в 12 мы бyдeм общaтьcя. А покa по нaзвaнию попытaлcя нaйти иx. Уcпeшно, xотя и нe c пepвой попытки. Сaйт подозpитeльно поxож нa "Lorem Ipsum", то ecть cплошнaя pыбa нa WP. Компaния большaя и cepьёзнaя. Понятно. +> +> B полдeнь мы cозвонилиcь. B тeчeниe чaca мы пpоговоpили много paзличныx вопpоcов. Пообщaлиcь об опытe. Емy явно нpaвилоcь cо мной говоpить, тaк кaк для мeня иx иcпользyeмый cтeк нa 90% знaком и близок. Этим жe зaнимaлcя нa cвоём paбочeм мecтe в дpyгой компaнии. Он cкaзaл, что eщё нeмного людeй поcобeceдyeт и вepнётcя c тexничecким зaдaниeм. Бyдeт это в концe нeдeли. Что жe, бyдeм ждaть. +> +> А покa peзюмиpyя: xотят paботaть в cepyю, зaнимaютcя cтpaнными дeлaми, вpодe бы и "гaлepы", a вpодe бы и нe cовceм. Хотят много зa нe тaк много дeнeг. +> +> B концe нeдeли, чacов в пять вeчepa пpилeтaeт в Skype тexничecкaя чacть cобeceдовaния. А я только пpоcнyлcя. Пpочитaл. Уточнил пapy момeнтов и зa полчaca cдeлaл, пpeдоcтaвив peзyльтaт. Ещё пpивёл пpимeчaниe того, что и почeмy нe нaдо дeлaть тaк, кaк нaпиcaно (ycтapeло). Он yдивилcя. Почитaл и cкaзaл, что оно тaк и ecть. Bcё понpaвилоcь. Быcтpо и чётко. +> +> B понeдeльник под вeчep нaчaлcя очepeдной этaп cобeceдовaния, кyдa добaвили и то ли диpeктоpa, то ли тexничecкого диpeктоpa, котоpый cxодy: +> +> - Я тaк понимaю, что зa -20% вы paботaть нe cтaнeтe? +> - Бeзycловно, нeт. +> +> К моeмy yдивлeнию диaлог к полyдню cлeдyющeго дня ожил. +> +> - Окeй. Допycтим бyдeт по вaшeмy (cпacибо зa одолжeниe). Bы в кypce, что y нac иcпользyeтcя keylogger? +> - Нeт, нe в кypce, a зaчeм? +> - Мы нa оcновe eго оцeнивaeм зaгpyжeнноcть чeловeкa. Bот, к пpимepy, чeловeк, котоpый вac cобeceдовaл имeeт 65% и это нeплоxой peзyльтaт (нy-нy, paccкaзывaйтe! Это пpоcто пипeц!) +> - Допycтим тaк, но кaк нaжaтиe нa клaвиши коppeлиpyют c peзyльтaтом? Baм нyжны нaжaтия или peзyльтaт в cpок? +> +> B отвeт ycлышaл доcтaточно cтpaнный отвeт о том, что тaк они могyт контpолиpовaть зaгpyзкy, болee того, что это пpeкpacно дepжит "в тонyce" cотpyдников и нe позволяeт им paccлaбитьcя. +> +> - А вaм cкaзaл, что y нac ecть Полигpaф? +> - Зaчeм он мнe? Я cобeceдyюcь нa нeмaтepиaльно отвeтcтвeннyю должноcть. +> - Для того, чтобы вaм cпокойнee cпaть. И нaм, что вы y нac ничeго нe yкpaли. +> - Поcтойтe, полигpaф до пpиёмa paботы или поcлe? +> - Пepeд кaждой зapплaтой! +> +> Мой eблeт пepeкоcило, пepeд глaзaми пpолeтeлa cовa c филином в извecтном нaпpaвлeнии. Оп-пa, a c тaкими людьми можно общaтьcя иcключитeльно инaчe. +> +> Он eщё мнe долго пиcaл кaкyю-то дичь пpо то, что это позволит знaть мeньшe и дeлaть большe, что тaким обpaзом обepeгaют cотpyдников от нeнyжной инфоpмaции и пpочeго. Мнe жe это видeлоcь нe болee кaк попыткa зacтaвить paботaть зa eдy cпeциaлиcтa и поcтоянно eго доить. Учитывaя, что это IT-контоpa, то кaкой-то лютый пиceц y ниx внyтpи. И cкоpee вceго компaния вполнe ceбe "кpyпнaя", cоcтоящaя из можeт чeловeк 15 и caмодypa диpeктоpa. +> +> Пpочитaв вcё то, что мнe нaпиcaли, пpeдложил им cвои ycловия: бeз офоpмлeния в штaт, чepeз ИП по ГПХ. Сyммы бyдyт дpyгими, тaк кaк тpeбyeтcя пpовecти ayдит, поcтapaтьcя выpaботaть пpaвилa внyтpeннeй бeзопacноcти инфоpмaции, aвтомaтизиpовaть то, что до cиx поp y ниx тaк и нe aвтомaтизиpовaно. Пpeдвapитeльно оцeнил +150% от зaпpaшивaeмой компeнcaции, тaк кaк это ypовeнь вышe ypовня пpоcто IT-cпeциaлиcтa, a cкоpee мeнeджepa или диpeктоpa по IT. +> +> Тaк я и нe ycтpоилcя paботaть в этy большyю компaнию. Считaю, что ничeго нe потepял пpи этом и дaжe cэкономил ceбe нepвы и cилы. + +>> Источник: [Just Story](https://vk.com/public106084026) + +С дополнением лучше? Именно для этого оно и создано. + +С помощью встроенного словаря такое не сделать, нужен контекст, где используется та или иная буква. diff --git a/addon/globalPlugins/textnormalizer/textnormalizer.py b/addon/globalPlugins/textnormalizer/textnormalizer.py index 509662d..0afbda9 100644 --- a/addon/globalPlugins/textnormalizer/textnormalizer.py +++ b/addon/globalPlugins/textnormalizer/textnormalizer.py @@ -6,6 +6,13 @@ """ import re + +def replace(old, new, str, caseinsentive = False): + if caseinsentive: + return str.replace(old, new) + else: + return re.sub(re.escape(old), new, str, flags=re.IGNORECASE) + class TextNormalizer(): """Translates the letters of the alphabet mixed in normal""" @@ -22,10 +29,13 @@ def CheckWord(self, word): """ newword = word + # если есть цифры - не меняем + if re.match("[24579]", newword): + return newword OnlyRu = "БбвГгДдЁёЖжЗзИиЙйЛлмнПптУФфЦцЧчШшЩщЪъЫыЬьЭэЮюЯя" OnlyEn = "DdFfGghIiJjLlNQqRrSstUVvWwYZz" - Rus = "АаВЕеКкМНОоРрСсТуХхЗО1тиа@пьб" - Eng = "AaBEeKkMHOoPpCcTyXx30imu@anb6" + Rus = "АаВЕеКкМНОоРрСсТуХхЗО1тиапьб" + Eng = "AaBEeKkMHOoPpCcTyXx30imu@nb6" IsRu100percent = False for c1 in word: @@ -80,9 +90,28 @@ def CheckText(self, text): newWord = self.CheckWord(word) if self.Changes: newText = newText.replace(word, newWord) + Rus = ["с", "у", "нет", "ее"] + Eng = ["c", "y", "heт", "ee"] if text != newText: - newText = newText.replace("Y", "У").replace("B", "В") - newText = newText.replace("C", "С").replace("мрз", "mp3").replace("HET", "НЕТ") + newText = newText.replace("B", "В").replace("H", "Н") + for i in range(0, len(Rus)): + newText = replace(Eng[i], Rus[i], newText, False) + patterns = [ + "[cс][kк][oо][pр][еe]", + "[kк][yу][pр][сc]", + "[kк][yу][pр][сc][eе]", + "[s][kк][yу][pр][eе]", + r"[a]([a-zа-яё\s,:.?!]+)" + ] + replaces = [ + "скорее", + "курс", + "курсе", + "skype", + r"а\1" + ] + for i in range(0, len(patterns)): + newText = re.sub(patterns[i], replaces[i], newText, flags=re.IGNORECASE) return newText def main(): diff --git a/buildVars.py b/buildVars.py index 66cb1d4..c2a95a2 100644 --- a/buildVars.py +++ b/buildVars.py @@ -19,7 +19,7 @@ # Translators: Long description to be shown for this add-on on add-on information from add-ons manager "addon_description": _("""Translates the letters of the alphabet mixed in normal."""), # version - "addon_version": "2021.02.02", + "addon_version": "2021.02.03", # Author(s) "addon_author": u"alekssamos ", # URL for the add-on documentation support