Mercurial > libervia-backend
comparison sat/plugins/plugin_exp_lang_detect.py @ 2624:56f94936df1e
code style reformatting using black
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 27 Jun 2018 20:14:46 +0200 (2018-06-27) |
parents | 26edcf3a30eb |
children | 003b8b4b56a7 |
comparison
equal
deleted
inserted
replaced
2623:49533de4540b | 2624:56f94936df1e |
---|---|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 | 19 |
20 from sat.core.i18n import _, D_ | 20 from sat.core.i18n import _, D_ |
21 from sat.core.constants import Const as C | 21 from sat.core.constants import Const as C |
22 from sat.core.log import getLogger | 22 from sat.core.log import getLogger |
23 | |
23 log = getLogger(__name__) | 24 log = getLogger(__name__) |
24 from sat.core import exceptions | 25 from sat.core import exceptions |
25 | 26 |
26 try: | 27 try: |
27 from langid.langid import LanguageIdentifier, model | 28 from langid.langid import LanguageIdentifier, model |
28 except ImportError: | 29 except ImportError: |
29 raise exceptions.MissingModule(u'Missing module langid, please download/install it with "pip install langid")') | 30 raise exceptions.MissingModule( |
31 u'Missing module langid, please download/install it with "pip install langid")' | |
32 ) | |
30 | 33 |
31 identifier = LanguageIdentifier.from_modelstring(model, norm_probs=False) | 34 identifier = LanguageIdentifier.from_modelstring(model, norm_probs=False) |
32 | 35 |
33 | 36 |
34 PLUGIN_INFO = { | 37 PLUGIN_INFO = { |
37 C.PI_TYPE: "EXP", | 40 C.PI_TYPE: "EXP", |
38 C.PI_PROTOCOLS: [], | 41 C.PI_PROTOCOLS: [], |
39 C.PI_DEPENDENCIES: [], | 42 C.PI_DEPENDENCIES: [], |
40 C.PI_MAIN: "LangDetect", | 43 C.PI_MAIN: "LangDetect", |
41 C.PI_HANDLER: "no", | 44 C.PI_HANDLER: "no", |
42 C.PI_DESCRIPTION: _("""Detect and set message language when unknown""") | 45 C.PI_DESCRIPTION: _("""Detect and set message language when unknown"""), |
43 } | 46 } |
44 | 47 |
45 CATEGORY = D_(u"Misc") | 48 CATEGORY = D_(u"Misc") |
46 NAME = u"lang_detect" | 49 NAME = u"lang_detect" |
47 LABEL = D_(u"language detection") | 50 LABEL = D_(u"language detection") |
51 <category name="{category_name}"> | 54 <category name="{category_name}"> |
52 <param name="{name}" label="{label}" type="bool" value="true" /> | 55 <param name="{name}" label="{label}" type="bool" value="true" /> |
53 </category> | 56 </category> |
54 </individual> | 57 </individual> |
55 </params> | 58 </params> |
56 """.format(category_name=CATEGORY, | 59 """.format( |
57 name=NAME, | 60 category_name=CATEGORY, name=NAME, label=_(LABEL) |
58 label=_(LABEL), | 61 ) |
59 ) | |
60 | 62 |
61 | 63 |
62 class LangDetect(object): | 64 class LangDetect(object): |
63 | |
64 def __init__(self, host): | 65 def __init__(self, host): |
65 log.info(_(u"Language detection plugin initialization")) | 66 log.info(_(u"Language detection plugin initialization")) |
66 self.host = host | 67 self.host = host |
67 host.memory.updateParams(PARAMS) | 68 host.memory.updateParams(PARAMS) |
68 host.trigger.add("MessageReceived", self.MessageReceivedTrigger) | 69 host.trigger.add("MessageReceived", self.MessageReceivedTrigger) |
69 host.trigger.add("sendMessage", self.MessageSendTrigger) | 70 host.trigger.add("sendMessage", self.MessageSendTrigger) |
70 | 71 |
71 def addLanguage(self, mess_data): | 72 def addLanguage(self, mess_data): |
72 message = mess_data['message'] | 73 message = mess_data["message"] |
73 if len(message) == 1 and message.keys()[0] == '': | 74 if len(message) == 1 and message.keys()[0] == "": |
74 msg = message.values()[0] | 75 msg = message.values()[0] |
75 lang = identifier.classify(msg)[0] | 76 lang = identifier.classify(msg)[0] |
76 mess_data["message"] = {lang: msg} | 77 mess_data["message"] = {lang: msg} |
77 return mess_data | 78 return mess_data |
78 | 79 |
79 def MessageReceivedTrigger(self, client, message_elt, post_treat): | 80 def MessageReceivedTrigger(self, client, message_elt, post_treat): |
80 """ Check if source is linked and repeat message, else do nothing """ | 81 """ Check if source is linked and repeat message, else do nothing """ |
81 | 82 |
82 lang_detect = self.host.memory.getParamA(NAME, CATEGORY, profile_key=client.profile) | 83 lang_detect = self.host.memory.getParamA( |
84 NAME, CATEGORY, profile_key=client.profile | |
85 ) | |
83 if lang_detect: | 86 if lang_detect: |
84 post_treat.addCallback(self.addLanguage) | 87 post_treat.addCallback(self.addLanguage) |
85 return True | 88 return True |
86 | 89 |
87 def MessageSendTrigger(self, client, data, pre_xml_treatments, post_xml_treatments): | 90 def MessageSendTrigger(self, client, data, pre_xml_treatments, post_xml_treatments): |
88 lang_detect = self.host.memory.getParamA(NAME, CATEGORY, profile_key=client.profile) | 91 lang_detect = self.host.memory.getParamA( |
92 NAME, CATEGORY, profile_key=client.profile | |
93 ) | |
89 if lang_detect: | 94 if lang_detect: |
90 self.addLanguage(data) | 95 self.addLanguage(data) |
91 return True | 96 return True |