예제 #1
0
 def __init__(self, sbs1msg):
     logging.info("%s appeared" % sbs1msg["icao24"])
     self.__icao24 = sbs1msg["icao24"]
     self.__loggedDate = datetime.utcnow()  # sbs1msg["loggedDate"]
     self.__callsign = sbs1msg["callsign"]
     self.__altitude = sbs1msg["altitude"]
     self.__altitudeTime = datetime.utcnow()
     self.__groundSpeed = sbs1msg["groundSpeed"]
     self.__track = sbs1msg["track"]
     self.__lat = sbs1msg["lat"]
     self.__lon = sbs1msg["lon"]
     self.__latLonTime = datetime.utcnow()
     self.__verticalRate = sbs1msg["verticalRate"]
     self.__operator = None
     self.__registration = None
     self.__type = None
     self.__updated = True
     if args.pdb_host:
         plane = planedb.lookup_aircraft(self.__icao24)
         if plane:
             self.__registration = plane["registration"]
             self.__type = plane["manufacturer"] + " " + plane["model"]
             self.__operator = plane["operator"]
             self.__image_url = plane["image"]
             if self.__image_url is None:
                 self.__image_url = utils.image_search(self.__icao24, self.__operator, self.__type, self.__registration)
         else:
             if not self.__planedb_nagged:
                 self.__planedb_nagged = True
                 logging.error("icao24 %s not found in the database" % (self.__icao24))
예제 #2
0
    def post(self):        
        
		#print '_______________', self.request.files
		body = self.request.files['recording'][0]['body']
		query_type = self.get_argument("mode")

		filename = str(int(random.random()*1000000))
		file = open('tempfiles/' + filename + '.wav', 'w')
		file.write(body)
		file.close()

		command = '/opt/sox-14.4.0/sox tempfiles/'+ filename + '.wav ' + 'tempfiles/' + filename + '.flac'
	#	print 'command: ', command

		r = envoy.run(command)
		if r.status_code != 0:
			print 'bad status code ', r.status_code


		url = 'http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium'
		headers={'Content-Type': 'audio/x-flac; rate=16000'}
		r = requests.post(url, 
				files={'eiffel.flac' : open('tempfiles/' + filename + '.flac' , 'rb')},
					headers=headers)

		#print r.json
		
		os.remove('tempfiles/' + filename + '.wav')
		os.remove('tempfiles/' + filename + '.flac')

		if r.status_code != 200 or r.json is None or not r.json['hypotheses']:
			self.write(json.dumps({'status': 'failed'}))
			return
		utterance = r.json['hypotheses'][0]['utterance']
		print utterance
		keyword = NaiveWordSelector.topKeyword(utterance.split(' '))
		print keyword

		query_types = ["Image","Web","Wikipedia","Analytical"]
		if query_type not in query_types:
		    query_type = query_types[random.randint(0,len(query_types))]

		if query_type=="Image":
		    background_size = "contain"
		    image = image_search(keyword)		
		    self.write(loader.load("image.html").generate(image_url=image['url'],background_size=background_size,query_type=query_type))
		elif query_type=="Web":
		    url = lucky_search(keyword)
		    self.write(loader.load("redirect.html").generate(url=url,query_type=query_type))
		elif query_type=="Wikipedia":
		    url = wikipedia_search(keyword)
		    self.write(loader.load("redirect.html").generate(url=url,query_type=query_type))
		elif query_type=="Analytical":
		    results,image_url,desc = wolframalpha_search(keyword)
		    self.write(loader.load("wolframalpha.html").generate(results=results,keyword=keyword,image_url=image_url,desc=desc,query_type=query_type))
예제 #3
0
 def get(self):
     keyword = self.get_argument("keyword")
     image = image_search(keyword)
     background_size = "contain"
     self.write(loader.load("image.html").generate(image_url=image['url'],background_size=background_size,query_type=None))