#!/usr/bin/env python # -*- coding: iso8859-1 -*- # # Fulhack(tm) for KTH:s Lexin # # Erik Waling import httplib import string import re import sys class Lexin: connection = None allowedLang = ['sve', 'eng', 'bos', 'fin', 'gre', 'kro', 'rys', 'spa', 'tur'] fromLang = '' toLang = '' def __init__(self, url): self.connection = httplib.HTTPConnection(url) def setToLanguage(self, lang): if lang in self.allowedLang: self.toLang = lang; return True return False def setFromLanguage(self, lang): if lang in self.allowedLang: self.fromLang = lang; return True return False def translate(self, word): if (len(self.toLang) == 0 or len(self.fromLang) == 0): return 'Both to and from language must be set.' if not ((self.toLang == self.allowedLang[0] or self.fromLang == self.allowedLang[0]) and not (self.toLang == self.allowedLang[0] and self.fromLang == self.allowedLang[0])): return 'One of the languages must be %s.' %self.allowedLang[0] if self.toLang == self.allowedLang[0]: word = ':' + word lang = self.fromLang else: lang = self.toLang word = word.replace(' ', '%20') self.connection.request('GET', '/cgi-bin/sve-%s?%s' %(lang, word)) r = self.connection.getresponse() if not (r.status == 200): return 'Error retrieving data.' return self.__parse(r.read()) def __parse(self, data): data = data.splitlines() reg = re.compile('^(
', ' ') match = match.replace('
', '\n') match = match.replace('', '[') match = match.replace('', ']') match = match.replace('
', ': ') match = match.replace('|', '/') match = match.replace('
  • ', ' ') match = match.replace('', '') match = match.replace('', '') match = match.replace('

    ', '') match = match.replace('<', '<') match = match.replace('>', '>') match = match.replace('

    ', '------------------------------------------------------------') return match def close(self): self.connection.close() def langHelp(): print '\nEither from or to language MUST be \'sve\'\n' print 'sve - Swedish eng - English bos - Bosnian' print 'fin - Finnish gre - Greek kro - Croatian' print 'rys - Russian spa - Spanish tur - Turkish' if __name__ == '__main__': if len(sys.argv) < 4: print 'Usage: lexin [word ...]' langHelp() sys.exit(1) lexin = Lexin('lexikon.nada.kth.se') if not (lexin.setFromLanguage(sys.argv[1])): print 'Invalid language: %s' %sys.argv[1] langHelp() sys.exit(1) if not (lexin.setToLanguage(sys.argv[2])): print 'Invalid language: %s' %sys.argv[2] langHelp() sys.exit(1) for i in range(3, len(sys.argv)): print lexin.translate(sys.argv[i]) lexin.close()