diff --git a/weather-stats/info.json b/weather-stats/info.json new file mode 100644 index 0000000..fe125ce --- /dev/null +++ b/weather-stats/info.json @@ -0,0 +1,9 @@ +{ + "name": "Weather stats", + "identifier": "weather-stats", + "script": "weather-stats.qml", + "version": "0.0.1", + "minAppVersion": "17.06.4", + "authors": ["@pbek"], + "description" : "This script shows the current weather in the Scripting widget. You can configure the city in the Scripting Settings. The Yahoo weather service is used to fetch the weather. The information is updated every 10min." +} diff --git a/weather-stats/weather-stats.qml b/weather-stats/weather-stats.qml new file mode 100644 index 0000000..6d62dd1 --- /dev/null +++ b/weather-stats/weather-stats.qml @@ -0,0 +1,73 @@ +import QtQml 2.0 +import QOwnNotesTypes 1.0 + +/** + * This script shows current weather statistics in a "scripting label" + */ + +Script { + // you have to define your registered variables so you can access them later + property string city; + property bool useFahrenheit; + + // register your settings variables so the user can set them in the script settings + // use this property if you don't need + property variant settingsVariables: [ + { + "identifier": "city", + "name": "City", + "description": "Please enter your city:", + "type": "string", + "default": "Graz", + }, + { + "identifier": "useFahrenheit", + "name": "Unit", + "description": "Use Fahrenheit instead of Celsius", + "type": "boolean", + "default": false, + }, + ]; + + function init() { + script.registerLabel("weather stats") + weatherStats(); + } + + function weatherStats() { + script.log(useFahrenheit); + var unitString = useFahrenheit ? "f" : "c" + var json = script.downloadUrlToString("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22" + city + "%22)%20and%20u%3D%27" + unitString + "%27&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"); + var weatherInfo = JSON.parse(json); + + var temp = weatherInfo.query.results.channel.item.condition.temp + var unit = weatherInfo.query.results.channel.units.temperature; + var conditionText = weatherInfo.query.results.channel.item.condition.text + + if (!useFahrenheit) { + unit = "°" + unit; + } + + script.setLabelText("weather stats", + " + + +
Weather in " + city + ": " + conditionText + " at " + temp + " " + unit + " +
") + } + + /** + * This starts a timer that triggers every 10min + */ + property QtObject timer: Timer { + interval: 600000 + repeat: true + running: true + + property int count: 0 + + onTriggered: { + weatherStats(); + } + } +}