如何设置计算进度

时间:2014-06-17 19:08:21

标签: python xbmc

我正在使用我的python脚本为xbmc媒体应用程序发送请求到url以获取响应,以便我可以将数据存储在sqlite3数据库中。

我想为标签控件设置从0%到100%的计算进度,以查看当我将请求发送到url以获取响应然后将数据存储到数据库。

以下是我想要使用的控件ID:

main_loading_time_left = 4202

以下是代码:

#DOWNLOAD THE XML SOURCE HERE
url = ADDON.getSetting('url')
req = urllib2.Request(url)
response = urllib2.urlopen(req)
data = response.read()
response.close()
profilePath = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide', ''))

if os.path.exists(profilePath):
   profilePath = profilePath + 'source.db'
   con = database.connect(profilePath)
   cur = con.cursor()
   cur.execute('CREATE TABLE programs(channel TEXT, title TEXT, start_date TIMESTAMP, stop_date TIMESTAMP, description TEXT)')
   con.commit()
   con.close
   tv_elem = ElementTree.parse(StringIO.StringIO(data)).getroot()
   profilePath = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide', ''))
   profilePath = profilePath + 'source.db'
   con = sqlite3.connect(profilePath)
   cur = con.cursor()
   channels = OrderedDict()

   # Get the loaded data
   for channel in tv_elem.findall('channel'):
       channel_name = channel.find('display-name').text
       for program in channel.findall('programme'):
           title = program.find('title').text
           start_time = program.get("start")
           stop_time = program.get("stop")
           cur.execute("INSERT INTO programs(channel, title, start_date, stop_date)" + " VALUES(?, ?, ?, ?)", [channel_name, title, start_time, stop_time])
           con.commit()

当我将请求发送到网址以获取响应然后将数据存储到网址时,是否有人知道如何使用控件ID main_loading_time_left来设置从0%到100%开始的计算进度数据库。有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

要显示进度,您应该得到2分:startcurrentend。所以,0,当前处理的数据和总数据。

但是你在这里有2个昂贵的操作:http查询获取并导出到sqlite。

要跟踪http查询的进度,我建议您查看以下问题和答案:thisthis

要跟踪sql查询进度,您应该将tv_elem.findall('channel')的长度设为end

elements = tv_elem.findall('channel')
total = len(elements)
for current, channel in enumerate(elements):
    ...
    setProgressBar(main_loading_time_left, float(current)/total*100)