diff --git a/Logic/Web/PlantNet.ts b/Logic/Web/PlantNet.ts new file mode 100644 index 000000000..11757f317 --- /dev/null +++ b/Logic/Web/PlantNet.ts @@ -0,0 +1,346 @@ +import {Utils} from "../../Utils"; + +export default class PlantNet { + private static baseUrl = "https://my-api.plantnet.org/v2/identify/all?api-key=2b10AAsjzwzJvucA5Ncm5qxe" + + public static query(imageUrls: string[]) : Promise{ + if (imageUrls.length > 5) { + throw "At most 5 images can be given to PlantNet.query" + } + if (imageUrls.length == 0) { + throw "At least one image should be given to PlantNet.query" + } + let url = PlantNet. baseUrl; + for (const image of imageUrls) { + url += "&images="+encodeURIComponent(image) + } + return Utils.downloadJson(url) + } + + public static exampleResult: PlantNetResult = { + "query": { + "project": "all", + "images": ["https://my.plantnet.org/images/image_1.jpeg", "https://my.plantnet.org/images/image_2.jpeg"], + "organs": ["flower", "leaf"], + "includeRelatedImages": false + }, + "language": "en", + "preferedReferential": "the-plant-list", + "bestMatch": "Hibiscus rosa-sinensis L.", + "results": [{ + "score": 0.91806, + "species": { + "scientificNameWithoutAuthor": "Hibiscus rosa-sinensis", + "scientificNameAuthorship": "L.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Hawaiian hibiscus", "Hibiscus", "Chinese hibiscus"], + "scientificName": "Hibiscus rosa-sinensis L." + }, + "gbif": {"id": "3152559"} + }, { + "score": 0.00759, + "species": { + "scientificNameWithoutAuthor": "Hibiscus moscheutos", + "scientificNameAuthorship": "L.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Crimsoneyed rosemallow", "Mallow-rose", "Swamp rose-mallow"], + "scientificName": "Hibiscus moscheutos L." + }, + "gbif": {"id": "3152596"} + }, { + "score": 0.00676, + "species": { + "scientificNameWithoutAuthor": "Hibiscus schizopetalus", + "scientificNameAuthorship": "(Dyer) Hook.f.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Campanilla", "Chinese lantern", "Fringed rosemallow"], + "scientificName": "Hibiscus schizopetalus (Dyer) Hook.f." + }, + "gbif": {"id": "9064581"} + }, { + "score": 0.00544, + "species": { + "scientificNameWithoutAuthor": "Hibiscus palustris", + "scientificNameAuthorship": "L.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Swamp Rose Mallow", "Hardy Hidiscus", "Twisted Hibiscus"], + "scientificName": "Hibiscus palustris L." + }, + "gbif": {"id": "6377046"} + }, { + "score": 0.0047, + "species": { + "scientificNameWithoutAuthor": "Hibiscus sabdariffa", + "scientificNameAuthorship": "L.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Indian-sorrel", "Roselle", "Jamaica-sorrel"], + "scientificName": "Hibiscus sabdariffa L." + }, + "gbif": {"id": "3152582"} + }, { + "score": 0.0037, + "species": { + "scientificNameWithoutAuthor": "Abelmoschus moschatus", + "scientificNameAuthorship": "Medik.", + "genus": { + "scientificNameWithoutAuthor": "Abelmoschus", + "scientificNameAuthorship": "", + "scientificName": "Abelmoschus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Musk okra", "Musk-mallow", "Tropical jewel-hibiscus"], + "scientificName": "Abelmoschus moschatus Medik." + }, + "gbif": {"id": "8312665"} + }, { + "score": 0.00278, + "species": { + "scientificNameWithoutAuthor": "Hibiscus grandiflorus", + "scientificNameAuthorship": "Michx.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Swamp rosemallow", "Swamp Rose-Mallow"], + "scientificName": "Hibiscus grandiflorus Michx." + }, + "gbif": {"id": "3152592"} + }, { + "score": 0.00265, + "species": { + "scientificNameWithoutAuthor": "Hibiscus acetosella", + "scientificNameAuthorship": "Welw. ex Hiern", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["False roselle", "Red-leaf hibiscus", "African rosemallow"], + "scientificName": "Hibiscus acetosella Welw. ex Hiern" + }, + "gbif": {"id": "3152551"} + }, { + "score": 0.00253, + "species": { + "scientificNameWithoutAuthor": "Bixa orellana", + "scientificNameAuthorship": "L.", + "genus": { + "scientificNameWithoutAuthor": "Bixa", + "scientificNameAuthorship": "", + "scientificName": "Bixa" + }, + "family": { + "scientificNameWithoutAuthor": "Bixaceae", + "scientificNameAuthorship": "", + "scientificName": "Bixaceae" + }, + "commonNames": ["Arnatto", "Lipsticktree", "Annatto"], + "scientificName": "Bixa orellana L." + }, + "gbif": {"id": "2874863"} + }, { + "score": 0.00179, + "species": { + "scientificNameWithoutAuthor": "Malvaviscus penduliflorus", + "scientificNameAuthorship": "Moc. & Sessé ex DC.", + "genus": { + "scientificNameWithoutAuthor": "Malvaviscus", + "scientificNameAuthorship": "", + "scientificName": "Malvaviscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Mazapan"], + "scientificName": "Malvaviscus penduliflorus Moc. & Sessé ex DC." + }, + "gbif": {"id": "3152776"} + }, { + "score": 0.00145, + "species": { + "scientificNameWithoutAuthor": "Hibiscus diversifolius", + "scientificNameAuthorship": "Jacq.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Cape hibiscus", "Swamp hibiscus", "Comfortroot"], + "scientificName": "Hibiscus diversifolius Jacq." + }, + "gbif": {"id": "7279239"} + }, { + "score": 0.00141, + "species": { + "scientificNameWithoutAuthor": "Hippeastrum reginae", + "scientificNameAuthorship": "(L.) Herb.", + "genus": { + "scientificNameWithoutAuthor": "Hippeastrum", + "scientificNameAuthorship": "", + "scientificName": "Hippeastrum" + }, + "family": { + "scientificNameWithoutAuthor": "Amaryllidaceae", + "scientificNameAuthorship": "", + "scientificName": "Amaryllidaceae" + }, + "commonNames": ["Amaryllis", "Cheryl's Treasure", "Easter lily"], + "scientificName": "Hippeastrum reginae (L.) Herb." + }, + "gbif": {"id": "2854474"} + }, { + "score": 0.00114, + "species": { + "scientificNameWithoutAuthor": "Hibiscus martianus", + "scientificNameAuthorship": "Zucc.", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["Heartleaf rosemallow", "Mountain rosemallow", "Heartleaf rose-mallow"], + "scientificName": "Hibiscus martianus Zucc." + }, + "gbif": {"id": "3152578"} + }, { + "score": 0.00109, + "species": { + "scientificNameWithoutAuthor": "Acalypha hispida", + "scientificNameAuthorship": "Burm.f.", + "genus": { + "scientificNameWithoutAuthor": "Acalypha", + "scientificNameAuthorship": "", + "scientificName": "Acalypha" + }, + "family": { + "scientificNameWithoutAuthor": "Euphorbiaceae", + "scientificNameAuthorship": "", + "scientificName": "Euphorbiaceae" + }, + "commonNames": ["Philippine-medusa", "Bristly copperleaf", "Chenilleplant"], + "scientificName": "Acalypha hispida Burm.f." + }, + "gbif": {"id": "3056375"} + }, { + "score": 0.00071, + "species": { + "scientificNameWithoutAuthor": "Hibiscus arnottianus", + "scientificNameAuthorship": "A. Gray", + "genus": { + "scientificNameWithoutAuthor": "Hibiscus", + "scientificNameAuthorship": "", + "scientificName": "Hibiscus" + }, + "family": { + "scientificNameWithoutAuthor": "Malvaceae", + "scientificNameAuthorship": "", + "scientificName": "Malvaceae" + }, + "commonNames": ["White rosemallow", "Native Hawaiian White Hibiscus", "Native White Rose-Mallow"], + "scientificName": "Hibiscus arnottianus A. Gray" + }, + "gbif": {"id": "3152543"} + }], + "version": "2022-06-14 (6.0)", + "remainingIdentificationRequests": 499 + } + +} + +export interface PlantNetResult { + "query": { + "project": string, "images": string[], + "organs": string[], + "includeRelatedImages": boolean + }, + "language": string, + "preferedReferential": string, + "bestMatch": string, + "results": { + "score": number, + "gbif": { "id": string /*Actually a number*/ } + "species": + { + "scientificNameWithoutAuthor": string, + "scientificNameAuthorship": string, + "genus": { "scientificNameWithoutAuthor": string, scientificNameAuthorship: string, "scientificName": string }, + "family": { "scientificNameWithoutAuthor": string, scientificNameAuthorship: string, "scientificName": string }, + "commonNames": string [], + "scientificName": string + }, + }[], + "version": string, + "remainingIdentificationRequests": number +}