mirror of
https://github.com/TheRealOwenRees/plantid-discord-bot.git
synced 2026-07-23 04:26:57 +00:00
do not show common name text when no common names exist
This commit is contained in:
+13
-2
@@ -82,7 +82,7 @@ defmodule PlantIdDiscordBot.PlantNet.Parser do
|
|||||||
best_result_iucn_category = best_result["iucn"]["category"]
|
best_result_iucn_category = best_result["iucn"]["category"]
|
||||||
score = round(best_result["score"] * 100) |> Integer.to_string()
|
score = round(best_result["score"] * 100) |> Integer.to_string()
|
||||||
|
|
||||||
"My best guess is **#{best_guess_name}** with a confidence of **#{score}%**. Common names include **#{Enum.join(best_result["species"]["commonNames"], ", ")}**.\n\nSpecies info from plant databases:\n[GBIF](<#{best_result["gbif_url"]}>) | [PFAF](<#{best_result["pfaf_url"]}>) | [POWO](<#{best_result["powo_url"]}>)#{if best_result_iucn_category, do: "\n\nConservation status: #{iucn_parser(best_result_iucn_category)}"}#{get_alternatives(other_results)}"
|
"My best guess is **#{best_guess_name}** with a confidence of **#{score}%**.#{get_common_names(best_result)}\n\nSpecies info from plant databases:\n[GBIF](<#{best_result["gbif_url"]}>) | [PFAF](<#{best_result["pfaf_url"]}>) | [POWO](<#{best_result["powo_url"]}>)#{if best_result_iucn_category, do: "\n\nConservation status: #{iucn_parser(best_result_iucn_category)}"}#{get_alternatives(other_results)}"
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec generate_gbif_url(map()) :: map()
|
@spec generate_gbif_url(map()) :: map()
|
||||||
@@ -112,7 +112,17 @@ defmodule PlantIdDiscordBot.PlantNet.Parser do
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec get_alternatives(map()) :: String.t()
|
@spec get_common_names(map()) :: String.t()
|
||||||
|
defp get_common_names(data) do
|
||||||
|
common_names = data["species"]["commonNames"]
|
||||||
|
|
||||||
|
if length(common_names) > 0 do
|
||||||
|
" Common names include **" <>
|
||||||
|
Enum.join(common_names, ", ") <> "**."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@spec iucn_parser(String.t()) :: String.t()
|
||||||
defp iucn_parser(abbreviation) do
|
defp iucn_parser(abbreviation) do
|
||||||
case abbreviation do
|
case abbreviation do
|
||||||
"DD" -> "Data Deficient"
|
"DD" -> "Data Deficient"
|
||||||
@@ -128,6 +138,7 @@ defmodule PlantIdDiscordBot.PlantNet.Parser do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@spec get_alternatives(map()) :: String.t()
|
||||||
defp get_alternatives(data) do
|
defp get_alternatives(data) do
|
||||||
if length(data) > 0 do
|
if length(data) > 0 do
|
||||||
alternatives =
|
alternatives =
|
||||||
|
|||||||
@@ -53,5 +53,14 @@ defmodule PlantIdDiscordBotTest.PlantNet.Parser do
|
|||||||
assert message ==
|
assert message ==
|
||||||
"My best guess is **Prunus cerasifera** with a confidence of **88%**. Common names include **Cherry plum, myrobalan, Cherry Plum, Purple-leaf Plum**.\n\nSpecies info from plant databases:\n[GBIF](<https://www.gbif.org/species/3021730>) | [PFAF](<https://pfaf.org/user/Plant.aspx?LatinName=/Prunus+cerasifera>) | [POWO](<https://powo.science.kew.org/taxon/729568-1>)\n\nAlternatives include **Prunus × cistena**."
|
"My best guess is **Prunus cerasifera** with a confidence of **88%**. Common names include **Cherry plum, myrobalan, Cherry Plum, Purple-leaf Plum**.\n\nSpecies info from plant databases:\n[GBIF](<https://www.gbif.org/species/3021730>) | [PFAF](<https://pfaf.org/user/Plant.aspx?LatinName=/Prunus+cerasifera>) | [POWO](<https://powo.science.kew.org/taxon/729568-1>)\n\nAlternatives include **Prunus × cistena**."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "no common names" do
|
||||||
|
message =
|
||||||
|
PlantNetFixtures.parsed_response_with_urls_no_alternatives()
|
||||||
|
|> Parser.generate_response_message()
|
||||||
|
|
||||||
|
assert message ==
|
||||||
|
"My best guess is **Prunus cerasifera** with a confidence of **88%**.\n\nSpecies info from plant databases:\n[GBIF](<https://www.gbif.org/species/3021730>) | [PFAF](<https://pfaf.org/user/Plant.aspx?LatinName=/Prunus+cerasifera>) | [POWO](<https://powo.science.kew.org/taxon/729568-1>)\n\nConservation status: Data Deficient\n\nAlternatives include **Prunus × cistena**."
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -421,6 +421,79 @@ defmodule PlantNetFixtures do
|
|||||||
"version" => "2024-11-19 (7.3)"
|
"version" => "2024-11-19 (7.3)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@plantnet_parsed_response_with_urls_no_alternatives %{
|
||||||
|
"bestMatch" => "Prunus cerasifera Ehrh.",
|
||||||
|
"language" => "en",
|
||||||
|
"preferedReferential" => "k-world-flora",
|
||||||
|
"query" => %{
|
||||||
|
"images" => [
|
||||||
|
"https://upload.wikimedia.org/wikipedia/commons/f/ff/Prunus_cerasifera_A.jpg",
|
||||||
|
"https://le-jardin-de-pascal.com/2195113-large_default/prunus-cerasifera-atropurpurea-prunier-myrobolan-nigra.jpg"
|
||||||
|
],
|
||||||
|
"includeRelatedImages" => false,
|
||||||
|
"noReject" => false,
|
||||||
|
"organs" => ["auto", "auto"],
|
||||||
|
"project" => "all"
|
||||||
|
},
|
||||||
|
"remainingIdentificationRequests" => 488,
|
||||||
|
"results" => [
|
||||||
|
%{
|
||||||
|
"gbif" => %{"id" => "3021730"},
|
||||||
|
"gbif_url" => "https://www.gbif.org/species/3021730",
|
||||||
|
"iucn" => %{"category" => "DD", "id" => "172162"},
|
||||||
|
"pfaf_url" => "https://pfaf.org/user/Plant.aspx?LatinName=/Prunus+cerasifera",
|
||||||
|
"powo" => %{"id" => "729568-1"},
|
||||||
|
"powo_url" => "https://powo.science.kew.org/taxon/729568-1",
|
||||||
|
"score" => 0.87871,
|
||||||
|
"species" => %{
|
||||||
|
"commonNames" => [],
|
||||||
|
"family" => %{
|
||||||
|
"scientificName" => "Rosaceae",
|
||||||
|
"scientificNameAuthorship" => "",
|
||||||
|
"scientificNameWithoutAuthor" => "Rosaceae"
|
||||||
|
},
|
||||||
|
"genus" => %{
|
||||||
|
"scientificName" => "Prunus",
|
||||||
|
"scientificNameAuthorship" => "",
|
||||||
|
"scientificNameWithoutAuthor" => "Prunus"
|
||||||
|
},
|
||||||
|
"scientificName" => "Prunus cerasifera Ehrh.",
|
||||||
|
"scientificNameAuthorship" => "Ehrh.",
|
||||||
|
"scientificNameWithoutAuthor" => "Prunus cerasifera"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
"gbif" => %{"id" => "3022465"},
|
||||||
|
"gbif_url" => "https://www.gbif.org/species/3022465",
|
||||||
|
"pfaf_url" => "https://pfaf.org/user/Plant.aspx?LatinName=/Prunus+×+cistena",
|
||||||
|
"powo" => %{"id" => "2959315-4"},
|
||||||
|
"powo_url" => "https://powo.science.kew.org/taxon/2959315-4",
|
||||||
|
"score" => 0.31668,
|
||||||
|
"species" => %{
|
||||||
|
"commonNames" => [
|
||||||
|
"Dwarf red-leaf plum",
|
||||||
|
"Purple-leaf sand cherry",
|
||||||
|
"Purple-leaved sand cherry"
|
||||||
|
],
|
||||||
|
"family" => %{
|
||||||
|
"scientificName" => "Rosaceae",
|
||||||
|
"scientificNameAuthorship" => "",
|
||||||
|
"scientificNameWithoutAuthor" => "Rosaceae"
|
||||||
|
},
|
||||||
|
"genus" => %{
|
||||||
|
"scientificName" => "Prunus",
|
||||||
|
"scientificNameAuthorship" => "",
|
||||||
|
"scientificNameWithoutAuthor" => "Prunus"
|
||||||
|
},
|
||||||
|
"scientificName" => "Prunus × cistena N.E.Hansen ex Koehne",
|
||||||
|
"scientificNameAuthorship" => "N.E.Hansen ex Koehne",
|
||||||
|
"scientificNameWithoutAuthor" => "Prunus × cistena"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version" => "2024-11-19 (7.3)"
|
||||||
|
}
|
||||||
|
|
||||||
def raw_response, do: @plantnet_raw_response
|
def raw_response, do: @plantnet_raw_response
|
||||||
def parsed_response, do: @plantnet_parsed_response
|
def parsed_response, do: @plantnet_parsed_response
|
||||||
def parsed_response_filtered_by_score, do: @plantnet_parsed_response_filtered_by_score
|
def parsed_response_filtered_by_score, do: @plantnet_parsed_response_filtered_by_score
|
||||||
@@ -430,4 +503,7 @@ defmodule PlantNetFixtures do
|
|||||||
do: @plantnet_parsed_response_filtered_by_score_no_iucn
|
do: @plantnet_parsed_response_filtered_by_score_no_iucn
|
||||||
|
|
||||||
def parsed_response_with_urls_no_iucn, do: @plantnet_parsed_response_with_urls_no_iucn
|
def parsed_response_with_urls_no_iucn, do: @plantnet_parsed_response_with_urls_no_iucn
|
||||||
|
|
||||||
|
def parsed_response_with_urls_no_alternatives,
|
||||||
|
do: @plantnet_parsed_response_with_urls_no_alternatives
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user