added weather stats script

This commit is contained in:
Patrizio Bekerle 2017-06-08 09:47:16 +02:00
parent 0152ba7cb8
commit e880663c10
No known key found for this signature in database
GPG Key ID: 2E9FFD770DABE838
2 changed files with 82 additions and 0 deletions

9
weather-stats/info.json Normal file
View File

@ -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 <i>Scripting widget</i>. You can configure the city in the <i>Scripting Settings</i>. The Yahoo weather service is used to fetch the weather. The information is updated every 10min."
}

View File

@ -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",
"<table align=center width=90%>
<tr>
<td align=center>Weather in <b>" + city + "</b>: " + conditionText + " at <b>" + temp + " " + unit + "</b></tb>
</tr>
</table>")
}
/**
* This starts a timer that triggers every 10min
*/
property QtObject timer: Timer {
interval: 600000
repeat: true
running: true
property int count: 0
onTriggered: {
weatherStats();
}
}
}