(* Search names through api.gbif.org *) maintainSearchGbif[name_String] := Module[{namepl, nameul, file, mdata, keys}, urlGbif = url = "http://api.gbif.org/v1/"; dirSearch = FileNameJoin[{dirwork, "data", "search", "gbif"}]; checkdir1[dirSearch]; namepl = StringReplace[name, " " -> "+"]; nameul = StringReplace[name, " " -> "_"]; urlsearch = urlGbif <> "species/suggest?q=" <> namepl <> "&rank=SPECIES"; file = FileNameJoin[{dirSearch, nameul <> ".m"}]; If[! FileExistsQ[file], data = Import[urlsearch, "JSON"]; mdata = data // Length; noPrint[name, ": maintainSearchGbif: found ", mdata, " keys."]; keys = If[data === {}, {}, "key" /. data]; urlcount = (urlGbif <> "occurrence/count?taxonKey=" <> ToString[#]) & /@ keys; occurrences = ToExpression[StringTrim[Import[#, "Text"]]] & /@ urlcount; date = DateString[CurrentDate[]]; If[(And @@ (IntegerQ /@ keys)) && (And @@ (IntegerQ /@ occurrences)), Print[name, ": search completed with ", mdata, " results"]; Save[file, {urlsearch, urlcount, date, data, occurrences}]; ]; ]; If[FileExistsQ[file], Get[file]; mdata = data // Length; If[mdata == 0, Print["Warning: ", name, ": maintainSearchGbif: no results found."]]; keys = If[data === {}, {}, "key" /. data]; Do[ keyData[ToString[keys[[n]]], "occurrence"] = occurrences[[n]], {n, mdata}], Print["Error: ", name, ": maintainSearchGbif: file ", file, " does not exist."]]; ];