예제 #1
0
    def get(self):
        toTranslate = self.get_argument('q')
        markUnknown = self.get_argument('markUnknown', default='yes') in ['yes', 'true', '1']

        try:
            l1, l2 = map(toAlpha3Code, self.get_argument('langpair').split('|'))
        except ValueError:
            self.send_error(400, explanation='That pair is invalid, use e.g. eng|spa')

            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after-before, tInfo, key, len(toTranslate))

            return

        def handleTranslation():
            if self.get_status() != 200:
                self.send_error(self.get_status())
                return
            if hasattr(self, 'res'):
                self.noteUnknownTokens('-'.join((l1, l2)), self.res)
                self.res = self.res if markUnknown else self.stripUnknownMarks(self.res)
                self.sendResponse({
                    'responseData': {'translatedText': self.res},
                   'responseDetails': None,
                   'responseStatus': 200
                })
                return
            if hasattr(self, 'redir'):
                self.redirect(self.redir)
                return
            logging.error('handleTranslation reached a thought-to-be-unreachable line')
            self.send_error(500)

        if '%s-%s' % (l1, l2) in self.pairs:
            self.start_worker(handleTranslation, toTranslate, l1, l2)
            self.notePairUsage((l1, l2))
            self.cleanPairs()
        else:
            self.send_error(400, explanation='That pair is not installed')
            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after-before, tInfo, key, len(toTranslate))
예제 #2
0
    def key_down(self, evt):
        self.editor.key_down(evt, 1, 1)

        keyname = keys.getKey(evt)
        if keyname == config.config.get("Keys", "Up"):
            self.nudge(Vector(0, 1, 0))
        if keyname == config.config.get("Keys", "Down"):
            self.nudge(Vector(0, -1, 0))

        Z = self.get_root().mcedit.editor.mainViewport.cameraVector  # xxx mouthful
        absZ = map(abs, Z)
        if absZ[0] < absZ[2]:
            forward = (0, 0, (-1 if Z[2] < 0 else 1))
        else:
            forward = ((-1 if Z[0] < 0 else 1), 0, 0)

        back = map(int.__neg__, forward)
        left = forward[2], forward[1], -forward[0]
        right = map(int.__neg__, left)

        if keyname == config.config.get("Keys", "Forward"):
            self.nudge(Vector(*forward))
        if keyname == config.config.get("Keys", "Back"):
            self.nudge(Vector(*back))
        if keyname == config.config.get("Keys", "Left"):
            self.nudge(Vector(*left))
        if keyname == config.config.get("Keys", "Right"):
            self.nudge(Vector(*right))
예제 #3
0
 def logAfterTranslation(self, before, toTranslate):
     if self.scaleMtLogs:
         after = datetime.now()
         tInfo = TranslationInfo(self)
         key = getKey(tInfo.key)
         scaleMtLog(self.get_status(), after - before, tInfo, key,
                    len(toTranslate))
예제 #4
0
    def get(self):
        toTranslate = self.get_argument('q')
        markUnknown = self.get_argument('markUnknown',
                                        default='yes') in ['yes', 'true', '1']

        try:
            l1, l2 = map(toAlpha3Code,
                         self.get_argument('langpair').split('|'))
        except ValueError:
            self.send_error(
                400, explanation='That pair is invalid, use e.g. eng|spa')
            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after - before, tInfo, key, len(toTranslate))
            return

        if '%s-%s' % (l1, l2) in self.pairs:
            before = self.logBeforeTranslation()
            pipeline = self.getPipeline(l1, l2)
            self.notePairUsage((l1, l2))
            translated = yield pipeline.translate(toTranslate)
            self.logAfterTranslation(before, toTranslate)
            self.sendResponse({
                'responseData': {
                    'translatedText':
                    self.maybeStripMarks(markUnknown, l1, l2, translated)
                },
                'responseDetails': None,
                'responseStatus': 200
            })
            self.cleanPairs()
        else:
            self.send_error(400, explanation='That pair is not installed')
            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after - before, tInfo, key, len(toTranslate))
예제 #5
0
    def key_down(self, evt):
        keyname = keys.getKey(evt)
        if keyname == "Up" and self.selectedBlockIndex > 0:
            self.selectedBlockIndex -= 1
            self.tableview.rows.scroll_to_item(self.selectedBlockIndex)
            self.blockButton.blockInfo = self.blockInfo

        elif keyname == "Down" and self.selectedBlockIndex < len(self.matchingBlocks):
            self.selectedBlockIndex += 1
            self.tableview.rows.scroll_to_item(self.selectedBlockIndex)
            self.blockButton.blockInfo = self.blockInfo
예제 #6
0
def NYTCongressBillQuery(congressNumber, billID):
    version = "v3"
    url = "http://api.nytimes.com/svc/politics/"
    url = url + version + "/us/legislative/congress/"
    url = url + congressNumber + "/bills/" + billID + ".json?"
    url = url + "api-key=" + keys.getKey('nytcongress')
    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    f = opener.open(req)
    jsonObj = simplejson.load(f)
    return jsonObj
예제 #7
0
def NYTCongressBillQuery(congressNumber, billID):
  version = "v3"
  url = "http://api.nytimes.com/svc/politics/"
  url = url + version + "/us/legislative/congress/"
  url = url + congressNumber + "/bills/" + billID +".json?"
  url = url + "api-key=" + keys.getKey('nytcongress')
  req = urllib2.Request(url)
  opener = urllib2.build_opener()
  f = opener.open(req)
  jsonObj = simplejson.load(f)
  return jsonObj
예제 #8
0
    def logAfterTranslation(self, before, length):
        after = datetime.now()
        if self.scaleMtLogs:
            tInfo = TranslationInfo(self)
            key = getKey(tInfo.key)
            scaleMtLog(self.get_status(), after-before, tInfo, key, length)

        if self.get_status() == 200:
            oldest = self.stats['timing'][0][0] if self.stats['timing'] else datetime.now()
            if datetime.now() - oldest > self.STAT_PERIOD_MAX_AGE:
                self.stats['timing'].pop(0)
            self.stats['timing'].append(
                (before, after, length))
예제 #9
0
    def logAfterTranslation(self, before, length):
        after = datetime.now()
        if self.scaleMtLogs:
            tInfo = TranslationInfo(self)
            key = getKey(tInfo.key)
            scaleMtLog(self.get_status(), after-before, tInfo, key, length)

        if self.get_status() == 200:
            oldest = self.stats['timing'][0][0] if self.stats['timing'] else datetime.now()
            if datetime.now() - oldest > self.STAT_PERIOD_MAX_AGE:
                self.stats['timing'].pop(0)
            self.stats['timing'].append(
                (before, after, length))
예제 #10
0
    def get(self):
        toTranslate = self.get_argument('q')
        markUnknown = self.get_argument('markUnknown', default='yes') in ['yes', 'true', '1']

        try:
            l1, l2 = map(toAlpha3Code, self.get_argument('langpair').split('|'))
        except ValueError:
            self.send_error(400, explanation='That pair is invalid, use e.g. eng|spa')
            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after-before, tInfo, key, len(toTranslate))
            return

        if '%s-%s' % (l1, l2) in self.pairs:
            before = self.logBeforeTranslation()
            pipeline = self.getPipeline(l1, l2)
            self.notePairUsage((l1, l2))
            translated = yield pipeline.translate(toTranslate)
            self.logAfterTranslation(before, toTranslate)
            self.sendResponse({
                'responseData': {
                    'translatedText': self.maybeStripMarks(markUnknown, l1, l2, translated)
                },
                'responseDetails': None,
                'responseStatus': 200
            })
            self.cleanPairs()
        else:
            self.send_error(400, explanation='That pair is not installed')
            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after-before, tInfo, key, len(toTranslate))
예제 #11
0
    def get(self):

        try:
            l1, l2 = self.get_argument('langpair').split('|')
        except ValueError:
            self.send_error(
                400, explanation='That pair is invalid, use e.g. eng|spa')
        if '%s-%s' % (l1, l2) in self.pairs:
            #            mode = "%s-%s" % (l1, l2)

            url = self.get_argument('url')
            data = urllib.request.urlopen(url).read()
            if chardet:
                encoding = chardet.detect(data)["encoding"]
            else:
                encoding = 'utf-8'
            text = data.decode(encoding)
            text = text.replace(
                'href="/',
                'href="{uri.scheme}://{uri.netloc}/'.format(uri=urlparse(url)))
            text = re.sub(
                r'a([^>]+)href=[\'"]?([^\'" >]+)',
                'a \\1 href="#" onclick=\'window.parent.translateLink("\\2");\'',
                text)

            pipeline = self.getPipeline(l1, l2)
            translated = yield pipeline.translate(text, nosplit=True)
            self.sendResponse({
                'responseData': {
                    'translatedPage': translated
                },
                'responseDetails': None,
                'responseStatus': 200
            })
            self.cleanPairs()
        else:
            self.send_error(400, explanation='That pair is not installed')
            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after - before, tInfo, key, len(toTranslate))
예제 #12
0
    def get(self):

        try:
            l1, l2 = self.get_argument('langpair').split('|')
        except ValueError:
            self.send_error(400, explanation='That pair is invalid, use e.g. eng|spa')
        if '%s-%s' % (l1, l2) in self.pairs:
#            mode = "%s-%s" % (l1, l2)

            url = self.get_argument('url')
            data = urllib.request.urlopen(url).read()
            if chardet:
                encoding = chardet.detect(data)["encoding"]
            else:
                encoding = 'utf-8'
            text = data.decode(encoding)   
            text = text.replace('href="/',  'href="{uri.scheme}://{uri.netloc}/'.format(uri=urlparse(url)))
            text = re.sub(r'a([^>]+)href=[\'"]?([^\'" >]+)', 'a \\1 href="#" onclick=\'window.parent.translateLink("\\2");\'', text)

            pipeline = self.getPipeline(l1, l2)
            translated = yield pipeline.translate(text, nosplit=True)
            self.sendResponse({
                'responseData': {
                    'translatedPage': translated
                },
                'responseDetails': None,
                'responseStatus': 200
            })
            self.cleanPairs()
        else:
            self.send_error(400, explanation='That pair is not installed')
            if self.scaleMtLogs:
                before = datetime.now()
                tInfo = TranslationInfo(self)
                key = getKey(tInfo.key)
                after = datetime.now()
                scaleMtLog(400, after-before, tInfo, key, len(toTranslate))
예제 #13
0
import keys
import dbop
from klout import *

# Set the Klout auth key
api = Klout(keys.getKey('Klout', 'key'),secure=True)

# Grab scores for each klout user currently in sql. Sets -1 for
# scores that are unavailable
def updateScores():
    users = dbop.getUsersForKloutUpdate()
    for user in users:
        try:
            print user[1]
            id = api.identity.klout(screenName=user[1]).get('id')
            score = api.user.score(kloutId=id).get('score')
            dbop.updateKloutScore(user[0], score)
        # TODO: expand the error handling a bit to register a difference between
        # unavailable klout score and other problems such as auth failure or
        # service interruption
        except:
            dbop.updateKloutScore(user[0], -1)
예제 #14
0
 def logAfterTranslation(self, before, toTranslate):
     if self.scaleMtLogs:
         after = datetime.now()
         tInfo = TranslationInfo(self)
         key = getKey(tInfo.key)
         scaleMtLog(self.get_status(), after-before, tInfo, key, len(toTranslate))
예제 #15
0
 def keyUp(self, evt):
     keyname = evt.dict.get('keyname', None) or keys.getKey(evt)
     if keyname == config.config.get('Keys', 'Pick Block'):
         self.pickBlockKey = 0
예제 #16
0
import dbop
import keys
import tweepy
import datetime
import time

# Grab config
ckey = keys.getKey('Twitter','consumer_key')
csecret = keys.getKey('Twitter','consumer_secret')
akey = keys.getKey('Twitter','access_key')
asecret = keys.getKey('Twitter','access_secret')

list_slug = keys.getKey('Twitter', 'list_slug')
list_owner = keys.getKey('Twitter', 'list_owner')
tweets_per_user = keys.getKey('Twitter','tweets_per_user')
include_rts = bool(keys.getKey('Twitter', 'include_rts'))

# Set authentication info for twitter OAuth
auth = tweepy.OAuthHandler(ckey, csecret)
auth.set_access_token(akey, asecret)

# Grab all members from the twitter team list, and the configurable quantity of
# tweets from each. Add the users and tweets to the db as we get them.

# Note: 80 tweets * 1250 users = 100k tweets. 90-100 tweets each should account
# for users with lower usage
def getTweets():
    timeout = None
    api = tweepy.API(auth)
    cursor = tweepy.Cursor(api.list_members, list_owner, list_slug)
    timeout = datetime.datetime.now() + datetime.timedelta(minutes = 15)
예제 #17
0
import simplejson

#serverside libraries setup
cmd_subfolder = os.path.realpath(
    os.path.abspath(
        os.path.join(
            os.path.split(inspect.getfile(inspect.currentframe()))[0],
            "libs/python")))
if cmd_subfolder not in sys.path:
    sys.path.insert(0, cmd_subfolder)

import keys
import sunlight
import RTC

RTC.apikey = sunlight.config.API_KEY = keys.getKey('sunlight')

#def RTSCongressQuery(queryType, query):
#  url = "http://api.realtimecongress.org/api/v1/"
#  req = urllib2.Request(url + queryType + ".json?" + query + "&apikey=" + keys.getKeys('sunlight'))
#  opener = urllib2.build_opener()
#  f = opener.open(req)
#  jsonObj = simplejson.load(f)
#  return jsonObj


def NYTCongressBillQuery(congressNumber, billID):
    version = "v3"
    url = "http://api.nytimes.com/svc/politics/"
    url = url + version + "/us/legislative/congress/"
    url = url + congressNumber + "/bills/" + billID + ".json?"
예제 #18
0
import urllib2
import simplejson


#serverside libraries setup
cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"libs/python")))
if cmd_subfolder not in sys.path:
  sys.path.insert(0, cmd_subfolder)



import keys
import sunlight
import RTC

RTC.apikey = sunlight.config.API_KEY = keys.getKey('sunlight')













#def RTSCongressQuery(queryType, query):
#  url = "http://api.realtimecongress.org/api/v1/"
예제 #19
0
import MySQLdb
import keys

# Get SQL db config
host = keys.getKey('SQL','host')
user = keys.getKey('SQL','user')
passwd = keys.getKey('SQL','passwd')
dbname = keys.getKey('SQL','dbname')

# Open the db connection, open a new cursor object. Commits must be made manually
# by calling commit() below.
db = MySQLdb.connect(host=host,user=user,passwd=passwd,db=dbname)
db.autocommit(False)
cursor = db.cursor()

# Adds a twitter user to the sql db. Requires id and screen_name attributes
# klout score defaults to -1 so we know to update it later
def addUser(user):
    sql = "INSERT IGNORE INTO users (id,screen_name,klout_score) VALUES (%s,%s,%s)"
    cursor.execute(sql,(user.id,user.screen_name,-1))

# Get all id and screen_names with previously unset klout scores from the database.
# Used for updating klout score
def getUsersForKloutUpdate():
    cursor.execute("SELECT id,screen_name FROM users WHERE klout_score = -1")
    return cursor.fetchall()

# Add tweet content to sql. Includes user id, tweet id, tweet text, retweet_count
# and retweeted bool from the tweepy object. Retweeted bool is currently broken,
# only returns false
def addTweet(content):