From e880663c10013daf4ca195d1760919e07fd4ee4b Mon Sep 17 00:00:00 2001 From: Patrizio Bekerle Date: Thu, 8 Jun 2017 09:47:16 +0200 Subject: [PATCH] added weather stats script --- weather-stats/info.json | 9 ++++ weather-stats/weather-stats.qml | 73 +++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 weather-stats/info.json create mode 100644 weather-stats/weather-stats.qml 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(); + } + } +}