diff --git a/app/controllers/challenge.py b/app/controllers/challenge.py index d454c80..ac2abf6 100644 --- a/app/controllers/challenge.py +++ b/app/controllers/challenge.py @@ -158,6 +158,6 @@ def main(challenge_id_untrusted): participations = common_helpers.get_all_participations(challenge_id) html["participant_html"] = make_participant_html(participations) - html["taxa_html"] = common_helpers.make_taxa_html(participations, challenge_data["taxon"]) + html["taxa_html"] = common_helpers.make_taxa_html(participations, challenge_data) return html diff --git a/app/controllers/participation.py b/app/controllers/participation.py index fb4d91a..ecd48e6 100644 --- a/app/controllers/participation.py +++ b/app/controllers/participation.py @@ -76,8 +76,14 @@ def make_taxa_html(challenge, taxa_dates_json = None): } """ - # Load all taxa names of the higher taxon (e.g. plants) - all_taxa_names = common_helpers.load_taxon_file(taxon_file_id + "_all") + # Ordinary challenger: all taxa file + if challenge["type"] == "challenge100": + all_taxa_names = common_helpers.load_taxon_file(taxon_file_id + "_all") + # School challenge: only basic taxa file + elif challenge["type"] == "school100": + all_taxa_names = common_helpers.load_taxon_file(taxon_file_id) + else: + raise Exception("Unknown challenge type.") basic_taxa_html = "" diff --git a/app/controllers/participation_stats.py b/app/controllers/participation_stats.py index dc415ab..3c55351 100644 --- a/app/controllers/participation_stats.py +++ b/app/controllers/participation_stats.py @@ -18,7 +18,7 @@ def main(challenge_id_untrusted, participation_id_untrusted): # Not participation of this user return {"redirect": True, "url": "/"} - html["taxa_html"] = common_helpers.make_taxa_html(participations, challenge_data["taxon"], participation_data["taxa_json"]) + html["taxa_html"] = common_helpers.make_taxa_html(participations, challenge_data, participation_data["taxa_json"]) html["challenge_data"] = challenge_data html["participation_data"] = participation_data diff --git a/app/data/koulut_2024.json b/app/data/koulut_2024.json new file mode 100644 index 0000000..6451e70 --- /dev/null +++ b/app/data/koulut_2024.json @@ -0,0 +1,1260 @@ +{ + "MX.60910": { + "fin": "amiraali", + "swe": "amiral", + "sci": "Vanessa atalanta", + "heading": "Hy\u00f6nteiset ja h\u00e4m\u00e4h\u00e4kkiel\u00e4imet" + }, + "MX.204051": { + "fin": "ampiaiset", + "swe": "getingar", + "sci": "Vespidae" + }, + "MX.60767": { + "fin": "auroraperhonen", + "swe": "aurorafj\u00e4ril", + "sci": "Anthocharis cardamines" + }, + "MX.43204": { + "fin": "hein\u00e4sirkat", + "swe": "gr\u00e4shoppor", + "sci": "Acrididae" + }, + "MX.43169": { + "fin": "hepokatit", + "swe": "v\u00e5rtbitare\u00a0", + "sci": "Tettigoniidae" + }, + "MX.60925": { + "fin": "herukkaperhonen", + "swe": "vinb\u00e4rsfuks", + "sci": "Polygonia c-album" + }, + "MX.281757": { + "fin": "hirvik\u00e4rp\u00e4nen", + "swe": "\u00e4lgfluga", + "sci": "Lipoptena cervi" + }, + "MX.60870": { + "fin": "hopeat\u00e4pl\u00e4t", + "swe": "p\u00e4rlemorfj\u00e4rilar", + "sci": "Argynnini" + }, + "MX.253661": { + "fin": "hyttyset", + "swe": "stickmyggor", + "sci": "Culicidae" + }, + "MX.206454": { + "fin": "isopihtih\u00e4nt\u00e4", + "swe": "st\u00f6rre tvestj\u00e4rt", + "sci": "Forficula auricularia" + }, + "MX.230555": { + "fin": "kaalilude", + "swe": "rapssugare", + "sci": "Eurydema oleracea" + }, + "MX.60811": { + "fin": "kangasperhonen", + "swe": "gr\u00f6nsnabbvinge", + "sci": "Callophrys rubi" + }, + "MX.5077970": { + "fin": "kartanokimalaisen kaltaiset", + "swe": "hushumla liknande arter", + "sci": "" + }, + "MX.60908": { + "fin": "karttaperhonen", + "swe": "kartfj\u00e4ril", + "sci": "Araschnia levana" + }, + "MX.204324": { + "fin": "kekomuurahaiset", + "swe": "stackmyror", + "sci": "Formica (Formica)" + }, + "MX.192436": { + "fin": "kiiltomato", + "swe": "lysmask", + "sci": "Lampyris noctiluca" + }, + "MX.191919": { + "fin": "kimalaiskuoriainen", + "swe": "humlebagge", + "sci": "Trichius fasciatus" + }, + "MX.5077969": { + "fin": "kivikkokimalaisen kaltaiset", + "swe": "stenhumla liknande arter", + "sci": "" + }, + "MX.60813": { + "fin": "kultasiivet", + "swe": "guldvingar", + "sci": "Lycaena" + }, + "MX.60778": { + "fin": "lanttuperhonen", + "swe": "rapsfj\u00e4ril", + "sci": "Pieris napi" + }, + "MX.60749": { + "fin": "lauhahiipij\u00e4", + "swe": "mindre t\u00e5telsmygare", + "sci": "Thymelicus lineola" + }, + "MX.70199": { + "fin": "lukit", + "swe": "lockespindlar", + "sci": "Opiliones" + }, + "MX.253659": { + "fin": "m\u00e4k\u00e4r\u00e4t", + "swe": "knott", + "sci": "Simuliidae" + }, + "MX.5077966": { + "fin": "mantukimalaisen kaltaiset", + "swe": "ljus jordhumla liknande arter", + "sci": "" + }, + "MX.192205": { + "fin": "mets\u00e4sitti\u00e4inen", + "swe": "skogstordyvel", + "sci": "Anoplotrupes stercorosus" + }, + "MX.60914": { + "fin": "neitoperhonen", + "swe": "p\u00e5f\u00e5gel\u00f6ga", + "sci": "Aglais io" + }, + "MX.195093": { + "fin": "nelivy\u00f6j\u00e4\u00e4r\u00e4", + "swe": "fyrbandad blombock", + "sci": "Leptura quadrifasciata" + }, + "MX.60916": { + "fin": "nokkosperhonen", + "swe": "n\u00e4sselfj\u00e4ril", + "sci": "Aglais urticae" + }, + "MX.60911": { + "fin": "ohdakeperhonen", + "swe": "tistelfj\u00e4ril", + "sci": "Vanessa cardui" + }, + "MX.5077971": { + "fin": "peltokimalaisen kaltaiset", + "swe": "\u00e5kerhumla liknande arter", + "sci": "" + }, + "MX.290384": { + "fin": "pihaharsokorento", + "swe": "guld\u00f6gonsl\u00e4nda", + "sci": "Chrysoperla carnea" + }, + "MX.60755": { + "fin": "piippopaksup\u00e4\u00e4", + "swe": "\u00e4ngssmygare", + "sci": "Ochlodes sylvanus" + }, + "MX.196317": { + "fin": "putkik\u00e4rs\u00e4k\u00e4s", + "swe": "hundk\u00e4xvivel", + "sci": "Lixus iridis" + }, + "MX.202370": { + "fin": "puutiainen", + "swe": "vanlig f\u00e4sting", + "sci": "Ixodes ricinus" + }, + "MX.230561": { + "fin": "pyjamalude", + "swe": "strimlus", + "sci": "Graphosoma italicum" + }, + "MX.201925": { + "fin": "rantah\u00e4m\u00e4h\u00e4kki", + "swe": "", + "sci": "Dolomedes fimbriatus" + }, + "MX.60730": { + "fin": "ritariperhonen", + "swe": "makaonfj\u00e4ril", + "sci": "Papilio machaon" + }, + "MX.194730": { + "fin": "sarvijaakko", + "swe": "timmerman", + "sci": "Acanthocinus aedilis" + }, + "MX.194380": { + "fin": "seitsenpistepirkko", + "swe": "sjuprickig nyckelpiga", + "sci": "Coccinella septempunctata" + }, + "MX.60822": { + "fin": "sinisiivet", + "swe": "bl\u00e5vingar", + "sci": "Polyommatini" + }, + "MX.60794": { + "fin": "sitruunaperhonen", + "swe": "citronfj\u00e4ril", + "sci": "Gonepteryx rhamni" + }, + "MX.231375": { + "fin": "sokeritoukka", + "swe": "silverfisk", + "sci": "Lepisma saccharinum" + }, + "MX.1": { + "fin": "sudenkorennot", + "swe": "trollsl\u00e4ndor", + "sci": "Odonata" + }, + "MX.60791": { + "fin": "suokeltaperhonen", + "swe": "svavelgul h\u00f6fj\u00e4ril", + "sci": "Colias palaeno" + }, + "MX.60920": { + "fin": "suruvaippa", + "swe": "sorgmantel", + "sci": "Nymphalis antiopa" + }, + "MX.204772": { + "fin": "tarhamehil\u00e4inen", + "swe": "honungsbi", + "sci": "Apis mellifera" + }, + "MX.60970": { + "fin": "tesmaperhonen", + "swe": "luktgr\u00e4sfj\u00e4ril", + "sci": "Aphantopus hyperantus" + }, + "MX.53675": { + "fin": "torakat", + "swe": "kackerlackor", + "sci": "Blattodea" + }, + "MX.58998": { + "fin": "tuomenkehr\u00e4\u00e4j\u00e4koi", + "swe": "h\u00e4ggspinnmal", + "sci": "Yponomeuta evonymella" + }, + "MX.189609": { + "fin": "turkkilot", + "swe": "d\u00f6dgr\u00e4vare", + "sci": "Nicrophorus" + }, + "MX.229690": { + "fin": "vesimittarit", + "swe": "", + "sci": "Gerridae" + }, + "MX.230533": { + "fin": "viherlude", + "swe": "gr\u00f6n b\u00e4rfis", + "sci": "Palomena prasina" + }, + "MX.53219": { + "fin": "ahven", + "swe": "abborre", + "sci": "Perca fluviatilis", + "heading": "Kalat" + }, + "MX.53118": { + "fin": "hauki", + "swe": "g\u00e4dda", + "sci": "Esox lucius" + }, + "MX.53198": { + "fin": "kolmipiikki", + "swe": "storspigg", + "sci": "Gasterosteus aculeatus" + }, + "MX.53145": { + "fin": "s\u00e4rki", + "swe": "m\u00f6rt", + "sci": "Rutilus rutilus" + }, + "MX.39761": { + "fin": "ahokissank\u00e4p\u00e4l\u00e4", + "swe": "kattfot", + "sci": "Antennaria dioica", + "heading": "Kasvit ja lev\u00e4t" + }, + "MX.38869": { + "fin": "ahomansikka", + "swe": "smultron", + "sci": "Fragaria vesca" + }, + "MX.39833": { + "fin": "ahop\u00e4iv\u00e4nkakkara", + "swe": "pr\u00e4stkrage", + "sci": "Leucanthemum vulgare" + }, + "MX.37999": { + "fin": "hieskoivu", + "swe": "glasbj\u00f6rk", + "sci": "Betula pubescens" + }, + "MX.38972": { + "fin": "hiirenvirna", + "swe": "kr\u00e5kvicker", + "sci": "Vicia cracca" + }, + "MX.39959": { + "fin": "huopavoikeltano", + "swe": "gr\u00e5fibbla", + "sci": "Pilosella officinarum" + }, + "MX.37984": { + "fin": "isonokkonen", + "swe": "br\u00e4nn\u00e4ssla", + "sci": "Urtica dioica" + }, + "MX.40639": { + "fin": "j\u00e4rviruoko", + "swe": "vass", + "sci": "Phragmites australis" + }, + "MX.39158": { + "fin": "j\u00e4ttipalsami", + "swe": "j\u00e4ttebalsamin", + "sci": "Impatiens glandulifera" + }, + "MX.39130": { + "fin": "k\u00e4enkaali", + "swe": "harsyra", + "sci": "Oxalis acetosella" + }, + "MX.38598": { + "fin": "kanerva", + "swe": "ljung", + "sci": "Calluna vulgaris" + }, + "MX.37826": { + "fin": "kataja", + "swe": "en", + "sci": "Juniperus communis" + }, + "MX.39589": { + "fin": "keltakannusruoho", + "swe": "gulsporre", + "sci": "Linaria vulgaris" + }, + "MX.39292": { + "fin": "keltamatara", + "swe": "gulm\u00e5ra", + "sci": "Galium verum" + }, + "MX.37962": { + "fin": "keltamo", + "swe": "skel\u00f6rt", + "sci": "Chelidonium majus" + }, + "MX.38844": { + "fin": "ketohanhikki", + "swe": "g\u00e5s\u00f6rt", + "sci": "Argentina anserina" + }, + "MX.38150": { + "fin": "ketoneilikka", + "swe": "backnejlika", + "sci": "Dianthus deltoides" + }, + "MX.39368": { + "fin": "ketoruusuruoho", + "swe": "\u00e5kerv\u00e4dd", + "sci": "Knautia arvensis" + }, + "MX.39970": { + "fin": "kielo", + "swe": "liljekonvalj", + "sci": "Convallaria majalis" + }, + "MX.39711": { + "fin": "kissankello", + "swe": "liten bl\u00e5klocka", + "sci": "Campanula rotundifolia" + }, + "MX.40488": { + "fin": "koiranhein\u00e4", + "swe": "hund\u00e4xing", + "sci": "Dactylis glomerata" + }, + "MX.39185": { + "fin": "koiranputki", + "swe": "hundk\u00e4x", + "sci": "Anthriscus sylvestris" + }, + "MX.38950": { + "fin": "komealupiini", + "swe": "blomsterlupin", + "sci": "Lupinus polyphyllus" + }, + "MX.37713": { + "fin": "kortteet", + "swe": "fr\u00e4knar", + "sci": "Equisetum" + }, + "MX.37857": { + "fin": "kullero", + "swe": "sm\u00f6rbollar", + "sci": "Trollius europaeus" + }, + "MX.39727": { + "fin": "kultapiisku", + "swe": "gullris", + "sci": "Solidago virgaurea" + }, + "MX.38815": { + "fin": "kurtturuusu", + "swe": "vresros", + "sci": "Rosa rugosa" + }, + "MX.38836": { + "fin": "kyl\u00e4kellukka", + "swe": "nejlikrot\u00a0", + "sci": "Geum urbanum" + }, + "MX.43979": { + "fin": "lehtoruusukesammal", + "swe": "rosmossa", + "sci": "Rhodobryum roseum" + }, + "MX.39847": { + "fin": "leskenlehti", + "swe": "h\u00e4sthov", + "sci": "Tussilago farfara" + }, + "MX.37683": { + "fin": "liekokasvit", + "swe": "lummerv\u00e4xter", + "sci": "Lycopodiaceae" + }, + "MX.39088": { + "fin": "maitohorsma", + "swe": "mj\u00f6lke", + "sci": "Chamaenerion angustifolium" + }, + "MX.38795": { + "fin": "mesiangervo", + "swe": "\u00e4lggr\u00e4s", + "sci": "Filipendula ulmaria" + }, + "MX.38590": { + "fin": "mets\u00e4haapa", + "swe": "asp", + "sci": "Populus tremula" + }, + "MX.43668": { + "fin": "mets\u00e4kerrossammal", + "swe": "husmossa", + "sci": "Hylocomium splendens" + }, + "MX.37812": { + "fin": "mets\u00e4kuusi", + "swe": "gran", + "sci": "Picea abies" + }, + "MX.37819": { + "fin": "mets\u00e4m\u00e4nty", + "swe": "tall", + "sci": "Pinus sylvestris" + }, + "MX.38676": { + "fin": "mets\u00e4t\u00e4hti", + "swe": "skogsstj\u00e4rna", + "sci": "Lysimachia europaea" + }, + "MX.37990": { + "fin": "mets\u00e4tammi", + "swe": "skogsek", + "sci": "Quercus robur" + }, + "MX.39122": { + "fin": "mets\u00e4vaahtera", + "swe": "skogsl\u00f6nn", + "sci": "Acer platanoides" + }, + "MX.38622": { + "fin": "mustikka", + "swe": "bl\u00e5b\u00e4r", + "sci": "Vaccinium myrtillus" + }, + "MX.38797": { + "fin": "muurain", + "swe": "hjortron", + "sci": "Rubus chamaemorus" + }, + "MX.39500": { + "fin": "niittyhumala", + "swe": "brun\u00f6rt", + "sci": "Prunella vulgaris" + }, + "MX.39809": { + "fin": "ojak\u00e4rs\u00e4m\u00f6", + "swe": "nys\u00f6rt", + "sci": "Achillea ptarmica" + }, + "MX.38834": { + "fin": "ojakellukka", + "swe": "humleblomster", + "sci": "Geum rivale" + }, + "MX.39976": { + "fin": "oravanmarja", + "swe": "ekorrb\u00e4r", + "sci": "Maianthemum bifolium" + }, + "MX.40187": { + "fin": "osmank\u00e4\u00e4mit", + "swe": "kaveldun", + "sci": "Typha" + }, + "MX.43502": { + "fin": "palmusammal", + "swe": "palmmossa", + "sci": "Climacium dendroides" + }, + "MX.38804": { + "fin": "vadelma", + "swe": "skogshallon", + "sci": "Rubus idaeus" + }, + "MX.39823": { + "fin": "peltosaunio", + "swe": "baldersbr\u00e5\u00a0", + "sci": "Tripleurospermum inodorum" + }, + "MX.39830": { + "fin": "pietaryrtti", + "swe": "renfana", + "sci": "Tanacetum vulgare" + }, + "MX.39673": { + "fin": "piharatamo", + "swe": "groblad", + "sci": "Plantago major" + }, + "MX.39827": { + "fin": "pihasaunio", + "swe": "gatkamomill", + "sci": "Matricaria discoidea" + }, + "MX.38048": { + "fin": "pihat\u00e4htim\u00f6", + "swe": "v\u00e5tarv", + "sci": "Stellaria media" + }, + "MX.4972544": { + "fin": "pihatatar (pihatatarryhm\u00e4)", + "swe": "", + "sci": "Polygonum aviculare -ryhm\u00e4" + }, + "MX.38910": { + "fin": "pihlaja", + "swe": "r\u00f6nn", + "sci": "Sorbus aucuparia" + }, + "MX.39835": { + "fin": "pujo", + "swe": "gr\u00e5bo", + "sci": "Artemisia vulgaris" + }, + "MX.38131": { + "fin": "puna-ailakki", + "swe": "r\u00f6dbl\u00e4ra", + "sci": "Silene dioica" + }, + "MX.38620": { + "fin": "puolukka", + "swe": "lingon", + "sci": "Vaccinium vitis-idaea" + }, + "MX.38563": { + "fin": "raita", + "swe": "s\u00e4lg", + "sci": "Salix caprea" + }, + "MX.206710": { + "fin": "rakkohauru (rakkolev\u00e4)", + "swe": "bl\u00e5st\u00e5ng", + "sci": "Fucus vesiculosus" + }, + "MX.37993": { + "fin": "rauduskoivu", + "swe": "v\u00e5rtbj\u00f6rk", + "sci": "Betula pendula" + }, + "MX.37863": { + "fin": "rentukka", + "swe": "kabbleka", + "sci": "Caltha palustris" + }, + "MX.39166": { + "fin": "ruohokanukka", + "swe": "h\u00f6nsb\u00e4r", + "sci": "Cornus suecica" + }, + "MX.4994055": { + "fin": "sananjalka", + "swe": "\u00f6rnbr\u00e4ken", + "sci": "Pteridium aquilinum" + }, + "MX.43901": { + "fin": "sein\u00e4sammal", + "swe": "v\u00e4ggmossa", + "sci": "Pleurozium schreberi" + }, + "MX.39871": { + "fin": "seittitakiainen", + "swe": "ullkardborre", + "sci": "Arctium tomentosum" + }, + "MX.39812": { + "fin": "siank\u00e4rs\u00e4m\u00f6", + "swe": "r\u00f6llika", + "sci": "Achillea millefolium" + }, + "MX.43956": { + "fin": "sulkasammal", + "swe": "kammossa", + "sci": "Ptilium crista-castrensis" + }, + "MX.38614": { + "fin": "suokukka", + "swe": "rosling", + "sci": "Andromeda polifolia" + }, + "MX.38605": { + "fin": "suopursu", + "swe": "skvattram", + "sci": "Rhododendron tomentosum" + }, + "MX.39038": { + "fin": "valkoapila", + "swe": "vitkl\u00f6ver", + "sci": "Trifolium repens" + }, + "MX.39467": { + "fin": "valkopeippi", + "swe": "vitplister", + "sci": "Lamium album" + }, + "MX.37879": { + "fin": "valkovuokko", + "swe": "vitsippa", + "sci": "Anemone nemorosa" + }, + "MX.39343": { + "fin": "vanamo", + "swe": "linnea", + "sci": "Linnaea borealis" + }, + "MX.38646": { + "fin": "variksenmarja", + "swe": "kr\u00e5kb\u00e4r", + "sci": "Empetrum nigrum" + }, + "MX.213277": { + "fin": "viherahdinparta", + "swe": "", + "sci": "Cladophora glomerata" + }, + "MX.42419": { + "fin": "voikukat", + "swe": "maskrosor", + "sci": "Taraxacum" + }, + "MX.39201": { + "fin": "vuohenputki", + "swe": "kirsk\u00e5l", + "sci": "Aegopodium podagraria" + }, + "MX.26419": { + "fin": "haahka", + "swe": "ejder", + "sci": "Somateria mollissima", + "heading": "Linnut" + }, + "MX.26360": { + "fin": "haapana", + "swe": "bl\u00e4sand", + "sci": "Anas penelope" + }, + "MX.32132": { + "fin": "haarap\u00e4\u00e4sky", + "swe": "ladusvala", + "sci": "Hirundo rustica" + }, + "MX.37122": { + "fin": "harakka", + "swe": "skata", + "sci": "Pica pica" + }, + "MX.26094": { + "fin": "harmaahaikara", + "swe": "gr\u00e5h\u00e4ger", + "sci": "Ardea cinerea" + }, + "MX.27750": { + "fin": "harmaalokki", + "swe": "gr\u00e5trut", + "sci": "Larus argentatus" + }, + "MX.34535": { + "fin": "h\u00f6m\u00f6tiainen", + "swe": "talltita", + "sci": "Poecile montanus" + }, + "MX.26442": { + "fin": "isokoskelo", + "swe": "storskrake", + "sci": "Mergus merganser" + }, + "MX.28715": { + "fin": "k\u00e4ki", + "swe": "g\u00f6k", + "sci": "Cuculus canorus" + }, + "MX.27748": { + "fin": "kalalokki", + "swe": "fiskm\u00e5s", + "sci": "Larus canus" + }, + "MX.30443": { + "fin": "k\u00e4pytikka", + "swe": "st\u00f6rre hackspett", + "sci": "Dendrocopos major" + }, + "MX.35146": { + "fin": "keltasirkku", + "swe": "gulsparv", + "sci": "Emberiza citrinella" + }, + "MX.200535": { + "fin": "kesykyyhky", + "swe": "tamduva", + "sci": "Columba livia domestica" + }, + "MX.34021": { + "fin": "kirjosieppo", + "swe": "svartvit flugsnappare", + "sci": "Ficedula hypoleuca" + }, + "MX.37178": { + "fin": "korppi", + "swe": "korp", + "sci": "Corvus corax" + }, + "MX.36817": { + "fin": "kottarainen", + "swe": "stare", + "sci": "Sturnus vulgaris" + }, + "MX.25837": { + "fin": "kuikka", + "swe": "storlom", + "sci": "Gavia arctica" + }, + "MX.27613": { + "fin": "kuovi", + "swe": "storspov", + "sci": "Numenius arquata" + }, + "MX.27214": { + "fin": "kurki", + "swe": "trana", + "sci": "Grus grus" + }, + "MX.26277": { + "fin": "kyhmyjoutsen", + "swe": "kn\u00f6lsvan", + "sci": "Cygnus olor" + }, + "MX.26280": { + "fin": "laulujoutsen", + "swe": "s\u00e5ngsvan", + "sci": "Cygnus cygnus" + }, + "MX.27459": { + "fin": "meriharakka", + "swe": "strandskata", + "sci": "Haematopus ostralegus" + }, + "MX.26530": { + "fin": "merikotka", + "swe": "havs\u00f6rn", + "sci": "Haliaeetus albicilla" + }, + "MX.26043": { + "fin": "merimetso", + "swe": "storskarv", + "sci": "Phalacrocorax carbo" + }, + "MX.33106": { + "fin": "mustarastas", + "swe": "koltrast", + "sci": "Turdus merula" + }, + "MX.37142": { + "fin": "naakka", + "swe": "kaja", + "sci": "Corvus monedula" + }, + "MX.27774": { + "fin": "naurulokki", + "swe": "skrattm\u00e5s", + "sci": "Larus ridibundus" + }, + "MX.27381": { + "fin": "nokikana", + "swe": "soth\u00f6na", + "sci": "Fulica atra" + }, + "MX.33873": { + "fin": "pajulintu", + "swe": "l\u00f6vs\u00e5ngare", + "sci": "Phylloscopus trochilus" + }, + "MX.30504": { + "fin": "palok\u00e4rki", + "swe": "spillkr\u00e5ka", + "sci": "Dryocopus martius" + }, + "MX.36237": { + "fin": "peippo", + "swe": "bofink", + "sci": "Fringilla coelebs" + }, + "MX.36589": { + "fin": "pikkuvarpunen", + "swe": "pilfink", + "sci": "Passer montanus" + }, + "MX.32801": { + "fin": "punarinta", + "swe": "r\u00f6dhake", + "sci": "Erithacus rubecula" + }, + "MX.36366": { + "fin": "punatulkku", + "swe": "domherre", + "sci": "Pyrrhula pyrrhula" + }, + "MX.33117": { + "fin": "r\u00e4k\u00e4ttirastas", + "swe": "bj\u00f6rktrast", + "sci": "Turdus pilaris" + }, + "MX.27911": { + "fin": "sepelkyyhky", + "swe": "ringduva", + "sci": "Columba palumbus" + }, + "MX.25860": { + "fin": "silkkiuikku", + "swe": "sk\u00e4ggdopping", + "sci": "Podiceps cristatus" + }, + "MX.26373": { + "fin": "sinisorsa", + "swe": "gr\u00e4sand", + "sci": "Anas platyrhynchos" + }, + "MX.34574": { + "fin": "sinitiainen", + "swe": "bl\u00e5mes", + "sci": "Cyanistes caeruleus" + }, + "MX.34567": { + "fin": "talitiainen", + "swe": "talgoxe", + "sci": "Parus major" + }, + "MX.26926": { + "fin": "teeri", + "swe": "orre", + "sci": "Tetrao tetrix" + }, + "MX.26435": { + "fin": "telkk\u00e4", + "swe": "knipa", + "sci": "Bucephala clangula" + }, + "MX.29324": { + "fin": "tervap\u00e4\u00e4sky", + "swe": "tornseglare", + "sci": "Apus apus" + }, + "MX.36306": { + "fin": "tikli", + "swe": "steglits", + "sci": "Carduelis carduelis" + }, + "MX.32608": { + "fin": "tilhi", + "swe": "sidensvans\u00a0", + "sci": "Bombycilla garrulus" + }, + "MX.27527": { + "fin": "t\u00f6yht\u00f6hyypp\u00e4", + "swe": "tofsvipa", + "sci": "Vanellus vanellus" + }, + "MX.26299": { + "fin": "valkoposkihanhi", + "swe": "vitkindad g\u00e5s", + "sci": "Branta leucopsis" + }, + "MX.73566": { + "fin": "varis", + "swe": "kr\u00e5ka", + "sci": "Corvus corone" + }, + "MX.36573": { + "fin": "varpunen", + "swe": "gr\u00e5sparv", + "sci": "Passer domesticus" + }, + "MX.32183": { + "fin": "v\u00e4st\u00e4r\u00e4kki", + "swe": "s\u00e4des\u00e4rla", + "sci": "Motacilla alba" + }, + "MX.36283": { + "fin": "viherpeippo", + "swe": "gr\u00f6nfink", + "sci": "Carduelis chloris" + }, + "MX.36287": { + "fin": "vihervarpunen", + "swe": "gr\u00f6nsiska", + "sci": "Carduelis spinus" + }, + "MX.37641": { + "fin": "kyy", + "swe": "huggorm", + "sci": "Vipera berus", + "heading": "Matelijat ja sammakkoel\u00e4imet" + }, + "MX.37639": { + "fin": "rantak\u00e4\u00e4rme", + "swe": "vanlig snok", + "sci": "Natrix natrix" + }, + "MX.37626": { + "fin": "rupikonna", + "swe": "vanlig padda", + "sci": "Bufo bufo" + }, + "MX.37620": { + "fin": "ruskosammakot", + "swe": "", + "sci": "Rana" + }, + "MX.37635": { + "fin": "sisilisko", + "swe": "skogs\u00f6dla", + "sci": "Zootoca vivipara" + }, + "MX.52830": { + "fin": "lehtokotilo", + "swe": "", + "sci": "Arianta arbustorum", + "heading": "Muut selk\u00e4rangattomat" + }, + "MX.232411": { + "fin": "lierot", + "swe": "", + "sci": "Lumbricidae" + }, + "MX.213793": { + "fin": "maasiirat", + "swe": "", + "sci": "Oniscidea" + }, + "MX.52802": { + "fin": "mets\u00e4etana", + "swe": "", + "sci": "Arion fuscus" + }, + "MX.52810": { + "fin": "pensaskotilo", + "swe": "", + "sci": "Fruticicola fruticum" + }, + "MX.212392": { + "fin": "sinisimpukka", + "swe": "bl\u00e5mussla", + "sci": "Mytilus trossulus" + }, + "MX.211495": { + "fin": "tuhatjalkaiset", + "swe": "m\u00e5ngfotingar", + "sci": "Myriapoda" + }, + "MX.47503": { + "fin": "hirvi", + "swe": "\u00e4lg", + "sci": "Alces alces", + "heading": "Nis\u00e4kk\u00e4\u00e4t" + }, + "MX.46587": { + "fin": "kettu", + "swe": "r\u00f6dr\u00e4v", + "sci": "Vulpes vulpes" + }, + "MX.50471": { + "fin": "lepakot", + "swe": "fladderm\u00f6ss", + "sci": "Chiroptera" + }, + "MX.48243": { + "fin": "liito-orava", + "swe": "flygekorre", + "sci": "Pteromys volans" + }, + "MX.48469": { + "fin": "mets\u00e4hiiri", + "swe": "st\u00f6rre skogsmus", + "sci": "Apodemus flavicollis" + }, + "MX.50106": { + "fin": "mets\u00e4j\u00e4nis", + "swe": "skogshare", + "sci": "Lepus timidus" + }, + "MX.47507": { + "fin": "mets\u00e4kauris", + "swe": "r\u00e5djur", + "sci": "Capreolus capreolus" + }, + "MX.48745": { + "fin": "mets\u00e4myyr\u00e4", + "swe": "skogssork", + "sci": "Myodes glareolus" + }, + "MX.48089": { + "fin": "orava", + "swe": "ekorre", + "sci": "Sciurus vulgaris" + }, + "MX.50515": { + "fin": "p\u00e4\u00e4st\u00e4iset", + "swe": "vanlig n\u00e4bbmus", + "sci": "Soricidae" + }, + "MX.47636": { + "fin": "poro", + "swe": "", + "sci": "Rangifer tarandus" + }, + "MX.49649": { + "fin": "rotta", + "swe": "brunr\u00e5tta", + "sci": "Rattus norvegicus" + }, + "MX.50386": { + "fin": "rusakko", + "swe": "f\u00e4lthare", + "sci": "Lepus europaeus" + }, + "MX.47169": { + "fin": "saukko", + "swe": "utter", + "sci": "Lutra lutra" + }, + "MX.44990": { + "fin": "siili", + "swe": "igelkott", + "sci": "Erinaceus europaeus" + }, + "MX.47629": { + "fin": "valkoh\u00e4nt\u00e4kauris", + "swe": "vitsvanshjort", + "sci": "Odocoileus virginianus" + }, + "MX.72694": { + "fin": "haaparousku", + "swe": "skogsriska", + "sci": "Lactarius trivialis", + "heading": "Sienet" + }, + "MX.66900": { + "fin": "haavankeltaj\u00e4k\u00e4l\u00e4", + "swe": "v\u00e4gglav", + "sci": "Xanthoria parietina" + }, + "MX.65567": { + "fin": "haavanl\u00e4isk\u00e4j\u00e4k\u00e4l\u00e4", + "swe": "blemlav", + "sci": "Phlyctis argena" + }, + "MX.65613": { + "fin": "harmaar\u00f6yhel\u00f6", + "swe": "n\u00e4verlav", + "sci": "Platismatia glauca" + }, + "MX.72563": { + "fin": "herkkutatti", + "swe": "stensopp", + "sci": "Boletus edulis" + }, + "MX.67626": { + "fin": "isohirvenj\u00e4k\u00e4l\u00e4", + "swe": "islandslav", + "sci": "Cetraria islandica subsp. islandica" + }, + "MX.66364": { + "fin": "isorustoj\u00e4k\u00e4l\u00e4", + "swe": "brosklav", + "sci": "Ramalina fraxinea" + }, + "MX.73235": { + "fin": "kangashapero", + "swe": "tegelkremla", + "sci": "Russula decolorans" + }, + "MX.235909": { + "fin": "k\u00e4ns\u00e4tuhkelo", + "swe": "v\u00e5rtig r\u00f6ksvamp", + "sci": "Lycoperdon perlatum" + }, + "MX.205931": { + "fin": "kantok\u00e4\u00e4p\u00e4", + "swe": "klibbticka", + "sci": "Fomitopsis pinicola" + }, + "MX.72276": { + "fin": "karvarousku", + "swe": "sk\u00e4ggriska", + "sci": "Lactarius torminosus" + }, + "MX.73001": { + "fin": "keltahapero", + "swe": "gulkremla", + "sci": "Russula claroflava" + }, + "MX.66403": { + "fin": "keltakarttaj\u00e4k\u00e4l\u00e4", + "swe": "kartlav", + "sci": "Rhizocarpon geographicum" + }, + "MX.66887": { + "fin": "keltar\u00f6yhel\u00f6", + "swe": "granlav", + "sci": "Vulpicida pinastri" + }, + "MX.205509": { + "fin": "keltasarvikka", + "swe": "gullhorn", + "sci": "Calocera viscosa" + }, + "MX.205511": { + "fin": "keltavahvero", + "swe": "kantarell", + "sci": "Cantharellus cibarius" + }, + "MX.5081105": { + "fin": "korvasieni", + "swe": "stenmurkla", + "sci": "Gyromitra esculenta" + }, + "MX.205395": { + "fin": "lampaank\u00e4\u00e4p\u00e4", + "swe": "f\u00e5rticka", + "sci": "Albatrellus ovinus" + }, + "MX.72660": { + "fin": "limanuljaska", + "swe": "citronslemskivling", + "sci": "Gomphidius glutinosus" + }, + "MX.205598": { + "fin": "mustatorvisieni", + "swe": "svart trumpetsvamp", + "sci": "Craterellus cornucopioides" + }, + "MX.67212": { + "fin": "naavat", + "swe": "sk\u00e4gglavar", + "sci": "Usnea" + }, + "MX.206058": { + "fin": "pakurik\u00e4\u00e4p\u00e4", + "swe": "spr\u00e4ngticka", + "sci": "Inonotus obliquus" + }, + "MX.65104": { + "fin": "palleroporonj\u00e4k\u00e4l\u00e4", + "swe": "f\u00f6nsterlav", + "sci": "Cladonia stellaris" + }, + "MX.205773": { + "fin": "p\u00f6kkel\u00f6k\u00e4\u00e4p\u00e4", + "swe": "bj\u00f6rkticka", + "sci": "Piptoporus betulinus" + }, + "MX.73056": { + "fin": "punak\u00e4rp\u00e4ssieni", + "swe": "r\u00f6d flugsvamp", + "sci": "Amanita muscaria" + }, + "MX.5102924": { + "fin": "punikkitatit", + "swe": "tegelsopp agg.", + "sci": "Leccinum versipelle group." + }, + "MX.66291": { + "fin": "raidanisokarve", + "swe": "skrynkellav", + "sci": "Parmelia sulcata" + }, + "MX.205932": { + "fin": "rusokantok\u00e4\u00e4p\u00e4", + "swe": "rosenticka", + "sci": "Fomitopsis rosea" + }, + "MX.65804": { + "fin": "sormipaisukarve", + "swe": "bl\u00e5slav", + "sci": "Hypogymnia physodes" + }, + "MX.73119": { + "fin": "suippumyrkkyseitikki", + "swe": "toppig giftspindling", + "sci": "Cortinarius rubellus" + }, + "MX.73330": { + "fin": "suomumustesieni", + "swe": "fj\u00e4llig bl\u00e4cksvamp", + "sci": "Coprinus comatus" + }, + "MX.205515": { + "fin": "suppilovahvero", + "swe": "trattkantarell", + "sci": "Craterellus tubaeformis" + }, + "MX.67279": { + "fin": "tummalupot", + "swe": "tagellavar", + "sci": "Bryoria" + }, + "MX.65724": { + "fin": "valkohankaj\u00e4k\u00e4l\u00e4", + "swe": "sl\u00e5nlav", + "sci": "Evernia prunastri" + }, + "MX.72561": { + "fin": "valkok\u00e4rp\u00e4ssieni", + "swe": "vit flugsvamp", + "sci": "Amanita virosa" + } +} \ No newline at end of file diff --git a/app/helpers/common_helpers.py b/app/helpers/common_helpers.py index 8361e8f..7d68b87 100644 --- a/app/helpers/common_helpers.py +++ b/app/helpers/common_helpers.py @@ -170,13 +170,13 @@ def taxon_file_exists(taxon_file_id): Returns: bool: True if the file exists, False otherwise. + + Todo: This only checks basic file, because additional file is not alwats used. Should check both when they are needed """ filename = "./data/" + taxon_file_id + ".json" basic_file = os.path.isfile(filename) - filename = "./data/" + taxon_file_id + "_all.json" - additional_file = os.path.isfile(filename) - if basic_file and additional_file: + if basic_file: return True return False @@ -243,7 +243,9 @@ def get_participation(challenge_id, participation_id): return participation[0] -def make_taxa_html(participations, taxon_id, taxa_json = ""): +def make_taxa_html(participations, challenge_data, taxa_json = ""): + taxon_id = challenge_data["taxon"] + print(challenge_data) ''' participations -variable contains data like this: [ @@ -280,10 +282,19 @@ def make_taxa_html(participations, taxon_id, taxa_json = ""): # taxa from json to dict my_taxa = dict() + + # If participant has own taxa, load them here if taxa_json: my_taxa = json.loads(taxa_json) - - taxon_names = load_taxon_file(taxon_id + "_all") + + # Ordinary challenger: all taxa file + if challenge_data["type"] == "challenge100": + taxon_names = load_taxon_file(taxon_id + "_all") + # School challenge: only basic taxa file + elif challenge_data["type"] == "school100": + taxon_names = load_taxon_file(taxon_id) + else: + raise ValueError("Unknown challenge type") number_of_participations = len(participations) diff --git a/app/main.py b/app/main.py index 925e259..1647433 100644 --- a/app/main.py +++ b/app/main.py @@ -308,3 +308,4 @@ def health(): def favicon(): return send_from_directory(app.static_folder, 'favicon.ico', mimetype='image/vnd.microsoft.icon') + diff --git a/app/static/taxa/koulut_2024.json b/app/static/taxa/koulut_2024.json new file mode 100644 index 0000000..6451e70 --- /dev/null +++ b/app/static/taxa/koulut_2024.json @@ -0,0 +1,1260 @@ +{ + "MX.60910": { + "fin": "amiraali", + "swe": "amiral", + "sci": "Vanessa atalanta", + "heading": "Hy\u00f6nteiset ja h\u00e4m\u00e4h\u00e4kkiel\u00e4imet" + }, + "MX.204051": { + "fin": "ampiaiset", + "swe": "getingar", + "sci": "Vespidae" + }, + "MX.60767": { + "fin": "auroraperhonen", + "swe": "aurorafj\u00e4ril", + "sci": "Anthocharis cardamines" + }, + "MX.43204": { + "fin": "hein\u00e4sirkat", + "swe": "gr\u00e4shoppor", + "sci": "Acrididae" + }, + "MX.43169": { + "fin": "hepokatit", + "swe": "v\u00e5rtbitare\u00a0", + "sci": "Tettigoniidae" + }, + "MX.60925": { + "fin": "herukkaperhonen", + "swe": "vinb\u00e4rsfuks", + "sci": "Polygonia c-album" + }, + "MX.281757": { + "fin": "hirvik\u00e4rp\u00e4nen", + "swe": "\u00e4lgfluga", + "sci": "Lipoptena cervi" + }, + "MX.60870": { + "fin": "hopeat\u00e4pl\u00e4t", + "swe": "p\u00e4rlemorfj\u00e4rilar", + "sci": "Argynnini" + }, + "MX.253661": { + "fin": "hyttyset", + "swe": "stickmyggor", + "sci": "Culicidae" + }, + "MX.206454": { + "fin": "isopihtih\u00e4nt\u00e4", + "swe": "st\u00f6rre tvestj\u00e4rt", + "sci": "Forficula auricularia" + }, + "MX.230555": { + "fin": "kaalilude", + "swe": "rapssugare", + "sci": "Eurydema oleracea" + }, + "MX.60811": { + "fin": "kangasperhonen", + "swe": "gr\u00f6nsnabbvinge", + "sci": "Callophrys rubi" + }, + "MX.5077970": { + "fin": "kartanokimalaisen kaltaiset", + "swe": "hushumla liknande arter", + "sci": "" + }, + "MX.60908": { + "fin": "karttaperhonen", + "swe": "kartfj\u00e4ril", + "sci": "Araschnia levana" + }, + "MX.204324": { + "fin": "kekomuurahaiset", + "swe": "stackmyror", + "sci": "Formica (Formica)" + }, + "MX.192436": { + "fin": "kiiltomato", + "swe": "lysmask", + "sci": "Lampyris noctiluca" + }, + "MX.191919": { + "fin": "kimalaiskuoriainen", + "swe": "humlebagge", + "sci": "Trichius fasciatus" + }, + "MX.5077969": { + "fin": "kivikkokimalaisen kaltaiset", + "swe": "stenhumla liknande arter", + "sci": "" + }, + "MX.60813": { + "fin": "kultasiivet", + "swe": "guldvingar", + "sci": "Lycaena" + }, + "MX.60778": { + "fin": "lanttuperhonen", + "swe": "rapsfj\u00e4ril", + "sci": "Pieris napi" + }, + "MX.60749": { + "fin": "lauhahiipij\u00e4", + "swe": "mindre t\u00e5telsmygare", + "sci": "Thymelicus lineola" + }, + "MX.70199": { + "fin": "lukit", + "swe": "lockespindlar", + "sci": "Opiliones" + }, + "MX.253659": { + "fin": "m\u00e4k\u00e4r\u00e4t", + "swe": "knott", + "sci": "Simuliidae" + }, + "MX.5077966": { + "fin": "mantukimalaisen kaltaiset", + "swe": "ljus jordhumla liknande arter", + "sci": "" + }, + "MX.192205": { + "fin": "mets\u00e4sitti\u00e4inen", + "swe": "skogstordyvel", + "sci": "Anoplotrupes stercorosus" + }, + "MX.60914": { + "fin": "neitoperhonen", + "swe": "p\u00e5f\u00e5gel\u00f6ga", + "sci": "Aglais io" + }, + "MX.195093": { + "fin": "nelivy\u00f6j\u00e4\u00e4r\u00e4", + "swe": "fyrbandad blombock", + "sci": "Leptura quadrifasciata" + }, + "MX.60916": { + "fin": "nokkosperhonen", + "swe": "n\u00e4sselfj\u00e4ril", + "sci": "Aglais urticae" + }, + "MX.60911": { + "fin": "ohdakeperhonen", + "swe": "tistelfj\u00e4ril", + "sci": "Vanessa cardui" + }, + "MX.5077971": { + "fin": "peltokimalaisen kaltaiset", + "swe": "\u00e5kerhumla liknande arter", + "sci": "" + }, + "MX.290384": { + "fin": "pihaharsokorento", + "swe": "guld\u00f6gonsl\u00e4nda", + "sci": "Chrysoperla carnea" + }, + "MX.60755": { + "fin": "piippopaksup\u00e4\u00e4", + "swe": "\u00e4ngssmygare", + "sci": "Ochlodes sylvanus" + }, + "MX.196317": { + "fin": "putkik\u00e4rs\u00e4k\u00e4s", + "swe": "hundk\u00e4xvivel", + "sci": "Lixus iridis" + }, + "MX.202370": { + "fin": "puutiainen", + "swe": "vanlig f\u00e4sting", + "sci": "Ixodes ricinus" + }, + "MX.230561": { + "fin": "pyjamalude", + "swe": "strimlus", + "sci": "Graphosoma italicum" + }, + "MX.201925": { + "fin": "rantah\u00e4m\u00e4h\u00e4kki", + "swe": "", + "sci": "Dolomedes fimbriatus" + }, + "MX.60730": { + "fin": "ritariperhonen", + "swe": "makaonfj\u00e4ril", + "sci": "Papilio machaon" + }, + "MX.194730": { + "fin": "sarvijaakko", + "swe": "timmerman", + "sci": "Acanthocinus aedilis" + }, + "MX.194380": { + "fin": "seitsenpistepirkko", + "swe": "sjuprickig nyckelpiga", + "sci": "Coccinella septempunctata" + }, + "MX.60822": { + "fin": "sinisiivet", + "swe": "bl\u00e5vingar", + "sci": "Polyommatini" + }, + "MX.60794": { + "fin": "sitruunaperhonen", + "swe": "citronfj\u00e4ril", + "sci": "Gonepteryx rhamni" + }, + "MX.231375": { + "fin": "sokeritoukka", + "swe": "silverfisk", + "sci": "Lepisma saccharinum" + }, + "MX.1": { + "fin": "sudenkorennot", + "swe": "trollsl\u00e4ndor", + "sci": "Odonata" + }, + "MX.60791": { + "fin": "suokeltaperhonen", + "swe": "svavelgul h\u00f6fj\u00e4ril", + "sci": "Colias palaeno" + }, + "MX.60920": { + "fin": "suruvaippa", + "swe": "sorgmantel", + "sci": "Nymphalis antiopa" + }, + "MX.204772": { + "fin": "tarhamehil\u00e4inen", + "swe": "honungsbi", + "sci": "Apis mellifera" + }, + "MX.60970": { + "fin": "tesmaperhonen", + "swe": "luktgr\u00e4sfj\u00e4ril", + "sci": "Aphantopus hyperantus" + }, + "MX.53675": { + "fin": "torakat", + "swe": "kackerlackor", + "sci": "Blattodea" + }, + "MX.58998": { + "fin": "tuomenkehr\u00e4\u00e4j\u00e4koi", + "swe": "h\u00e4ggspinnmal", + "sci": "Yponomeuta evonymella" + }, + "MX.189609": { + "fin": "turkkilot", + "swe": "d\u00f6dgr\u00e4vare", + "sci": "Nicrophorus" + }, + "MX.229690": { + "fin": "vesimittarit", + "swe": "", + "sci": "Gerridae" + }, + "MX.230533": { + "fin": "viherlude", + "swe": "gr\u00f6n b\u00e4rfis", + "sci": "Palomena prasina" + }, + "MX.53219": { + "fin": "ahven", + "swe": "abborre", + "sci": "Perca fluviatilis", + "heading": "Kalat" + }, + "MX.53118": { + "fin": "hauki", + "swe": "g\u00e4dda", + "sci": "Esox lucius" + }, + "MX.53198": { + "fin": "kolmipiikki", + "swe": "storspigg", + "sci": "Gasterosteus aculeatus" + }, + "MX.53145": { + "fin": "s\u00e4rki", + "swe": "m\u00f6rt", + "sci": "Rutilus rutilus" + }, + "MX.39761": { + "fin": "ahokissank\u00e4p\u00e4l\u00e4", + "swe": "kattfot", + "sci": "Antennaria dioica", + "heading": "Kasvit ja lev\u00e4t" + }, + "MX.38869": { + "fin": "ahomansikka", + "swe": "smultron", + "sci": "Fragaria vesca" + }, + "MX.39833": { + "fin": "ahop\u00e4iv\u00e4nkakkara", + "swe": "pr\u00e4stkrage", + "sci": "Leucanthemum vulgare" + }, + "MX.37999": { + "fin": "hieskoivu", + "swe": "glasbj\u00f6rk", + "sci": "Betula pubescens" + }, + "MX.38972": { + "fin": "hiirenvirna", + "swe": "kr\u00e5kvicker", + "sci": "Vicia cracca" + }, + "MX.39959": { + "fin": "huopavoikeltano", + "swe": "gr\u00e5fibbla", + "sci": "Pilosella officinarum" + }, + "MX.37984": { + "fin": "isonokkonen", + "swe": "br\u00e4nn\u00e4ssla", + "sci": "Urtica dioica" + }, + "MX.40639": { + "fin": "j\u00e4rviruoko", + "swe": "vass", + "sci": "Phragmites australis" + }, + "MX.39158": { + "fin": "j\u00e4ttipalsami", + "swe": "j\u00e4ttebalsamin", + "sci": "Impatiens glandulifera" + }, + "MX.39130": { + "fin": "k\u00e4enkaali", + "swe": "harsyra", + "sci": "Oxalis acetosella" + }, + "MX.38598": { + "fin": "kanerva", + "swe": "ljung", + "sci": "Calluna vulgaris" + }, + "MX.37826": { + "fin": "kataja", + "swe": "en", + "sci": "Juniperus communis" + }, + "MX.39589": { + "fin": "keltakannusruoho", + "swe": "gulsporre", + "sci": "Linaria vulgaris" + }, + "MX.39292": { + "fin": "keltamatara", + "swe": "gulm\u00e5ra", + "sci": "Galium verum" + }, + "MX.37962": { + "fin": "keltamo", + "swe": "skel\u00f6rt", + "sci": "Chelidonium majus" + }, + "MX.38844": { + "fin": "ketohanhikki", + "swe": "g\u00e5s\u00f6rt", + "sci": "Argentina anserina" + }, + "MX.38150": { + "fin": "ketoneilikka", + "swe": "backnejlika", + "sci": "Dianthus deltoides" + }, + "MX.39368": { + "fin": "ketoruusuruoho", + "swe": "\u00e5kerv\u00e4dd", + "sci": "Knautia arvensis" + }, + "MX.39970": { + "fin": "kielo", + "swe": "liljekonvalj", + "sci": "Convallaria majalis" + }, + "MX.39711": { + "fin": "kissankello", + "swe": "liten bl\u00e5klocka", + "sci": "Campanula rotundifolia" + }, + "MX.40488": { + "fin": "koiranhein\u00e4", + "swe": "hund\u00e4xing", + "sci": "Dactylis glomerata" + }, + "MX.39185": { + "fin": "koiranputki", + "swe": "hundk\u00e4x", + "sci": "Anthriscus sylvestris" + }, + "MX.38950": { + "fin": "komealupiini", + "swe": "blomsterlupin", + "sci": "Lupinus polyphyllus" + }, + "MX.37713": { + "fin": "kortteet", + "swe": "fr\u00e4knar", + "sci": "Equisetum" + }, + "MX.37857": { + "fin": "kullero", + "swe": "sm\u00f6rbollar", + "sci": "Trollius europaeus" + }, + "MX.39727": { + "fin": "kultapiisku", + "swe": "gullris", + "sci": "Solidago virgaurea" + }, + "MX.38815": { + "fin": "kurtturuusu", + "swe": "vresros", + "sci": "Rosa rugosa" + }, + "MX.38836": { + "fin": "kyl\u00e4kellukka", + "swe": "nejlikrot\u00a0", + "sci": "Geum urbanum" + }, + "MX.43979": { + "fin": "lehtoruusukesammal", + "swe": "rosmossa", + "sci": "Rhodobryum roseum" + }, + "MX.39847": { + "fin": "leskenlehti", + "swe": "h\u00e4sthov", + "sci": "Tussilago farfara" + }, + "MX.37683": { + "fin": "liekokasvit", + "swe": "lummerv\u00e4xter", + "sci": "Lycopodiaceae" + }, + "MX.39088": { + "fin": "maitohorsma", + "swe": "mj\u00f6lke", + "sci": "Chamaenerion angustifolium" + }, + "MX.38795": { + "fin": "mesiangervo", + "swe": "\u00e4lggr\u00e4s", + "sci": "Filipendula ulmaria" + }, + "MX.38590": { + "fin": "mets\u00e4haapa", + "swe": "asp", + "sci": "Populus tremula" + }, + "MX.43668": { + "fin": "mets\u00e4kerrossammal", + "swe": "husmossa", + "sci": "Hylocomium splendens" + }, + "MX.37812": { + "fin": "mets\u00e4kuusi", + "swe": "gran", + "sci": "Picea abies" + }, + "MX.37819": { + "fin": "mets\u00e4m\u00e4nty", + "swe": "tall", + "sci": "Pinus sylvestris" + }, + "MX.38676": { + "fin": "mets\u00e4t\u00e4hti", + "swe": "skogsstj\u00e4rna", + "sci": "Lysimachia europaea" + }, + "MX.37990": { + "fin": "mets\u00e4tammi", + "swe": "skogsek", + "sci": "Quercus robur" + }, + "MX.39122": { + "fin": "mets\u00e4vaahtera", + "swe": "skogsl\u00f6nn", + "sci": "Acer platanoides" + }, + "MX.38622": { + "fin": "mustikka", + "swe": "bl\u00e5b\u00e4r", + "sci": "Vaccinium myrtillus" + }, + "MX.38797": { + "fin": "muurain", + "swe": "hjortron", + "sci": "Rubus chamaemorus" + }, + "MX.39500": { + "fin": "niittyhumala", + "swe": "brun\u00f6rt", + "sci": "Prunella vulgaris" + }, + "MX.39809": { + "fin": "ojak\u00e4rs\u00e4m\u00f6", + "swe": "nys\u00f6rt", + "sci": "Achillea ptarmica" + }, + "MX.38834": { + "fin": "ojakellukka", + "swe": "humleblomster", + "sci": "Geum rivale" + }, + "MX.39976": { + "fin": "oravanmarja", + "swe": "ekorrb\u00e4r", + "sci": "Maianthemum bifolium" + }, + "MX.40187": { + "fin": "osmank\u00e4\u00e4mit", + "swe": "kaveldun", + "sci": "Typha" + }, + "MX.43502": { + "fin": "palmusammal", + "swe": "palmmossa", + "sci": "Climacium dendroides" + }, + "MX.38804": { + "fin": "vadelma", + "swe": "skogshallon", + "sci": "Rubus idaeus" + }, + "MX.39823": { + "fin": "peltosaunio", + "swe": "baldersbr\u00e5\u00a0", + "sci": "Tripleurospermum inodorum" + }, + "MX.39830": { + "fin": "pietaryrtti", + "swe": "renfana", + "sci": "Tanacetum vulgare" + }, + "MX.39673": { + "fin": "piharatamo", + "swe": "groblad", + "sci": "Plantago major" + }, + "MX.39827": { + "fin": "pihasaunio", + "swe": "gatkamomill", + "sci": "Matricaria discoidea" + }, + "MX.38048": { + "fin": "pihat\u00e4htim\u00f6", + "swe": "v\u00e5tarv", + "sci": "Stellaria media" + }, + "MX.4972544": { + "fin": "pihatatar (pihatatarryhm\u00e4)", + "swe": "", + "sci": "Polygonum aviculare -ryhm\u00e4" + }, + "MX.38910": { + "fin": "pihlaja", + "swe": "r\u00f6nn", + "sci": "Sorbus aucuparia" + }, + "MX.39835": { + "fin": "pujo", + "swe": "gr\u00e5bo", + "sci": "Artemisia vulgaris" + }, + "MX.38131": { + "fin": "puna-ailakki", + "swe": "r\u00f6dbl\u00e4ra", + "sci": "Silene dioica" + }, + "MX.38620": { + "fin": "puolukka", + "swe": "lingon", + "sci": "Vaccinium vitis-idaea" + }, + "MX.38563": { + "fin": "raita", + "swe": "s\u00e4lg", + "sci": "Salix caprea" + }, + "MX.206710": { + "fin": "rakkohauru (rakkolev\u00e4)", + "swe": "bl\u00e5st\u00e5ng", + "sci": "Fucus vesiculosus" + }, + "MX.37993": { + "fin": "rauduskoivu", + "swe": "v\u00e5rtbj\u00f6rk", + "sci": "Betula pendula" + }, + "MX.37863": { + "fin": "rentukka", + "swe": "kabbleka", + "sci": "Caltha palustris" + }, + "MX.39166": { + "fin": "ruohokanukka", + "swe": "h\u00f6nsb\u00e4r", + "sci": "Cornus suecica" + }, + "MX.4994055": { + "fin": "sananjalka", + "swe": "\u00f6rnbr\u00e4ken", + "sci": "Pteridium aquilinum" + }, + "MX.43901": { + "fin": "sein\u00e4sammal", + "swe": "v\u00e4ggmossa", + "sci": "Pleurozium schreberi" + }, + "MX.39871": { + "fin": "seittitakiainen", + "swe": "ullkardborre", + "sci": "Arctium tomentosum" + }, + "MX.39812": { + "fin": "siank\u00e4rs\u00e4m\u00f6", + "swe": "r\u00f6llika", + "sci": "Achillea millefolium" + }, + "MX.43956": { + "fin": "sulkasammal", + "swe": "kammossa", + "sci": "Ptilium crista-castrensis" + }, + "MX.38614": { + "fin": "suokukka", + "swe": "rosling", + "sci": "Andromeda polifolia" + }, + "MX.38605": { + "fin": "suopursu", + "swe": "skvattram", + "sci": "Rhododendron tomentosum" + }, + "MX.39038": { + "fin": "valkoapila", + "swe": "vitkl\u00f6ver", + "sci": "Trifolium repens" + }, + "MX.39467": { + "fin": "valkopeippi", + "swe": "vitplister", + "sci": "Lamium album" + }, + "MX.37879": { + "fin": "valkovuokko", + "swe": "vitsippa", + "sci": "Anemone nemorosa" + }, + "MX.39343": { + "fin": "vanamo", + "swe": "linnea", + "sci": "Linnaea borealis" + }, + "MX.38646": { + "fin": "variksenmarja", + "swe": "kr\u00e5kb\u00e4r", + "sci": "Empetrum nigrum" + }, + "MX.213277": { + "fin": "viherahdinparta", + "swe": "", + "sci": "Cladophora glomerata" + }, + "MX.42419": { + "fin": "voikukat", + "swe": "maskrosor", + "sci": "Taraxacum" + }, + "MX.39201": { + "fin": "vuohenputki", + "swe": "kirsk\u00e5l", + "sci": "Aegopodium podagraria" + }, + "MX.26419": { + "fin": "haahka", + "swe": "ejder", + "sci": "Somateria mollissima", + "heading": "Linnut" + }, + "MX.26360": { + "fin": "haapana", + "swe": "bl\u00e4sand", + "sci": "Anas penelope" + }, + "MX.32132": { + "fin": "haarap\u00e4\u00e4sky", + "swe": "ladusvala", + "sci": "Hirundo rustica" + }, + "MX.37122": { + "fin": "harakka", + "swe": "skata", + "sci": "Pica pica" + }, + "MX.26094": { + "fin": "harmaahaikara", + "swe": "gr\u00e5h\u00e4ger", + "sci": "Ardea cinerea" + }, + "MX.27750": { + "fin": "harmaalokki", + "swe": "gr\u00e5trut", + "sci": "Larus argentatus" + }, + "MX.34535": { + "fin": "h\u00f6m\u00f6tiainen", + "swe": "talltita", + "sci": "Poecile montanus" + }, + "MX.26442": { + "fin": "isokoskelo", + "swe": "storskrake", + "sci": "Mergus merganser" + }, + "MX.28715": { + "fin": "k\u00e4ki", + "swe": "g\u00f6k", + "sci": "Cuculus canorus" + }, + "MX.27748": { + "fin": "kalalokki", + "swe": "fiskm\u00e5s", + "sci": "Larus canus" + }, + "MX.30443": { + "fin": "k\u00e4pytikka", + "swe": "st\u00f6rre hackspett", + "sci": "Dendrocopos major" + }, + "MX.35146": { + "fin": "keltasirkku", + "swe": "gulsparv", + "sci": "Emberiza citrinella" + }, + "MX.200535": { + "fin": "kesykyyhky", + "swe": "tamduva", + "sci": "Columba livia domestica" + }, + "MX.34021": { + "fin": "kirjosieppo", + "swe": "svartvit flugsnappare", + "sci": "Ficedula hypoleuca" + }, + "MX.37178": { + "fin": "korppi", + "swe": "korp", + "sci": "Corvus corax" + }, + "MX.36817": { + "fin": "kottarainen", + "swe": "stare", + "sci": "Sturnus vulgaris" + }, + "MX.25837": { + "fin": "kuikka", + "swe": "storlom", + "sci": "Gavia arctica" + }, + "MX.27613": { + "fin": "kuovi", + "swe": "storspov", + "sci": "Numenius arquata" + }, + "MX.27214": { + "fin": "kurki", + "swe": "trana", + "sci": "Grus grus" + }, + "MX.26277": { + "fin": "kyhmyjoutsen", + "swe": "kn\u00f6lsvan", + "sci": "Cygnus olor" + }, + "MX.26280": { + "fin": "laulujoutsen", + "swe": "s\u00e5ngsvan", + "sci": "Cygnus cygnus" + }, + "MX.27459": { + "fin": "meriharakka", + "swe": "strandskata", + "sci": "Haematopus ostralegus" + }, + "MX.26530": { + "fin": "merikotka", + "swe": "havs\u00f6rn", + "sci": "Haliaeetus albicilla" + }, + "MX.26043": { + "fin": "merimetso", + "swe": "storskarv", + "sci": "Phalacrocorax carbo" + }, + "MX.33106": { + "fin": "mustarastas", + "swe": "koltrast", + "sci": "Turdus merula" + }, + "MX.37142": { + "fin": "naakka", + "swe": "kaja", + "sci": "Corvus monedula" + }, + "MX.27774": { + "fin": "naurulokki", + "swe": "skrattm\u00e5s", + "sci": "Larus ridibundus" + }, + "MX.27381": { + "fin": "nokikana", + "swe": "soth\u00f6na", + "sci": "Fulica atra" + }, + "MX.33873": { + "fin": "pajulintu", + "swe": "l\u00f6vs\u00e5ngare", + "sci": "Phylloscopus trochilus" + }, + "MX.30504": { + "fin": "palok\u00e4rki", + "swe": "spillkr\u00e5ka", + "sci": "Dryocopus martius" + }, + "MX.36237": { + "fin": "peippo", + "swe": "bofink", + "sci": "Fringilla coelebs" + }, + "MX.36589": { + "fin": "pikkuvarpunen", + "swe": "pilfink", + "sci": "Passer montanus" + }, + "MX.32801": { + "fin": "punarinta", + "swe": "r\u00f6dhake", + "sci": "Erithacus rubecula" + }, + "MX.36366": { + "fin": "punatulkku", + "swe": "domherre", + "sci": "Pyrrhula pyrrhula" + }, + "MX.33117": { + "fin": "r\u00e4k\u00e4ttirastas", + "swe": "bj\u00f6rktrast", + "sci": "Turdus pilaris" + }, + "MX.27911": { + "fin": "sepelkyyhky", + "swe": "ringduva", + "sci": "Columba palumbus" + }, + "MX.25860": { + "fin": "silkkiuikku", + "swe": "sk\u00e4ggdopping", + "sci": "Podiceps cristatus" + }, + "MX.26373": { + "fin": "sinisorsa", + "swe": "gr\u00e4sand", + "sci": "Anas platyrhynchos" + }, + "MX.34574": { + "fin": "sinitiainen", + "swe": "bl\u00e5mes", + "sci": "Cyanistes caeruleus" + }, + "MX.34567": { + "fin": "talitiainen", + "swe": "talgoxe", + "sci": "Parus major" + }, + "MX.26926": { + "fin": "teeri", + "swe": "orre", + "sci": "Tetrao tetrix" + }, + "MX.26435": { + "fin": "telkk\u00e4", + "swe": "knipa", + "sci": "Bucephala clangula" + }, + "MX.29324": { + "fin": "tervap\u00e4\u00e4sky", + "swe": "tornseglare", + "sci": "Apus apus" + }, + "MX.36306": { + "fin": "tikli", + "swe": "steglits", + "sci": "Carduelis carduelis" + }, + "MX.32608": { + "fin": "tilhi", + "swe": "sidensvans\u00a0", + "sci": "Bombycilla garrulus" + }, + "MX.27527": { + "fin": "t\u00f6yht\u00f6hyypp\u00e4", + "swe": "tofsvipa", + "sci": "Vanellus vanellus" + }, + "MX.26299": { + "fin": "valkoposkihanhi", + "swe": "vitkindad g\u00e5s", + "sci": "Branta leucopsis" + }, + "MX.73566": { + "fin": "varis", + "swe": "kr\u00e5ka", + "sci": "Corvus corone" + }, + "MX.36573": { + "fin": "varpunen", + "swe": "gr\u00e5sparv", + "sci": "Passer domesticus" + }, + "MX.32183": { + "fin": "v\u00e4st\u00e4r\u00e4kki", + "swe": "s\u00e4des\u00e4rla", + "sci": "Motacilla alba" + }, + "MX.36283": { + "fin": "viherpeippo", + "swe": "gr\u00f6nfink", + "sci": "Carduelis chloris" + }, + "MX.36287": { + "fin": "vihervarpunen", + "swe": "gr\u00f6nsiska", + "sci": "Carduelis spinus" + }, + "MX.37641": { + "fin": "kyy", + "swe": "huggorm", + "sci": "Vipera berus", + "heading": "Matelijat ja sammakkoel\u00e4imet" + }, + "MX.37639": { + "fin": "rantak\u00e4\u00e4rme", + "swe": "vanlig snok", + "sci": "Natrix natrix" + }, + "MX.37626": { + "fin": "rupikonna", + "swe": "vanlig padda", + "sci": "Bufo bufo" + }, + "MX.37620": { + "fin": "ruskosammakot", + "swe": "", + "sci": "Rana" + }, + "MX.37635": { + "fin": "sisilisko", + "swe": "skogs\u00f6dla", + "sci": "Zootoca vivipara" + }, + "MX.52830": { + "fin": "lehtokotilo", + "swe": "", + "sci": "Arianta arbustorum", + "heading": "Muut selk\u00e4rangattomat" + }, + "MX.232411": { + "fin": "lierot", + "swe": "", + "sci": "Lumbricidae" + }, + "MX.213793": { + "fin": "maasiirat", + "swe": "", + "sci": "Oniscidea" + }, + "MX.52802": { + "fin": "mets\u00e4etana", + "swe": "", + "sci": "Arion fuscus" + }, + "MX.52810": { + "fin": "pensaskotilo", + "swe": "", + "sci": "Fruticicola fruticum" + }, + "MX.212392": { + "fin": "sinisimpukka", + "swe": "bl\u00e5mussla", + "sci": "Mytilus trossulus" + }, + "MX.211495": { + "fin": "tuhatjalkaiset", + "swe": "m\u00e5ngfotingar", + "sci": "Myriapoda" + }, + "MX.47503": { + "fin": "hirvi", + "swe": "\u00e4lg", + "sci": "Alces alces", + "heading": "Nis\u00e4kk\u00e4\u00e4t" + }, + "MX.46587": { + "fin": "kettu", + "swe": "r\u00f6dr\u00e4v", + "sci": "Vulpes vulpes" + }, + "MX.50471": { + "fin": "lepakot", + "swe": "fladderm\u00f6ss", + "sci": "Chiroptera" + }, + "MX.48243": { + "fin": "liito-orava", + "swe": "flygekorre", + "sci": "Pteromys volans" + }, + "MX.48469": { + "fin": "mets\u00e4hiiri", + "swe": "st\u00f6rre skogsmus", + "sci": "Apodemus flavicollis" + }, + "MX.50106": { + "fin": "mets\u00e4j\u00e4nis", + "swe": "skogshare", + "sci": "Lepus timidus" + }, + "MX.47507": { + "fin": "mets\u00e4kauris", + "swe": "r\u00e5djur", + "sci": "Capreolus capreolus" + }, + "MX.48745": { + "fin": "mets\u00e4myyr\u00e4", + "swe": "skogssork", + "sci": "Myodes glareolus" + }, + "MX.48089": { + "fin": "orava", + "swe": "ekorre", + "sci": "Sciurus vulgaris" + }, + "MX.50515": { + "fin": "p\u00e4\u00e4st\u00e4iset", + "swe": "vanlig n\u00e4bbmus", + "sci": "Soricidae" + }, + "MX.47636": { + "fin": "poro", + "swe": "", + "sci": "Rangifer tarandus" + }, + "MX.49649": { + "fin": "rotta", + "swe": "brunr\u00e5tta", + "sci": "Rattus norvegicus" + }, + "MX.50386": { + "fin": "rusakko", + "swe": "f\u00e4lthare", + "sci": "Lepus europaeus" + }, + "MX.47169": { + "fin": "saukko", + "swe": "utter", + "sci": "Lutra lutra" + }, + "MX.44990": { + "fin": "siili", + "swe": "igelkott", + "sci": "Erinaceus europaeus" + }, + "MX.47629": { + "fin": "valkoh\u00e4nt\u00e4kauris", + "swe": "vitsvanshjort", + "sci": "Odocoileus virginianus" + }, + "MX.72694": { + "fin": "haaparousku", + "swe": "skogsriska", + "sci": "Lactarius trivialis", + "heading": "Sienet" + }, + "MX.66900": { + "fin": "haavankeltaj\u00e4k\u00e4l\u00e4", + "swe": "v\u00e4gglav", + "sci": "Xanthoria parietina" + }, + "MX.65567": { + "fin": "haavanl\u00e4isk\u00e4j\u00e4k\u00e4l\u00e4", + "swe": "blemlav", + "sci": "Phlyctis argena" + }, + "MX.65613": { + "fin": "harmaar\u00f6yhel\u00f6", + "swe": "n\u00e4verlav", + "sci": "Platismatia glauca" + }, + "MX.72563": { + "fin": "herkkutatti", + "swe": "stensopp", + "sci": "Boletus edulis" + }, + "MX.67626": { + "fin": "isohirvenj\u00e4k\u00e4l\u00e4", + "swe": "islandslav", + "sci": "Cetraria islandica subsp. islandica" + }, + "MX.66364": { + "fin": "isorustoj\u00e4k\u00e4l\u00e4", + "swe": "brosklav", + "sci": "Ramalina fraxinea" + }, + "MX.73235": { + "fin": "kangashapero", + "swe": "tegelkremla", + "sci": "Russula decolorans" + }, + "MX.235909": { + "fin": "k\u00e4ns\u00e4tuhkelo", + "swe": "v\u00e5rtig r\u00f6ksvamp", + "sci": "Lycoperdon perlatum" + }, + "MX.205931": { + "fin": "kantok\u00e4\u00e4p\u00e4", + "swe": "klibbticka", + "sci": "Fomitopsis pinicola" + }, + "MX.72276": { + "fin": "karvarousku", + "swe": "sk\u00e4ggriska", + "sci": "Lactarius torminosus" + }, + "MX.73001": { + "fin": "keltahapero", + "swe": "gulkremla", + "sci": "Russula claroflava" + }, + "MX.66403": { + "fin": "keltakarttaj\u00e4k\u00e4l\u00e4", + "swe": "kartlav", + "sci": "Rhizocarpon geographicum" + }, + "MX.66887": { + "fin": "keltar\u00f6yhel\u00f6", + "swe": "granlav", + "sci": "Vulpicida pinastri" + }, + "MX.205509": { + "fin": "keltasarvikka", + "swe": "gullhorn", + "sci": "Calocera viscosa" + }, + "MX.205511": { + "fin": "keltavahvero", + "swe": "kantarell", + "sci": "Cantharellus cibarius" + }, + "MX.5081105": { + "fin": "korvasieni", + "swe": "stenmurkla", + "sci": "Gyromitra esculenta" + }, + "MX.205395": { + "fin": "lampaank\u00e4\u00e4p\u00e4", + "swe": "f\u00e5rticka", + "sci": "Albatrellus ovinus" + }, + "MX.72660": { + "fin": "limanuljaska", + "swe": "citronslemskivling", + "sci": "Gomphidius glutinosus" + }, + "MX.205598": { + "fin": "mustatorvisieni", + "swe": "svart trumpetsvamp", + "sci": "Craterellus cornucopioides" + }, + "MX.67212": { + "fin": "naavat", + "swe": "sk\u00e4gglavar", + "sci": "Usnea" + }, + "MX.206058": { + "fin": "pakurik\u00e4\u00e4p\u00e4", + "swe": "spr\u00e4ngticka", + "sci": "Inonotus obliquus" + }, + "MX.65104": { + "fin": "palleroporonj\u00e4k\u00e4l\u00e4", + "swe": "f\u00f6nsterlav", + "sci": "Cladonia stellaris" + }, + "MX.205773": { + "fin": "p\u00f6kkel\u00f6k\u00e4\u00e4p\u00e4", + "swe": "bj\u00f6rkticka", + "sci": "Piptoporus betulinus" + }, + "MX.73056": { + "fin": "punak\u00e4rp\u00e4ssieni", + "swe": "r\u00f6d flugsvamp", + "sci": "Amanita muscaria" + }, + "MX.5102924": { + "fin": "punikkitatit", + "swe": "tegelsopp agg.", + "sci": "Leccinum versipelle group." + }, + "MX.66291": { + "fin": "raidanisokarve", + "swe": "skrynkellav", + "sci": "Parmelia sulcata" + }, + "MX.205932": { + "fin": "rusokantok\u00e4\u00e4p\u00e4", + "swe": "rosenticka", + "sci": "Fomitopsis rosea" + }, + "MX.65804": { + "fin": "sormipaisukarve", + "swe": "bl\u00e5slav", + "sci": "Hypogymnia physodes" + }, + "MX.73119": { + "fin": "suippumyrkkyseitikki", + "swe": "toppig giftspindling", + "sci": "Cortinarius rubellus" + }, + "MX.73330": { + "fin": "suomumustesieni", + "swe": "fj\u00e4llig bl\u00e4cksvamp", + "sci": "Coprinus comatus" + }, + "MX.205515": { + "fin": "suppilovahvero", + "swe": "trattkantarell", + "sci": "Craterellus tubaeformis" + }, + "MX.67279": { + "fin": "tummalupot", + "swe": "tagellavar", + "sci": "Bryoria" + }, + "MX.65724": { + "fin": "valkohankaj\u00e4k\u00e4l\u00e4", + "swe": "sl\u00e5nlav", + "sci": "Evernia prunastri" + }, + "MX.72561": { + "fin": "valkok\u00e4rp\u00e4ssieni", + "swe": "vit flugsvamp", + "sci": "Amanita virosa" + } +} \ No newline at end of file diff --git a/tools/csv_to_dict_script.py b/tools/csv_to_dict_script.py index e0c1ff3..ac02889 100644 --- a/tools/csv_to_dict_script.py +++ b/tools/csv_to_dict_script.py @@ -1,7 +1,7 @@ import pandas as pd -def csv_to_dict(file_path): +def csv_to_dict(file_path, id = 'id'): """ Converts a CSV file from Laji.fi to a dictionary. Uses the 'id' column as keys and the remaining columns as values. @@ -10,6 +10,36 @@ def csv_to_dict(file_path): data = pd.read_csv(file_path, delimiter=';') # Convert to dictionary - data_dict = data.set_index('id').T.to_dict() + data_dict = data.set_index(id).T.to_dict() return data_dict + +input_file = "100lajia_lastenlista.csv" +output_file = input_file.replace(".csv", ".json") + +species_dict = csv_to_dict(input_file, "mx") + +# Make a new dictionary from species_dict, with these changes: +# Rename "fi" to "fin" +# Leave out "taso" and "Eliöryhmä" +# If a value is missing (nan), replace it with empty string + +new_species_dict = {} +for key, value in species_dict.items(): + new_value = {} + for k, v in value.items(): + if k == "fi": + new_value["fin"] = v + elif k != "taso" and k != "Eliöryhmä": + if pd.isna(v): + new_value[k] = "" + else: + new_value[k] = v + new_species_dict[key] = new_value + +print(new_species_dict) + +# Save as json +import json +with open(output_file, "w") as f: + json.dump(new_species_dict, f, indent=1) diff --git a/tools/insecta_2024.json b/tools/insecta_2024.json deleted file mode 100644 index f5e7f89..0000000 --- a/tools/insecta_2024.json +++ /dev/null @@ -1,757 +0,0 @@ -{ - "MX.194730": { - "sci": "Acanthocinus aedilis", - "fin": "sarvijaakko", - "order": 21983 - }, - "MX.62446": { - "sci": "Acronicta alni", - "fin": "lepp\u00e4iltay\u00f6kk\u00f6nen", - "order": 27761 - }, - "MX.62461": { - "sci": "Acronicta rumicis", - "fin": "pilkkuiltay\u00f6kk\u00f6nen", - "order": 27772 - }, - "MX.41": { - "sci": "Aeshna grandis", - "fin": "ruskoukonkorento", - "order": 520 - }, - "MX.194738": { - "sci": "Agapanthia villosoviridescens", - "fin": "h\u00e4rmej\u00e4\u00e4r\u00e4", - "order": 21992 - }, - "MX.195789": { - "sci": "Agelastica alni", - "fin": "id\u00e4nlehtikuoriainen", - "order": 22312 - }, - "MX.60914": { - "sci": "Aglais io", - "fin": "neitoperhonen", - "order": 26278 - }, - "MX.60916": { - "sci": "Aglais urticae", - "fin": "nokkosperhonen", - "order": 26279 - }, - "MX.61449": { - "sci": "Aglia tau", - "fin": "nastakehr\u00e4\u00e4j\u00e4", - "order": 27364 - }, - "MX.59274": { - "sci": "Agonopterix heracliana", - "fin": "koiranputkilattakoi", - "order": 25496 - }, - "MX.191863": { - "sci": "Amphimallon solstitiale", - "fin": "juhannusturilas", - "order": 19322 - }, - "MX.204808": { - "sci": "Andrena cineraria", - "fin": "hohtomaamehil\u00e4inen", - "order": 14957 - }, - "MX.204778": { - "sci": "Andrena clarkella", - "fin": "raitamaamehil\u00e4inen", - "order": 14926 - }, - "MX.204837": { - "sci": "Andrena haemorrhoa", - "fin": "verimaamehil\u00e4inen", - "order": 14987 - }, - "MX.204812": { - "sci": "Andrena vaga", - "fin": "pajukkomaamehil\u00e4inen", - "order": 14961 - }, - "MX.192205": { - "sci": "Anoplotrupes stercorosus", - "fin": "mets\u00e4sitti\u00e4inen", - "order": 18862 - }, - "MX.204585": { - "sci": "Anthidium manicatum", - "fin": "sein\u00e4huopamehil\u00e4inen", - "order": 15106 - }, - "MX.60767": { - "sci": "Anthocharis cardamines", - "fin": "auroraperhonen", - "order": 26205 - }, - "MX.60970": { - "sci": "Aphantopus hyperantus", - "fin": "tesmaperhonen", - "order": 26329 - }, - "MX.204772": { - "sci": "Apis mellifera", - "fin": "tarhamehil\u00e4inen", - "order": 15209 - }, - "MX.195509": { - "sci": "Apoderus coryli", - "fin": "lep\u00e4nk\u00e4\u00e4r\u00f6k\u00e4rs\u00e4k\u00e4s", - "order": 22674 - }, - "MX.60908": { - "sci": "Araschnia levana", - "fin": "karttaperhonen", - "order": 26273 - }, - "MX.60876": { - "sci": "Argynnis paphia", - "fin": "keisarinviitta", - "order": 26260 - }, - "MX.204728": { - "sci": "Bombus hortorum", - "fin": "tarhakimalainen", - "order": 15234 - }, - "MX.204748": { - "sci": "Bombus hypnorum", - "fin": "kartanokimalainen", - "order": 15249 - }, - "MX.204767": { - "sci": "Bombus lapidarius", - "fin": "kivikkokimalainen", - "order": 15236 - }, - "MX.204750": { - "sci": "Bombus lapponicus", - "fin": "lapinkimalainen", - "order": 15251 - }, - "MX.204741": { - "sci": "Bombus pascuorum", - "fin": "peltokimalainen", - "order": 15260 - }, - "MX.204752": { - "sci": "Bombus pratorum", - "fin": "pensaskimalainen", - "order": 15253 - }, - "MX.204736": { - "sci": "Bombus rupestris", - "fin": "kivikkoloiskimalainen", - "order": 15245 - }, - "MX.204725": { - "sci": "Bombus subterraneus", - "fin": "maakimalainen", - "order": 15256 - }, - "MX.204744": { - "sci": "Bombus sylvarum", - "fin": "ketokimalainen", - "order": 15263 - }, - "MX.204745": { - "sci": "Bombus veteranus", - "fin": "hevoskimalainen", - "order": 15264 - }, - "MX.276592": { - "sci": "Bombylius major", - "fin": "isokimalaisk\u00e4rp\u00e4nen", - "order": 32040 - }, - "MX.290402": { - "sci": "Boreus westwoodi", - "fin": "lumikorento", - "order": 28479 - }, - "MX.195032": { - "sci": "Brachyta interrogationis", - "fin": "juomuj\u00e4\u00e4r\u00e4", - "order": 21783 - }, - "MX.60811": { - "sci": "Callophrys rubi", - "fin": "kangasperhonen", - "order": 26406 - }, - "MX.5": { - "sci": "Calopteryx splendens", - "fin": "immenkorento", - "order": 486 - }, - "MX.6": { - "sci": "Calopteryx virgo", - "fin": "neidonkorento", - "order": 487 - }, - "MX.204291": { - "sci": "Camponotus herculeanus", - "fin": "mets\u00e4hevosmuurahainen", - "order": 14564 - }, - "MX.192454": { - "sci": "Cantharis obscura", - "fin": "tummasylkikuoriainen", - "order": 19912 - }, - "MX.188520": { - "sci": "Carabus nemoralis", - "fin": "puistokiit\u00e4j\u00e4inen", - "order": 15812 - }, - "MX.230523": { - "sci": "Carpocoris purpureipennis", - "fin": "kuparilude", - "order": 3993 - }, - "MX.60830": { - "sci": "Celastrina argiolus", - "fin": "paatsamasinisiipi", - "order": 26361 - }, - "MX.191896": { - "sci": "Cetonia aurata", - "fin": "kultakuoriainen", - "order": 19361 - }, - "MX.230525": { - "sci": "Chlorochroa juniperina", - "fin": "katajalude", - "order": 3999 - }, - "MX.230526": { - "sci": "Chlorochroa pinicola", - "fin": "m\u00e4ntylude", - "order": 4000 - }, - "MX.204030": { - "sci": "Chrysis fulgida", - "fin": "kolokultiainen", - "order": 14290 - }, - "MX.195657": { - "sci": "Chrysolina fastuosa", - "fin": "peippikuoriainen", - "order": 22201 - }, - "MX.195663": { - "sci": "Chrysolina staphylaea", - "fin": "pimperikuoriainen", - "order": 22205 - }, - "MX.195719": { - "sci": "Chrysomela vigintipunctata", - "fin": "t\u00e4pl\u00e4lehtikuoriainen", - "order": 22252 - }, - "MX.290384": { - "sci": "Chrysoperla carnea", - "fin": "pihaharsokorento", - "order": 15442 - }, - "MX.188496": { - "sci": "Cicindela campestris", - "fin": "kentt\u00e4kiit\u00e4j\u00e4inen", - "order": 15790 - }, - "MX.188494": { - "sci": "Cicindela hybrida", - "fin": "hietikkokiit\u00e4j\u00e4inen", - "order": 15788 - }, - "MX.286552": { - "sci": "Cimbex femoratus", - "fin": "ukkonuijapisti\u00e4inen", - "order": 4708 - }, - "MX.194855": { - "sci": "Clytra quadripunctata", - "fin": "muurahaisp\u00e4\u00e4kk\u00f6", - "order": 22116 - }, - "MX.194380": { - "sci": "Coccinella septempunctata", - "fin": "seitsenpistepirkko", - "order": 21002 - }, - "MX.204382": { - "sci": "Colletes cunicularius", - "fin": "kev\u00e4tiskosmehil\u00e4inen", - "order": 15064 - }, - "MX.278296": { - "sci": "Conops quadrifasciatus", - "fin": NaN, - "order": 41020 - }, - "MX.230457": { - "sci": "Coreus marginatus", - "fin": "pallelude", - "order": 3908 - }, - "MX.230422": { - "sci": "Corizus hyoscyami", - "fin": "verilude", - "order": 3871 - }, - "MX.192956": { - "sci": "Ctenicera pectinicornis", - "fin": "kampasepp\u00e4", - "order": 19743 - }, - "MX.231622": { - "sci": "Ctenolepisma longicaudata", - "fin": "paperitoukka", - "order": 466 - }, - "MX.43178": { - "sci": "Decticus verrucivorus", - "fin": "niittyhepokatti", - "order": 802 - }, - "MX.61492": { - "sci": "Deilephila elpenor", - "fin": "horsmakiit\u00e4j\u00e4", - "order": 27400 - }, - "MX.192556": { - "sci": "Dermestes lardarius", - "fin": "vy\u00f6ihrakuorianen", - "order": 20003 - }, - "MX.318404": { - "sci": "Diplolepis rosae", - "fin": "takku\u00e4k\u00e4m\u00e4pisti\u00e4inen", - "order": 11322 - }, - "MX.230528": { - "sci": "Dolycoris baccarum", - "fin": "marjalude", - "order": 4002 - }, - "MX.206470": { - "sci": "Ectobius lapponicus", - "fin": "lapintorakka", - "order": 925 - }, - "MX.206471": { - "sci": "Ectobius sylvestris", - "fin": "mets\u00e4torakka", - "order": 926 - }, - "MX.58629": { - "sci": "Ectoedemia argyropeza", - "fin": "impik\u00e4\u00e4pi\u00f6koi", - "order": 24362 - }, - "MX.276708": { - "sci": "Empis borealis", - "fin": NaN, - "order": 33214 - }, - "MX.194245": { - "sci": "Endomychus coccineus", - "fin": "pirkkosieni\u00e4inen", - "order": 20879 - }, - "MX.206494": { - "sci": "Ephemera vulgata", - "fin": "isosurviainen", - "order": 688 - }, - "MX.277936": { - "sci": "Episyrphus balteatus", - "fin": "parvikirvari", - "order": 33710 - }, - "MX.60930": { - "sci": "Euphydryas iduna", - "fin": "lapinverkkoperhonen", - "order": 26291 - }, - "MX.230555": { - "sci": "Eurydema oleracea", - "fin": "kaalilude", - "order": 4038 - }, - "MX.206454": { - "sci": "Forficula auricularia", - "fin": "isopihtih\u00e4nt\u00e4", - "order": 713 - }, - "MX.230323": { - "sci": "Gastrodes abietum", - "fin": "kuusenk\u00e4pylude", - "order": 3767 - }, - "MX.230324": { - "sci": "Gastrodes grossipes", - "fin": "ruostek\u00e4pylude", - "order": 3768 - }, - "MX.61504": { - "sci": "Geometra papilionaria", - "fin": "isomittari", - "order": 27297 - }, - "MX.60794": { - "sci": "Gonepteryx rhamni", - "fin": "sitruunaperhonen", - "order": 26232 - }, - "MX.230561": { - "sci": "Graphosoma italicum", - "fin": "pyjamalude", - "order": 4047 - }, - "MX.58541": { - "sci": "Hepialus humuli", - "fin": "humalaperhonen", - "order": 24222 - }, - "MX.61487": { - "sci": "Hyles gallii", - "fin": "matarakiit\u00e4j\u00e4", - "order": 27397 - }, - "MX.196272": { - "sci": "Hylobius abietis", - "fin": "tukkimiehent\u00e4i", - "order": 23421 - }, - "MX.61603": { - "sci": "Hypomecis atomaria", - "fin": "mets\u00e4mittari", - "order": 27184 - }, - "MX.230275": { - "sci": "Kleidocerys resedae", - "fin": "kalvolude", - "order": 3716 - }, - "MX.195242": { - "sci": "Lagria hirta", - "fin": "niittymartikas", - "order": 21408 - }, - "MX.192436": { - "sci": "Lampyris noctiluca", - "fin": "kiiltomato", - "order": 19896 - }, - "MX.204298": { - "sci": "Lasius niger", - "fin": "pihamauriainen", - "order": 14598 - }, - "MX.231375": { - "sci": "Lepisma saccharinum", - "fin": "sokeritoukka", - "order": 460 - }, - "MX.195093": { - "sci": "Leptura quadrifasciata", - "fin": "nelivy\u00f6j\u00e4\u00e4r\u00e4", - "order": 21812 - }, - "MX.281757": { - "sci": "Lipoptena cervi", - "fin": "hirvik\u00e4rp\u00e4nen", - "order": 35155 - }, - "MX.196317": { - "sci": "Lixus iridis", - "fin": "putkik\u00e4rs\u00e4k\u00e4s", - "order": 23072 - }, - "MX.60821": { - "sci": "Lycaena hippothoe", - "fin": "ketokultasiipi", - "order": 26403 - }, - "MX.60816": { - "sci": "Lycaena phlaeas", - "fin": "pikkukultasiipi", - "order": 26396 - }, - "MX.230260": { - "sci": "Lygaeus equestris", - "fin": "ritarilude", - "order": 3691 - }, - "MX.192433": { - "sci": "Lygistopterus sanguineus", - "fin": "rusokuoriainen", - "order": 19893 - }, - "MX.61418": { - "sci": "Macrothylacia rubi", - "fin": "hein\u00e4hukka", - "order": 27336 - }, - "MX.194645": { - "sci": "Meloe violaceus", - "fin": "sinitoukoh\u00e4rk\u00e4", - "order": 21610 - }, - "MX.191867": { - "sci": "Melolontha hippocastani", - "fin": "kes\u00e4turilas", - "order": 19327 - }, - "MX.43183": { - "sci": "Metrioptera brachyptera", - "fin": "kanervat\u00f6p\u00f6katti", - "order": 806 - }, - "MX.204225": { - "sci": "Mutilla europaea", - "fin": "miekkapisti\u00e4inen", - "order": 14543 - }, - "MX.229596": { - "sci": "Nepa cinerea", - "fin": "vesiskorpioni", - "order": 2985 - }, - "MX.189613": { - "sci": "Nicrophorus investigator", - "fin": "tutkijaturkkilo", - "order": 16977 - }, - "MX.189616": { - "sci": "Nicrophorus vespilloides", - "fin": "pikkuturkkilo", - "order": 16979 - }, - "MX.60920": { - "sci": "Nymphalis antiopa", - "fin": "suruvaippa", - "order": 26282 - }, - "MX.60755": { - "sci": "Ochlodes sylvanus", - "fin": "piippopaksup\u00e4\u00e4", - "order": 26196 - }, - "MX.194622": { - "sci": "Oedemera virescens", - "fin": "viherpaksureisi", - "order": 21590 - }, - "MX.189591": { - "sci": "Oiceoptoma thoracicum", - "fin": "punaselk\u00e4haiskiainen", - "order": 16958 - }, - "MX.204626": { - "sci": "Osmia bicornis", - "fin": "rusomuurarimehil\u00e4inen", - "order": 15196 - }, - "MX.230533": { - "sci": "Palomena prasina", - "fin": "viherlude", - "order": 4006 - }, - "MX.290395": { - "sci": "Panorpa communis", - "fin": "vy\u00f6skorpionikorento", - "order": 28472 - }, - "MX.290396": { - "sci": "Panorpa vulgaris", - "fin": "tummavy\u00f6skorpionikorento", - "order": 28473 - }, - "MX.60730": { - "sci": "Papilio machaon", - "fin": "ritariperhonen", - "order": 26171 - }, - "MX.230544": { - "sci": "Pentatoma rufipes", - "fin": "h\u00e4rk\u00e4lude", - "order": 4022 - }, - "MX.229021": { - "sci": "Philaenus spumarius", - "fin": "sylkikaskas", - "order": 2944 - }, - "MX.62281": { - "sci": "Phragmatobia fuliginosa", - "fin": "ruostesiipi", - "order": 27537 - }, - "MX.60778": { - "sci": "Pieris napi", - "fin": "lanttuperhonen", - "order": 26216 - }, - "MX.60777": { - "sci": "Pieris rapae", - "fin": "naurisperhonen", - "order": 26215 - }, - "MX.43207": { - "sci": "Podisma pedestris", - "fin": "kangassirkka", - "order": 854 - }, - "MX.60925": { - "sci": "Polygonia c-album", - "fin": "herukkaperhonen", - "order": 26288 - }, - "MX.191904": { - "sci": "Protaetia cuprea", - "fin": "kuparikuoriainen", - "order": 19366 - }, - "MX.194338": { - "sci": "Psyllobora vigintiduopunctata", - "fin": "ahopirkko", - "order": 20963 - }, - "MX.195025": { - "sci": "Rhagium inquisitor", - "fin": "havukantoj\u00e4\u00e4r\u00e4", - "order": 21770 - }, - "MX.195024": { - "sci": "Rhagium mordax", - "fin": "lehtikantoj\u00e4\u00e4r\u00e4", - "order": 21769 - }, - "MX.230369": { - "sci": "Rhyparochromus pini", - "fin": "mets\u00e4ruutulude", - "order": 3816 - }, - "MX.43182": { - "sci": "Roeseliana roeselii", - "fin": "hein\u00e4t\u00f6p\u00f6katti", - "order": 809 - }, - "MX.61453": { - "sci": "Saturnia pavonia", - "fin": "pikkuriikinkukkokehr\u00e4\u00e4j\u00e4", - "order": 27367 - }, - "MX.192977": { - "sci": "Selatosomus cruciatus", - "fin": "ristisepp\u00e4", - "order": 19765 - }, - "MX.231865": { - "sci": "Semblis phalaenoides", - "fin": "jatulisirvik\u00e4s", - "order": 23992 - }, - "MX.278234": { - "sci": "Sericomyia silentis", - "fin": "keltaper\u00e4luhtanen", - "order": 34203 - }, - "MX.61473": { - "sci": "Sphinx ligustri", - "fin": "syreenikiit\u00e4j\u00e4", - "order": 27380 - }, - "MX.195071": { - "sci": "Stictoleptura rubra", - "fin": "rusokukkaj\u00e4\u00e4r\u00e4", - "order": 21826 - }, - "MX.281433": { - "sci": "Tachina grossa", - "fin": "j\u00e4ttisiilik\u00e4rp\u00e4nen", - "order": 35515 - }, - "MX.43176": { - "sci": "Tettigonia cantans", - "fin": "id\u00e4nhepokatti", - "order": 799 - }, - "MX.43175": { - "sci": "Tettigonia viridissima", - "fin": "lehtohepokatti", - "order": 798 - }, - "MX.60749": { - "sci": "Thymelicus lineola", - "fin": "lauhahiipij\u00e4", - "order": 26189 - }, - "MX.191919": { - "sci": "Trichius fasciatus", - "fin": "kimalaiskuoriainen", - "order": 19379 - }, - "MX.288967": { - "sci": "Urocerus gigas", - "fin": "j\u00e4ttipuupisti\u00e4inen", - "order": 5627 - }, - "MX.278569": { - "sci": "Urophora cardui", - "fin": "aaltok\u00e4rp\u00e4nen", - "order": 40604 - }, - "MX.60910": { - "sci": "Vanessa atalanta", - "fin": "amiraali", - "order": 26275 - }, - "MX.204118": { - "sci": "Vespula germanica", - "fin": "saksanampiainen", - "order": 14415 - }, - "MX.204122": { - "sci": "Vespula rufa", - "fin": "puna-ampiainen", - "order": 14419 - }, - "MX.204119": { - "sci": "Vespula vulgaris", - "fin": "piha-ampiainen", - "order": 14416 - }, - "MX.278237": { - "sci": "Volucella bombylans", - "fin": "kimalaisvieras", - "order": 34207 - }, - "MX.278238": { - "sci": "Volucella inanis", - "fin": "vaapsasvieras", - "order": 34209 - }, - "MX.278239": { - "sci": "Volucella pellucens", - "fin": "ampiaisvieras", - "order": 34210 - }, - "MX.58998": { - "sci": "Yponomeuta evonymella", - "fin": "tuomenkehr\u00e4\u00e4j\u00e4koi", - "order": 24619 - }, - "MX.59989": { - "sci": "Zygaena exulans", - "fin": "tunturipunat\u00e4pl\u00e4", - "order": 25369 - } -} \ No newline at end of file