Kodi Community Forum
How to refresh data on xbmcgui.WindowDialog? - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Add-ons (https://forum.kodi.tv/forumdisplay.php?fid=26)
+--- Thread: How to refresh data on xbmcgui.WindowDialog? (/showthread.php?tid=322357)



How to refresh data on xbmcgui.WindowDialog? - kralex - 2017-10-11

Hi,

I'm working on a addon. I want see current foreign exchange rates on top corner of the screen. I've brought the addon up to a point. But I cannot refresh the data automatically.

How to refresh data every 15 seconds on xbmcgui.WindowDialog?

Please help me.

Code:
# -*- coding: utf-8 -*-
import xbmc, xbmcplugin, xbmcaddon, xbmcgui
import re
import urllib2
from datetime import datetime
import time, locale, pytz
import platform,os
import json, threading

locale.setlocale(locale.LC_TIME,'')
'tr_TR.UTF-8'

sysarg=str(sys.argv[1])
ADDON_ID='script.kralex.foreign'
addon = xbmcaddon.Addon(id=ADDON_ID)


def cek(link):
   req = urllib2.Request(link)
   req.add_header('User-Agent',
                  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36')
   yanit = urllib2.urlopen(req)
   sonuc = json.load(yanit)
   yanit.close()

   return sonuc

def convert_datetime_timezone(dt, tz1, tz2):
   tz1 = pytz.timezone(tz1)
   tz2 = pytz.timezone(tz2)
   try:
       dt = datetime.strptime(dt,"%Y-%m-%dT%H:%M:%SZ")
   except:
       dt = datetime.fromtimestamp(time.mktime(time.strptime(dt, "%Y-%m-%dT%H:%M:%SZ")))
   dt = tz1.localize(dt)
   dt = dt.astimezone(tz2)
   dt = dt.strftime("%c")
   return dt

url = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDTRY%22,%20%22EURTRY%22)&env=store://datatables.org/alltableswithkeys&format=json'


class MyAddon(xbmcgui.WindowDialog):
   def __init__(self):
       veri = cek(url)
       tarih = veri['query']['created']
       tarih = convert_datetime_timezone(tarih, "UTC", "Europe/Istanbul")

       dolar = []
       euro = []

       for x in veri['query']['results']['rate']:
           if x['id'] == 'USDTRY':
               dolar = x['Rate']
           if x['id'] == 'EURTRY':
               euro = x['Rate']

       self.addControl(xbmcgui.ControlImage(800,20, 500, 100, ""))
       self.list = xbmcgui.ControlList(810, 20, 500, 110, 'font12', '0xFFFFFFFF')
       self.addControl(self.list)

       self.list.addItem('Dolar:               ' + dolar +' TL\nGuncelleme:    ' + tarih)

       self.setFocus(self.list)
       xbmc.executebuiltin('Dialog.Close(10138)')

if __name__ == '__main__':
   myaddon = MyAddon()
   myaddon.doModal()
   del myaddon
Download addon


RE: How to refresh data on xbmcgui.WindowDialog? - Roman_V_M - 2017-10-12

You need to run a secondary thread from which you can update your Controls with new data.