def get_nh_interior(interior): authorize(DB_KEYS, request) interior = requests.utils.unquote(interior).replace("_", " ") limit = "1" tables = "nh_interior" fields = "_pageName=url,en_name=name,image_url,category,item_series,item_set,theme1,theme2,hha_category,tag,hha_base,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,grid_size,color1,color2,version_added,unlocked,notes" where = f'en_name="{interior}"' params = { "action": "cargoquery", "format": "json", "tables": tables, "fields": fields, "where": where, "limit": limit, } cargo_results = call_cargo(params, request.args) if len(cargo_results) == 0: abort( 404, description=error_response( "No data was found for the given query.", f"MediaWiki Cargo request succeeded by nothing was returned for the parameters: {params}", ), ) else: return jsonify(format_interior(cargo_results[0]))
def get_nh_art(art): authorize(DB_KEYS, request) art = requests.utils.unquote(art).replace("_", " ") limit = "1" tables = "nh_art" fields = "name,_pageName=url,image_url,has_fake,fake_image_url,art_name,author,year,art_style,description,buy_price=buy,sell,availability,authenticity,width,length" where = f'name="{art}"' params = { "action": "cargoquery", "format": "json", "tables": tables, "fields": fields, "where": where, "limit": limit, } cargo_results = call_cargo(params, request.args) if cargo_results == []: abort( 404, description=error_response( "No data was found for the given query.", f"MediaWiki Cargo request succeeded by nothing was returned for the parameters: {params}", ), ) else: return jsonify(format_art(cargo_results[0]))
def get_nh_furniture_all(): authorize(DB_KEYS, request) if "thumbsize" in request.args: abort( 400, description=error_response( "Invalid arguments", "Cannot have thumbsize in a group item request"), ) furniture_limit = "1300" furniture_tables = "nh_furniture" furniture_fields = "_pageName=url,en_name=name,category,item_series,item_set,theme1,theme2,hha_category,tag,hha_base,lucky,lucky_season,function1,function2,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,availability3,availability3_note,variation_total,pattern_total,customizable,custom_kits,custom_kit_type,custom_body_part,custom_pattern_part,grid_size,height,door_decor,version_added,unlocked,notes" #' variation_limit = "6000" variation_tables = "nh_furniture_variation" variation_fields = "en_name=name,variation,pattern,image_url,color1,color2" variation_orderby = "variation_number,pattern_number" furniture_list = get_furniture_list(furniture_limit, furniture_tables, furniture_fields) variation_list = get_furniture_variation_list(variation_limit, variation_tables, variation_fields, variation_orderby) stitched = stitch_variation_list(furniture_list, variation_list) if request.args.get("excludedetails") == "true": return jsonify([_["name"] for _ in stitched]) else: return jsonify(stitched)
def get_nh_photo_all(): authorize(DB_KEYS, request) if "thumbsize" in request.args: abort( 400, description=error_response( "Invalid arguments", "Cannot have thumbsize in a group item request"), ) photo_limit = "900" photo_tables = "nh_photo" photo_fields = "_pageName=url,en_name=name,category,hha_base,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,customizable,custom_kits,custom_body_part,grid_size,interactable,version_added,unlocked" variation_limit = "3700" variation_tables = "nh_photo_variation" variation_fields = "en_name=name,variation,image_url,color1,color2" variation_orderby = "variation_number" photo_list = get_photo_list(photo_limit, photo_tables, photo_fields) variation_list = get_variation_list(variation_limit, variation_tables, variation_fields, variation_orderby) stitched = stitch_variation_list(photo_list, variation_list) if request.args.get("excludedetails") == "true": return jsonify([_["name"] for _ in stitched]) else: return jsonify(stitched)
def get_nh_item(item): authorize(DB_KEYS, request) item = requests.utils.unquote(item).replace("_", " ") limit = "1" tables = "nh_item" fields = "_pageName=url,en_name=name,image_url,stack,hha_base,buy1_price,buy1_currency,sell,is_fence,material_type,material_seasonality,material_sort,material_name_sort,material_seasonality_sort,edible,plant_type,availability1,availability1_note,availability2,availability2_note,availability3,availability3_note,version_added,unlocked,notes" where = f'en_name="{item}"' params = { "action": "cargoquery", "format": "json", "tables": tables, "fields": fields, "where": where, "limit": limit, } cargo_results = call_cargo(params, request.args) if len(cargo_results) == 0: abort( 404, description=error_response( "No data was found for the given query.", f"MediaWiki Cargo request succeeded by nothing was returned for the parameters: {params}", ), ) else: return jsonify(format_other_item(cargo_results[0]))
def get_nh_fossil_all_all(): # What a good name authorize(DB_KEYS, request) group_limit = "50" group_tables = "nh_fossil_group" group_fields = "name,_pageName=url,room,description" fossil_limit = "100" fossil_tables = "nh_fossil" fossil_fields = "name,_pageName=url,image_url,fossil_group,interactable,sell,color1,color2,hha_base,width,length" groups = get_fossil_group_list(group_limit, group_tables, group_fields) fossils = get_fossil_list(fossil_limit, fossil_tables, fossil_fields) stitched = stitch_fossil_group_list(groups, fossils) if request.args.get("excludedetails") == "true": ret = [] for group in stitched: obj = { "group": group["name"], "fossils": [_["name"] for _ in group["fossils"]] } ret.append(obj) return jsonify(ret) else: return jsonify(stitched)
def get_nh_fossil_group(name): authorize(DB_KEYS, request) limit = "1" tables = "nh_fossil_group" fields = "name,_pageName=url,room,description" where = f'name = "{name}"' params = { "action": "cargoquery", "format": "json", "limit": limit, "tables": tables, "fields": fields, "where": where, } cargo_results = call_cargo(params, request.args) if not cargo_results: abort( 404, description=error_response( "No data was found for the given query.", "MediaWiki Cargo request succeeded by nothing was returned for the parameters: {}" .format(params), ), ) else: return format_fossil_group(cargo_results[0])
def get_nh_clothing_all(): authorize(DB_KEYS, request) if "thumbsize" in request.args: abort( 400, description=error_response( "Invalid arguments", "Cannot have thumbsize in a group item request" ), ) clothing_limit = "1350" clothing_tables = "nh_clothing" clothing_fields = "_pageName=url,en_name=name,category,style1,style2,label1,label2,label3,label4,label5,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,variation_total,vill_equip,seasonality,version_added,unlocked,notes" variation_limit = "5000" variation_tables = "nh_clothing_variation" variation_fields = "en_name=name,variation,image_url,color1,color2" variation_orderby = "variation_number" clothing_list = get_clothing_list(clothing_limit, clothing_tables, clothing_fields) variation_list = get_variation_list( variation_limit, variation_tables, variation_fields, variation_orderby ) stitched = stitch_variation_list(clothing_list, variation_list) if request.args.get("excludedetails") == "true": return jsonify([_["name"] for _ in stitched]) else: return jsonify(stitched)
def get_nh_tool_all(): authorize(DB_KEYS, request) if "thumbsize" in request.args: abort( 400, description=error_response( "Invalid arguments", "Cannot have thumbsize in a group item request" ), ) tool_limit = "150" tool_tables = "nh_tool" tool_fields = "_pageName=url,en_name=name,uses,hha_base,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,availability3,availability3_note,customizable,custom_kits,custom_body_part,version_added,unlocked,notes" variation_limit = "300" variation_tables = "nh_tool_variation" variation_fields = "en_name=name,variation,image_url" variation_orderby = "variation_number" tool_list = get_tool_list(tool_limit, tool_tables, tool_fields) variation_list = get_variation_list( variation_limit, variation_tables, variation_fields, variation_orderby ) stitched = stitch_variation_list(tool_list, variation_list) if request.args.get("excludedetails") == "true": return jsonify([_["name"] for _ in stitched]) else: return jsonify(stitched)
def get_nh_sea(sea): authorize(DB_KEYS, request) sea = requests.utils.unquote(sea).replace("_", " ") limit = "1" tables = "nh_sea_creature" fields = "name,_pageName=url,number,image_url,render_url,catchphrase,catchphrase2,shadow_size,shadow_movement,rarity,total_catch,sell_nook,tank_width,tank_length,time,time_n_availability=time_n_months,time_s_availability=time_s_months,time2,time2_n_availability=time2_n_months,time2_s_availability=time2_s_months,n_availability,n_m1,n_m2,n_m3,n_m4,n_m5,n_m6,n_m7,n_m8,n_m9,n_m10,n_m11,n_m12,n_m1_time,n_m2_time,n_m3_time,n_m4_time,n_m5_time,n_m6_time,n_m7_time,n_m8_time,n_m9_time,n_m10_time,n_m11_time,n_m12_time,s_availability,s_m1,s_m2,s_m3,s_m4,s_m5,s_m6,s_m7,s_m8,s_m9,s_m10,s_m11,s_m12,s_m1_time,s_m2_time,s_m3_time,s_m4_time,s_m5_time,s_m6_time,s_m7_time,s_m8_time,s_m9_time,s_m10_time,s_m11_time,s_m12_time" where = 'name="' + sea + '"' params = { "action": "cargoquery", "format": "json", "tables": tables, "fields": fields, "where": where, "limit": limit, } cargo_results = call_cargo(params, request.args) if cargo_results == []: abort( 404, description=error_response( "No data was found for the given query.", "MediaWiki Cargo request succeeded by nothing was returned for the parameters: {}" .format(params), ), ) else: if exact_version("1.0"): return jsonify(months_to_array(format_critters(cargo_results))) else: return jsonify(months_to_array(format_critters(cargo_results))[0])
def get_nh_fossil_individual(name): authorize(DB_KEYS, request) name = requests.utils.unquote(name).replace("_", " ") limit = "1" tables = "nh_fossil" fields = "name,_pageName=url,image_url,fossil_group,interactable,sell,color1,color2,hha_base,width,length" where = f'name = "{name}"' params = { "action": "cargoquery", "format": "json", "limit": limit, "tables": tables, "fields": fields, "where": where, } cargo_results = call_cargo(params, request.args) if not cargo_results: abort( 404, description=error_response( "No data was found for the given query.", "MediaWiki Cargo request succeeded by nothing was returned for the parameters: {}" .format(params), ), ) else: return format_fossil(cargo_results[0])
def get_nh_recipe(recipe): authorize(DB_KEYS, request) recipe = recipe.replace("_", " ") limit = "1" tables = "nh_recipe" fields = "_pageName=url,en_name=name,image_url,serial_id,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,recipes_to_unlock,diy_availability1,diy_availability1_note,diy_availability2,diy_availability2_note,material1,material1_num,material2,material2_num,material3,material3_num,material4,material4_num,material5,material5_num,material6,material6_num" where = f'en_name="{recipe}"' params = { "action": "cargoquery", "format": "json", "tables": tables, "fields": fields, "where": where, "limit": limit, } cargo_results = call_cargo(params, request.args) if len(cargo_results) == 0: abort( 404, description=error_response( "No data was found for the given query.", f"MediaWiki Cargo request succeeded by nothing was returned for the parameters: {params}", ), ) else: return jsonify(format_recipe(cargo_results[0]))
def get_nh_recipe_all(): authorize(DB_KEYS, request) limit = "800" tables = "nh_recipe" fields = "_pageName=url,en_name=name,image_url,serial_id,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,recipes_to_unlock,diy_availability1,diy_availability1_note,diy_availability2,diy_availability2_note,material1,material1_num,material2,material2_num,material3,material3_num,material4,material4_num,material5,material5_num,material6,material6_num" return get_recipe_list(limit, tables, fields)
def get_nh_item_all(): authorize(DB_KEYS, request) limit = "400" tables = "nh_item" fields = "_pageName=url,en_name=name,image_url,stack,hha_base,buy1_price,buy1_currency,sell,is_fence,material_type,material_seasonality,material_sort,material_name_sort,material_seasonality_sort,edible,plant_type,availability1,availability1_note,availability2,availability2_note,availability3,availability3_note,version_added,unlocked,notes" return get_other_item_list(limit, tables, fields)
def get_nh_interior_all(): authorize(DB_KEYS, request) limit = "650" tables = "nh_interior" fields = "_pageName=url,en_name=name,image_url,category,item_series,item_set,theme1,theme2,hha_category,tag,hha_base,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,grid_size,color1,color2,version_added,unlocked,notes" return get_interior_list(limit, tables, fields)
def get_nh_event_all(): authorize(DB_KEYS, request) limit = "1200" tables = "nh_calendar" fields = "event,date,type,link=url" orderby = "date" return get_event_list(limit, tables, fields, orderby)
def get_nh_art_all(): authorize(DB_KEYS, request) limit = "50" tables = "nh_art" if request.args.get("excludedetails") == "true": fields = "name" else: fields = "name,_pageName=url,image_url,has_fake,fake_image_url,art_name,author,year,art_style,description,buy_price=buy,sell,availability,authenticity,width,length" return get_art_list(limit, tables, fields)
def get_nh_sea_all(): authorize(DB_KEYS, request) limit = "100" tables = "nh_sea_creature" if request.args.get("excludedetails") == "true": fields = "name,n_m1,n_m2,n_m3,n_m4,n_m5,n_m6,n_m7,n_m8,n_m9,n_m10,n_m11,n_m12,s_m1,s_m2,s_m3,s_m4,s_m5,s_m6,s_m7,s_m8,s_m9,s_m10,s_m11,s_m12" else: fields = "name,_pageName=url,number,image_url,render_url,catchphrase,catchphrase2,shadow_size,shadow_movement,rarity,total_catch,sell_nook,tank_width,tank_length,time,time_n_availability=time_n_months,time_s_availability=time_s_months,time2,time2_n_availability=time2_n_months,time2_s_availability=time2_s_months,n_availability,n_m1,n_m2,n_m3,n_m4,n_m5,n_m6,n_m7,n_m8,n_m9,n_m10,n_m11,n_m12,n_m1_time,n_m2_time,n_m3_time,n_m4_time,n_m5_time,n_m6_time,n_m7_time,n_m8_time,n_m9_time,n_m10_time,n_m11_time,n_m12_time,s_availability,s_m1,s_m2,s_m3,s_m4,s_m5,s_m6,s_m7,s_m8,s_m9,s_m10,s_m11,s_m12,s_m1_time,s_m2_time,s_m3_time,s_m4_time,s_m5_time,s_m6_time,s_m7_time,s_m8_time,s_m9_time,s_m10_time,s_m11_time,s_m12_time" return get_critter_list(limit, tables, fields)
def get_nh_fossil_group_all(): authorize(DB_KEYS, request) limit = "50" tables = "nh_fossil_group" fields = "name,_pageName=url,room,description" ret = get_fossil_group_list(limit, tables, fields) if request.args.get("excludedetails") == "true": return jsonify([_["name"] for _ in ret]) else: return jsonify(ret)
def get_nh_fossil_individual_all(): authorize(DB_KEYS, request) limit = "100" tables = "nh_fossil" fields = "name,_pageName=url,image_url,fossil_group,interactable,sell,color1,color2,hha_base,width,length" ret = get_fossil_list(limit, tables, fields) if request.args.get("excludedetails") == "true": return jsonify([_["name"] for _ in ret]) else: return jsonify(ret)
def get_villager_all(): authorize(DB_KEYS, request) limit = "500" tables = "villager" join = "" if request.args.get("excludedetails") == "true": fields = "name" elif request.args.get("nhdetails") == "true": tables = "villager,nh_villager,nh_house" join = "villager._pageName=nh_villager._pageName,villager._pageName=nh_house._pageName" fields = "villager.name,villager._pageName=url,villager.name,villager.alt_name,villager.title_color,villager.text_color,villager.id,villager.image_url,villager.species,villager.personality,villager.gender,villager.birthday_month,villager.birthday_day,villager.sign,villager.quote,villager.phrase,villager.prev_phrase,villager.prev_phrase2,villager.clothing,villager.islander,villager.debut,villager.dnm,villager.ac,villager.e_plus,villager.ww,villager.cf,villager.nl,villager.wa,villager.nh,villager.film,villager.hhd,villager.pc,nh_villager.image_url=nh_image_url,nh_villager.photo_url=nh_photo_url,nh_villager.icon_url=nh_icon_url,nh_villager.quote=nh_quote,nh_villager.sub_personality=nh_sub-personality,nh_villager.catchphrase=nh_catchphrase,nh_villager.clothing=nh_clothing,nh_villager.clothing_variation=nh_clothing_variation,nh_villager.fav_style1=nh_fav_style1,nh_villager.fav_style2=nh_fav_style2,nh_villager.fav_color1=nh_fav_color1,nh_villager.fav_color2=nh_fav_color2,nh_villager.hobby=nh_hobby,nh_house.interior_image_url=nh_house_interior_url,nh_house.exterior_image_url=nh_house_exterior_url,nh_house.wallpaper=nh_wallpaper,nh_house.flooring=nh_flooring,nh_house.music=nh_music,nh_house.music_note=nh_music_note" else: fields = "name,_pageName=url,alt_name,title_color,text_color,id,image_url,species,personality,gender,birthday_month,birthday_day,sign,quote,phrase,prev_phrase,prev_phrase2,clothing,islander,debut,dnm,ac,e_plus,ww,cf,nl,wa,nh,film,hhd,pc" return get_villager_list(limit, tables, join, fields)
def get_nh_furniture(furniture): authorize(DB_KEYS, request) furniture = requests.utils.unquote(furniture).replace("_", " ") furniture_limit = "1" furniture_tables = "nh_furniture" furniture_fields = "_pageName=url,en_name=name,category,item_series,item_set,theme1,theme2,hha_category,tag,hha_base,lucky,lucky_season,function1,function2,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,availability3,availability3_note,variation_total,pattern_total,customizable,custom_kits,custom_kit_type,custom_body_part,custom_pattern_part,grid_size,height,door_decor,version_added,unlocked,notes" #' furniture_where = f'en_name = "{furniture}"' furniture_params = { "action": "cargoquery", "format": "json", "tables": furniture_tables, "fields": furniture_fields, "where": furniture_where, "limit": furniture_limit, } variation_limit = "70" variation_tables = "nh_furniture_variation" variation_fields = "en_name=name,variation,pattern,image_url,color1,color2" variation_where = f'en_name = "{furniture}"' variation_orderby = "variation_number,pattern_number" variation_params = { "action": "cargoquery", "format": "json", "tables": variation_tables, "fields": variation_fields, "where": variation_where, "order_by": variation_orderby, "limit": variation_limit, } cargo_results = call_cargo(furniture_params, request.args) if len(cargo_results) == 0: abort( 404, description=error_response( "No data was found for the given query.", f"MediaWiki Cargo request succeeded by nothing was returned for the parameters: {furniture_params}", ), ) else: piece = format_furniture(cargo_results[0]) variations = call_cargo(variation_params, request.args) return jsonify(stitch_variation(piece, variations))
def get_nh_tool(tool): authorize(DB_KEYS, request) tool = requests.utils.unquote(tool).replace("_", " ") tool_limit = "1" tool_tables = "nh_tool" tool_fields = "_pageName=url,en_name=name,uses,hha_base,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,availability3,availability3_note,customizable,custom_kits,custom_body_part,version_added,unlocked,notes" tool_where = f'en_name = "{tool}"' tool_params = { "action": "cargoquery", "format": "json", "tables": tool_tables, "fields": tool_fields, "where": tool_where, "limit": tool_limit, } variation_limit = "10" variation_tables = "nh_tool_variation" variation_fields = "en_name=name,variation,image_url" variation_where = f'en_name = "{tool}"' variation_orderby = "variation_number" variation_params = { "action": "cargoquery", "format": "json", "tables": variation_tables, "fields": variation_fields, "where": variation_where, "order_by": variation_orderby, "limit": variation_limit, } cargo_results = call_cargo(tool_params, request.args) if len(cargo_results) == 0: abort( 404, description=error_response( "No data was found for the given query.", f"MediaWiki Cargo request succeeded by nothing was returned for the parameters: {tool_params}", ), ) else: piece = format_tool(cargo_results[0]) variations = call_cargo(variation_params, request.args) return jsonify(stitch_variation(piece, variations))
def get_nh_clothing(clothing): authorize(DB_KEYS, request) clothing = requests.utils.unquote(clothing).replace("_", " ") clothing_limit = "1" clothing_tables = "nh_clothing" clothing_fields = "_pageName=url,en_name=name,category,style1,style2,label1,label2,label3,label4,label5,buy1_price,buy1_currency,buy2_price,buy2_currency,sell,availability1,availability1_note,availability2,availability2_note,variation_total,vill_equip,seasonality,version_added,unlocked,notes" clothing_where = f'en_name = "{clothing}"' clothing_params = { "action": "cargoquery", "format": "json", "tables": clothing_tables, "fields": clothing_fields, "where": clothing_where, "limit": clothing_limit, } variation_limit = "10" variation_tables = "nh_clothing_variation" variation_fields = "en_name=name,variation,image_url,color1,color2" variation_where = f'en_name = "{clothing}"' variation_orderby = "variation_number" variation_params = { "action": "cargoquery", "format": "json", "tables": variation_tables, "fields": variation_fields, "where": variation_where, "order_by": variation_orderby, "limit": variation_limit, } cargo_results = call_cargo(clothing_params, request.args) if len(cargo_results) == 0: abort( 404, description=error_response( "No data was found for the given query.", f"MediaWiki Cargo request succeeded by nothing was returned for the parameters: {clothing_params}", ), ) else: piece = format_clothing(cargo_results[0]) variations = call_cargo(variation_params, request.args) return jsonify(stitch_variation(piece, variations))
def generate_key(): authorize(DB_ADMIN_KEYS, request) try: new_uuid = str(uuid.uuid4()) email = "" if "email" in request.form: email = str(request.form["email"]) project = "" if "project" in request.form: project = str(request.form["project"]) db.insert_db("INSERT INTO " + DB_KEYS + ' VALUES("' + new_uuid + '","' + email + '","' + project + '")') return jsonify({"uuid": new_uuid, "email": email, "project": project}) except: abort( 500, description=error_response( "Failed to create new client UUID.", "UUID generation, or UUID insertion into keys table, failed.", ), )
def get_nh_fossil_all(name): authorize(DB_KEYS, request) name = requests.utils.unquote(name).replace("_", " ") group_limit = "1" group_tables = "nh_fossil_group" group_fields = "name,_pageName=url,room,description" # fossil_fields = "name,_pageName=url,image_url,fossil_group,interactable,sell,color1,color2,hha_base,width,length" fossil_params = { "action": "cargoquery", "format": "json", "limit": "1", "tables": "nh_fossil", "fields": "name,fossil_group", "where": f'name = "{name}"', } group_params = { "action": "cargoquery", "format": "json", "limit": "1", "tables": "nh_fossil_group", "fields": "name,_pageName=url,room,description", } fossil_check = call_cargo(fossil_params, request.args) if fossil_check: fossil_check = fossil_check[0] group_params["where"] = f'name = "{fossil_check["fossil_group"]}"' matched = {"type": "individual", "name": fossil_check["name"]} else: fossil_check = None group_params["where"] = f'name = "{name}"' matched = {"type": "group"} group = call_cargo(group_params, request.args) if group: group = format_fossil_group(group[0]) if not fossil_check: matched["name"] = group["name"] group["matched"] = matched else: abort( 404, description=error_response( "No data was found for the given query.", "MediaWiki Cargo request succeeded by nothing was returned for the parameters: {}" .format(group_params), ), ) fossil_params["where"] = f'fossil_group = "{group["name"]}"' fossil_params["limit"] = "10" fossil_params[ "fields"] = "name,_pageName=url,image_url,fossil_group,interactable,sell,color1,color2,hha_base,width,length" # Technically don't need this ^^^ but it syncs the /all and /all/name caches fossils = call_cargo(fossil_params, request.args) group["fossils"] = [format_fossil(_) for _ in fossils] for fossil in group["fossils"]: del fossil["fossil_group"] return jsonify(group)