From a4b568b20425df4724b659826abd87e01fee656a Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Wed, 25 Jul 2012 14:39:05 +0200 Subject: [PATCH] add module ebonics --- modules/ebonics/__init__.py | 23 ++++++++++++++ modules/ebonics/backend.py | 60 +++++++++++++++++++++++++++++++++++++ modules/ebonics/test.py | 31 +++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 modules/ebonics/__init__.py create mode 100644 modules/ebonics/backend.py create mode 100644 modules/ebonics/test.py diff --git a/modules/ebonics/__init__.py b/modules/ebonics/__init__.py new file mode 100644 index 00000000..12efd3bf --- /dev/null +++ b/modules/ebonics/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2012 Romain Bignon +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + +from .backend import EbonicsBackend + + +__all__ = ['EbonicsBackend'] diff --git a/modules/ebonics/backend.py b/modules/ebonics/backend.py new file mode 100644 index 00000000..8271c201 --- /dev/null +++ b/modules/ebonics/backend.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2012 Romain Bignon +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + + +import urllib + +from weboob.capabilities.translate import ICapTranslate, Translation, TranslationFail, LanguageNotSupported +from weboob.tools.backend import BaseBackend +from weboob.tools.browser import StandardBrowser + + +__all__ = ['EbonicsBackend'] + + +class EbonicsBackend(BaseBackend, ICapTranslate): + NAME = 'ebonics' + MAINTAINER = 'Romain Bignon' + EMAIL = 'romain@weboob.org' + VERSION = '0.d' + LICENSE = 'AGPLv3+' + DESCRIPTION = u'English to Ebonics translation service' + BROWSER = StandardBrowser + + def translate(self, lan_from, lan_to, text): + if lan_from != 'English' or lan_to != 'Nigger!': + raise LanguageNotSupported() + + with self.browser: + data = {'English': text.encode('utf-8')} + doc = self.browser.location('http://joel.net/EBONICS/Translator', urllib.urlencode(data)) + try: + text = doc.getroot().cssselect('div.translateform div.bubble1 div.bubblemid')[0].text + except IndexError: + raise TranslationFail() + + if text is None: + raise TranslationFail() + + translation = Translation(0) + translation.lang_src = unicode(lan_from) + translation.lang_dst = unicode(lan_to) + translation.text = unicode(text).strip() + + return translation diff --git a/modules/ebonics/test.py b/modules/ebonics/test.py new file mode 100644 index 00000000..4ff9e07b --- /dev/null +++ b/modules/ebonics/test.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2012 Romain Bignon +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + + +from weboob.tools.test import BackendTest + + +__all__ = ['EbonicsTest'] + + +class EbonicsTest(BackendTest): + BACKEND = 'ebonics' + + def test_translate(self): + self.backend.translate('English', 'Nigger!', 'I like penis.')