Пример #1
0
def parse(content):
	parser_list = list(evepaste.PARSER_TABLE) + [
		('listing', listing_parser),
		('heuristic', tryhard_parser),
		('industry', industry.parse_industry),
	]

	results = []

	try:
		kind, result, bad_lines = evepaste.parse(content, parsers=parser_list)
		if result:
			for item in iter_types(kind, result):
				details = get_type_by_name(item['name'])
				if details:
					item['typeID'] = details['typeID']
					item['groupID'] = details['groupID']
					item['market'] = details['market']
					results.append(item)
	except evepaste.Unparsable:
		raise

	return {'representative_kind': kind,
			'results': results,
			'bad_lines': bad_lines}
Пример #2
0
def test_paster():
    if request.method == "GET":
        return render_template('recon/dscan_input.html')

    scan = evepaste.parse(request.form['scan'])

    print scan
    return render_template('recon/dscan_input.html')
Пример #3
0
def index():
    if request.method == 'POST':
        items_to_appraise = evepaste.parse(request.form['raw_textarea'])[1]
        appraisals = appraise(items_to_appraise)
    else:
        appraisals = None

    return render_template('index.html', appraisals=appraisals)
Пример #4
0
def parse(raw_paste):
    unique_items = set()
    results = []
    representative_kind = 'unknown'
    largest_kind_num = 0

    parser_list = [('loot_history', parsers.parse_loot_history),
                   ('survey_scanner', parsers.parse_survey_scanner),
                   ('pi', parsers.parse_pi),
                   ('dscan', dscan_parser),
                   ('killmail', parsers.parse_killmail),
                   ('chat', parsers.parse_chat),
                   ('eft', parsers.parse_eft),
                   ('fitting', parsers.parse_fitting),
                   ('contract', parsers.parse_contract),
                   ('assets', parsers.parse_assets),
                   ('view_contents', parsers.parse_view_contents),
                   ('wallet', parsers.parse_wallet),
                   ('cargo_scan', parsers.parse_cargo_scan),
                   ('listing', listing_parser),
                   ('heuristic', tryhard_parser)]

    iterations = 0
    while iterations < 10:
        iterations += 1
        try:
            if not parser_list:
                break

            kind, result, bad_lines = evepaste.parse(raw_paste,
                                                     parsers=parser_list)

            if result:
                # Verify the results has some valid items and gather unique
                # items
                item_count = 0
                for item in iter_types(kind, result):
                    details = get_type_by_name(item['name'])
                    if details:
                        unique_items.add(details['typeID'])
                        item_count += 1

                if item_count == 0:
                    # Narrow down the parser_list to those that didn't get a
                    # chance last time
                    used_parser_list = list(takewhile(lambda p: kind != p[0],
                                                      parser_list))
                    parser_list = parser_list[len(used_parser_list)+1:]
                    continue

                results.append([kind, result])

                # Determine if this is the representative type
                if item_count >= largest_kind_num:
                    representative_kind = kind
                    largest_kind_num = item_count

                raw_paste = '\n'.join(bad_lines)
            else:
                # We found zero results, we're done parsing
                break

            # We're finished parsing because we've consumed all of our data
            if not bad_lines:
                break

        except evepaste.Unparsable:
            if results:
                break
            else:
                raise

    return {'representative_kind': representative_kind,
            'results': results,
            'bad_lines': bad_lines,
            'unique_items': unique_items}
Пример #5
0
def parse(raw_paste):
    unique_items = set()
    results = []
    representative_kind = "unknown"
    largest_kind_num = 0

    parser_list = list(evepaste.PARSER_TABLE) + [("listing", listing_parser), ("heuristic", tryhard_parser)]

    iterations = 0
    while iterations < 10:
        iterations += 1
        try:
            if not parser_list:
                break

            kind, result, bad_lines = evepaste.parse(raw_paste, parsers=parser_list)

            if result:
                # Verify the results has some valid items and gather unique
                # items
                item_count = 0
                for item in iter_types(kind, result):
                    details = get_type_by_name(item["name"])
                    if details:
                        unique_items.add(details["typeID"])
                        item_count += 1

                if item_count == 0:
                    # Narrow down the parser_list to those that didn't get a
                    # chance last time
                    used_parser_list = list(takewhile(lambda p: kind != p[0], parser_list))
                    parser_list = parser_list[len(used_parser_list) + 1 :]
                    continue

                results.append([kind, result])

                # Determine if this is the representative type
                if item_count >= largest_kind_num:
                    representative_kind = kind
                    largest_kind_num = item_count

                raw_paste = "\n".join(bad_lines)
            else:
                # We found zero results, we're done parsing
                break

            # We're finished parsing because we've consumed all of our data
            if not bad_lines:
                break

        except evepaste.Unparsable:
            if results:
                break
            else:
                raise

    return {
        "representative_kind": representative_kind,
        "results": results,
        "bad_lines": bad_lines,
        "unique_items": unique_items,
    }