1
Scripting Languages / Re: ScriptBasic 3.0
« Last post by John on April 17, 2024, 09:19:49 PM »This OxygenBasic example embedding ScriptBasic (libscriab.dll) gets the current weather with the curl extension module and using the LIKE ScriptBasic function to parse the temperature from the JSON response.
weather.o2bas
weather.sb
Output
C:\OxygenBasic\demos\ScriptBasic>weather
{"coord":{"lon":-122.4521,"lat":48.9465},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":46.13,"feels_like":46.13,"temp_min":43.59,"temp_max":48.63,"pressure":1028,"humidity":58},"visibility":10000,"wind":{"speed":1.01,"deg":166,"gust":3},"clouds":{"all":0},"dt":1713413156,"sys":{"type":2,"id":2090762,"country":"US","sunrise":1713359602,"sunset":1713409479},"timezone":-25200,"id":5802035,"name":"Lynden","cod":200}
Lynden WA Temperature is 46.13 F
C:\OxygenBasic\demos\ScriptBasic>
weather.o2bas
Code: Text
- ' O2 SB cURL OpenWeather Example
- % filename "weather.exe"
- includepath "$/inc/"
- uses rtl64
- include "sbembed.inc"
- #console
- uses console
- sys pProgram, fnsn
- sbData *arg
- sbData *argr
- string cr = chr(13,10)
- pProgram = scriba_new(@newmem, @freemem)
- scriba_LoadConfiguration(pProgram, "C:\Windows\SCRIBA.INI")
- scriba_SetFileName(pProgram, "weather.sb")
- scriba_LoadSourceProgram(pProgram)
- scriba_Run(pProgram, "")
- @arg = scriba_NewSbArgs(pProgram, "s", "Lynden,US")
- fnsn = scriba_LookupFunctionByName(pProgram, "main::get_weather")
- @argr = scriba_NewSbArgs(pProgram,"s", "")
- scriba_CallArgEx(pProgram, fnsn, argr, 1, arg)
- string json = argr.str
- string mask = `*temp":*,*`
- @arg = scriba_NewSbArgs(pProgram, "s s", json, mask)
- fnsn = scriba_LookupFunctionByName(pProgram, "main::sb_like")
- @argr = scriba_NewSbArgs(pProgram,"i", 0)
- scriba_CallArgEx(pProgram, fnsn, argr, 2, arg)
- @arg = scriba_NewSbArgs(pProgram, "i", 2)
- fnsn = scriba_LookupFunctionByName(pProgram, "main::sb_match")
- @argr = scriba_NewSbArgs(pProgram,"s", "")
- scriba_CallArgEx(pProgram, fnsn, argr, 1, arg)
- print "Lynden WA Temperature is " + argr.str + " F" + cr
- scriba_DestroySbArgs(pProgram, arg, 2)
- scriba_DestroySbArgs(pProgram, argr, 1)
- scriba_destroy(pProgram)
weather.sb
Code: ScriptBasic
- ' OpenWeather - Embedded Example
- IMPORT curl.bas
- FUNCTION Get_Weather(place)
- ch = curl::init()
- curl::option(ch, "URL", "https://api.openweathermap.org/data/2.5/weather?q=" & place & "&units=imperial&appid=OpenWeather_API-KEY")
- curl::option(ch, "CUSTOMREQUEST", "GET")
- response = curl::perform(ch)
- curl::finish(ch)
- PRINT response,"\n\n"
- Get_Weather = response
- END FUNCTION
- ' REPLACE
- FUNCTION sb_replace(basestr, searchstr, replacestr, occurances, startpos)
- sb_replace = REPLACE(basestr, searchstr, replacestr, occurances, startpos)
- END FUNCTION
- ' LIKE
- FUNCTION sb_like(basestr, mask)
- ok = basestr LIKE mask
- sb_like = ok
- END FUNCTION
- ' MATCH
- FUNCTION sb_match(segment)
- sb_match = JOKER(segment)
- END FUNCTION
Output
C:\OxygenBasic\demos\ScriptBasic>weather
{"coord":{"lon":-122.4521,"lat":48.9465},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":46.13,"feels_like":46.13,"temp_min":43.59,"temp_max":48.63,"pressure":1028,"humidity":58},"visibility":10000,"wind":{"speed":1.01,"deg":166,"gust":3},"clouds":{"all":0},"dt":1713413156,"sys":{"type":2,"id":2090762,"country":"US","sunrise":1713359602,"sunset":1713409479},"timezone":-25200,"id":5802035,"name":"Lynden","cod":200}
Lynden WA Temperature is 46.13 F
C:\OxygenBasic\demos\ScriptBasic>