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}
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')
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)
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}
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, }