def getImage(searchTerm): searchTerm = "%s+logo" % (searchTerm) log.debug("Searching for %s" % searchTerm) try: imageUrls = bing.imageSearch(searchTerm, {"minWidth":400, "minHeight":400}) except Exception, e: log.error("Bing exception error: %s" % (e)) return None
def image_search(icao24: str, operator: str, type: str, registration: str) -> str: """Search Bing for plane images. If found, update planedb with URL Arguments: icao24 {str} -- ICAO24 designation operator {str} -- Operator of aircraft type {str} -- Aircraft type registration {str} -- Aircraft registration Returns: str -- URL of image, hopefully @todo: don't search for Bluebird Nordic Boeing 737 4Q8SF TF-BBM but rather "Bluebird Nordic" "Boeing 737" "TF-BBM" or "Bluebird Nordic" "TF-BBM" or "Bluebird Nordic" Boeing "TF-BBM" """ img_url = None # Bing sometimes refuses to search for "Scandinavian Airlines System" :-/ op = operator.replace("Scandinavian Airlines System", "SAS") searchTerm = "%s %s %s" % (op, type, registration) logging.debug("Searching for %s", searchTerm) imageUrls = bing.imageSearch(searchTerm) if not imageUrls: imageUrls = bing.imageSearch(registration) if imageUrls: img_url = imageUrls[0] logging.info("Added image %s for %s", img_url, icao24) # for k in plane: # logging.info("%20s : %s" % (k, plane[k])) if not planedb.update_aircraft(icao24, {'image': img_url}): logging.error("Failed to update PlaneDB image for %s" % (icao24)) else: logging.error( "Image search came up short for '%s', blacklisted (%s)?" % (searchTerm, icao24)) return img_url
def getImage(searchTerm): searchTerm = "%s+logo" % (searchTerm) log.debug("Searching for %s" % searchTerm) try: imageUrls = bing.imageSearch(searchTerm, { "minWidth": 400, "minHeight": 400 }) except Exception, e: log.error("Bing exception error: %s" % (e)) return None
def image_search(plane): img_url = None # Bing sometimes refuses to search for "Scandinavian Airlines System" :-/ op = plane["operator"].replace("Scandinavian Airlines System", "SAS") searchTerm = "%s %s %s" % (op, plane["type"], plane["registration"]) log.info("Searching for %s", searchTerm) imageUrls = bing.imageSearch(searchTerm) if imageUrls: img_url = imageUrls[0] log.info("Added url %s for %s", img_url, plane['icao24']) for k in plane: log.info("%20s : %s" % (k, plane[k])) plane['image'] = img_url if not planedb.update_aircraft(plane['icao24'], {'image': img_url}): sys.error("Failed to update image") else: log.error("Image search came up short for %s, blacklisted?" % (plane['icao24'])) return img_url
def getImage(searchTerm): searchTerm = "%s+logo" % (searchTerm) log.debug("Searching for %s" % searchTerm) try: imageUrls = bing.imageSearch(searchTerm, {"minWidth":400, "minHeight":400}) except Exception as e: log.error("Bing exception error: %s" % (e)) return None for url in imageUrls: log.debug(" Checking %s" % url) fileName, fileExtension = os.path.splitext(url) if fileExtension != ".svg" and fileExtension != ".gif": log.debug("Fetching %s" % url) opener = urllib2.build_opener() opener.addheaders = [('User-agent', 'Mozilla/5.0')] try: file = cStringIO.StringIO(opener.open(url, timeout = 10).read()) im = Image.open(file) return (im, url) except urllib2.HTTPError as e: log.error("HTTP error: %s for %s" % (e, url)) log.error("searchTerm : '%s'" % (searchTerm)) pass except UnicodeEncodeError as e: log.error("UnicodeEncodeError error: %s" % (e)) log.error("searchTerm : '%s'" % (searchTerm)) pass except urllib2.URLError as e: log.error("URLError error: %s for %s" % (e, url)) log.error("searchTerm : '%s'" % (searchTerm)) pass return (None, None)
def proxyCheck(mosq, data): global min_receiver_distance global max_receiver_distance global minTrackingDistance global trackingICAO24 global args global gImageDB global gCurImage lat = data["lat"] lon = data["lon"] altitude = data["altitude"] icao24 = data["icao24"] lost = data["lost"] if lat and lon: distance = receiverDistance(lat, lon, altitude) bearing = receiverBearing(lat, lon) data["distance"] = distance data["bearing"] = bearing if distance < minTrackingDistance: minTrackingDistance = distance if icao24 != trackingICAO24: if trackingICAO24: log.debug("Giving up %s, tracking %s", trackingICAO24, icao24) else: log.debug("Tracking %s", icao24) trackingICAO24 = icao24 # TODO: Lookup images here? planeimage = gImageDB.find(trackingICAO24) if planeimage: gCurImage = planeimage.image elif data and data["operator"] and data["type"] and data[ "registration"]: searchTerm = "%s %s %s" % (data["operator"], data["type"], data["registration"]) if args.no_images: imageUrls = None else: imageUrls = bing.imageSearch(searchTerm, { "minWidth": 1024, "minHeight": 768 }) if imageUrls and data: gCurImage = imageUrls[0] log.debug("Added url %s for %s", gCurImage, icao24) gImageDB.add(trackingICAO24, gCurImage) data["image"] = gCurImage if trackingICAO24 == icao24: if lost: log.debug("Lost %s", icao24) trackingICAO24 = None minTrackingDistance = 999999 sendLost(mosq, data) else: minTrackingDistance = distance log.debug(" pos:%2f, %2f @ %dft distance:%d bearing:%d" % (lat, lon, altitude, distance, bearing)) sendProx(mosq, data) if distance < min_receiver_distance: log.info("New min range for %s at %d", icao24, distance) min_receiver_distance = distance if distance > max_receiver_distance: log.info("New max range for %s at %d", icao24, distance) max_receiver_distance = distance
def proxyCheck(mosq, data): global min_receiver_distance global max_receiver_distance global minTrackingDistance global trackingICAO24 global args global gImageDB global gCurImage lat = data["lat"] lon = data["lon"] altitude = data["altitude"] icao24 = data["icao24"] lost = data["lost"] if lat and lon: distance = receiverDistance(lat, lon, altitude) bearing = receiverBearing(lat, lon) data["distance"] = distance data["bearing"] = bearing if distance < minTrackingDistance: minTrackingDistance = distance if icao24 != trackingICAO24: if trackingICAO24: log.debug("Giving up %s, tracking %s", trackingICAO24, icao24) else: log.debug("Tracking %s", icao24) trackingICAO24 = icao24 # TODO: Lookup images here? planeimage = gImageDB.find(trackingICAO24) if planeimage: gCurImage = planeimage.image elif data and data["operator"] and data["type"] and data["registration"]: searchTerm = "%s %s %s" % (data["operator"], data["type"], data["registration"]) if args.no_images: imageUrls = None else: imageUrls = bing.imageSearch(searchTerm, {"minWidth":1024, "minHeight":768}) if imageUrls and data: gCurImage = imageUrls[0] log.debug("Added url %s for %s", gCurImage, icao24) gImageDB.add(trackingICAO24, gCurImage) data["image"] = gCurImage if trackingICAO24 == icao24: if lost: log.debug("Lost %s", icao24) trackingICAO24 = None minTrackingDistance = 999999 sendLost(mosq, data) else: minTrackingDistance = distance log.debug(" pos:%2f, %2f @ %dft distance:%d bearing:%d" % (lat, lon, altitude, distance, bearing)) sendProx(mosq, data) if distance < min_receiver_distance: log.info("New min range for %s at %d", icao24, distance) min_receiver_distance = distance if distance > max_receiver_distance: log.info("New max range for %s at %d", icao24, distance) max_receiver_distance = distance