我正在使用我的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%开始的计算进度数据库。有谁知道怎么做?
答案 0 :(得分:0)
要显示进度,您应该得到2分:start
,current
和end
。所以,0,当前处理的数据和总数据。
但是你在这里有2个昂贵的操作:http查询获取并导出到sqlite。
要跟踪http查询的进度,我建议您查看以下问题和答案:this和this。
要跟踪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)