Exemple #1
0
def main():
    usage = "Usage: %prog [options]"
    version = "%prog " + __version__
    parser = OptionParser(usage=usage, version=version)
    parser.add_option('--latlng', action='store', dest='latlng', default=None)
    parser.add_option('--address', action='store', dest='address', default=None)
    parser.add_option('-t', '--log_timing', action='store_true', dest='log_timing', default=False)
    parser.add_option('-r', '--log_raw_source_results', action='store_true', dest='log_raw_source_results', default=False)
    parser.add_option('-s', '--log_source_results', action='store_true', dest='log_source_results', default=False)
    parser.add_option('-c', '--log_clusters', action='store_true', dest='log_clusters', default=False)
    parser.add_option('-v', '--log_all', action='store_true', dest='log_all', default=False)
    parser.add_option('--notimeout', action='store_true', dest='no_timeout', default=False)
    (options, args) = parser.parse_args()

    global shouldLogRawSourceResults
    shouldLogRawSourceResults = options.log_all or options.log_raw_source_results
    global shouldLogSourceResults
    shouldLogSourceResults = options.log_all or options.log_source_results
    global shouldLogTiming
    shouldLogTiming = options.log_all or options.log_timing
    global shouldLogClusters
    shouldLogClusters = options.log_all or options.log_clusters
    global shouldDisableTimeout
    # With verbose logging we disable the timeout because it takes so long it causes us to miss sources.
    shouldDisableTimeout = options.log_all or options.no_timeout


    queryParams = {}
    if options.latlng:
        lat, lng = options.latlng.split(',')
        queryParams['coords'] = float(lat), float(lng)
    elif options.address:
        queryParams['coords'] = Geocoder().addressToLatLng(options.address)

    if len(args) < 2 or args[0] not in Constants.categories:
        categories = '[ %s ]' % (', '.join(Constants.categories))
        print '\nUSAGE:\n\nEntitySearch.py <category> <search terms>\n\nwhere <category> is one of:', categories, '\n'
        return 1
    searcher = EntitySearch()
    results = searcher.searchEntities(args[0], ' '.join(args[1:]), **queryParams)
    for result in results:
        print "\n\n"
        print "TITLE:", format_for_print(result.title)
        subtitle = result.subtitle
        if isinstance(result, PlaceEntity) and result.formatAddress():
            subtitle = result.formatAddress()
        print "SUBTITLE:", format_for_print(subtitle)
        print "SEARCH ID:", result.search_id
        print result

    from libs.CountedFunction import printFunctionCounts
    printFunctionCounts()
def main():
    usage = "Usage: %prog --entity_id=<id>  OR  %prod --search_id=<id> OR %prod <query> <subcategory?> <index?>"
    version = "%prog " + __version__
    parser = OptionParser(usage=usage, version=version)
    parser.add_option('--entity_id', action='store', dest='entity_id', default=None)
    parser.add_option('--search_id', action='store', dest='search_id', default=None)
    (options, args) = parser.parse_args()

    if options.entity_id and options.search_id:
        print '--entity_id and --search_id are mutually exclusive!'
    id_provided = options.entity_id or options.search_id
    if id_provided and len(args) > 1:
        print '--entity_id and --search_id cannot be used with query arguments!'

    if options.entity_id:
        from api.db.mongodb.MongoEntityCollection import MongoEntityCollection
        entity = MongoEntityCollection().getEntity(options.entity_id)
    elif options.search_id:
        entity = getEntityFromSearchId(options.search_id)
    else:
        query = buildQueryFromArgs(args)
        from api.MongoStampedAPI import MongoStampedAPI
        cursor = MongoStampedAPI()._entityDB._collection.find(query)
        if cursor.count() == 0:
            print("Could not find a matching entity for query: %s" % query)
            return

        entity =  MongoStampedAPI()._entityDB._convertFromMongo(cursor[0])


    print( "Before:\n%s" % pformat( entity.dataExport() ) )

    container = FullResolveContainer()

    decorations = {}
    container.enrichEntity( entity, decorations )

    print( "After:\n%s" % pformat( entity.dataExport() ) )
    if len(decorations) > 0:
        print( "With decorations:")

        for k,v in decorations.items():
            print( "%s decoration:" % k )

            try:
                print( "%s" % pformat(v.dataExport()) )
            except Exception:
                print( "%s" % pformat(v) )

    from libs.CountedFunction import printFunctionCounts
    printFunctionCounts()
    def __run_eval_for_category(self, category):
        if category == 'all':
            categories = ('app', 'book', 'film', 'music', 'place')
            searchIds = []
            for cat in categories:
                searchIds.extend(self.__get_search_ids_for_category(cat))
        else:
            searchIds = self.__get_search_ids_for_category(category)

        resolutionResult = {}
        formattedErrors = []
        resolver = FullResolveContainer.FullResolveContainer()
        for searchId in searchIds:
            try:
                entity, original = self.__convertSearchId(searchId, resolver)
                proxyList = self.__getResolverObjects(entity)
                resolutionResult[searchId] = (entity, original, proxyList)
            except Exception:
                formattedErrors.append(traceback.format_exc())

        printFunctionCounts()

        outputMessage = """
        /---------------------------------------------
        |    Resolution results for %s written to:
        |      %s
        \\---------------------------------------------
        """
        tmpPrefix = category + '-' + FLAGS.output_prefix
        with tempfile.NamedTemporaryFile(prefix=tmpPrefix, delete=False) as output:
            pickle.dump(resolutionResult, output)
            if formattedErrors:
                print('\n\nENCOUNTERED %i ERRORS\n\n' % len(formattedErrors))
                print('\n\n'.join([''.join(formattedError) for formattedError in formattedErrors]))
                print('\n\n')
            print outputMessage % (category, output.name)