import QtQml 2.0 import QOwnNotesTypes 1.0 /** * This script shows current weather statistics in a "scripting label" * * The Yahoo weather api is used for fetching the weather data * https://developer.yahoo.com/weather/ */ 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 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() { 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 tempUnit = weatherInfo.query.results.channel.units.temperature; var conditionText = weatherInfo.query.results.channel.item.condition.text var weatherCity = weatherInfo.query.results.channel.location.city var windSpeed = weatherInfo.query.results.channel.wind.speed var windUnit = weatherInfo.query.results.channel.units.speed; if (!useFahrenheit) { tempUnit = "°" + tempUnit; } script.setLabelText("weather stats", "
Weather in " + weatherCity + ": " + conditionText + " at " + temp + " " + tempUnit + " (" + windSpeed + " " + windUnit + " wind)
") } /** * This starts a timer that triggers every 10min */ property QtObject timer: Timer { interval: 600000 repeat: true running: true property int count: 0 onTriggered: { weatherStats(); } } }