def _saveLineup(self, channelList, lineup):
c = self.conn.cursor()
# delete removed channels
c.execute('SELECT * FROM channels WHERE source=? AND lineup=?',
[self.source.KEY, lineup])
to_delete = []
for row in c:
station_id = row['id']
found = False
for channel in channelList:
if channel.id == station_id:
found = True
break
if not found:
xbmc.log('[%s] Removing Channel: %s from lineup: %s' % (
ADDON.getAddonInfo('id'), str(station_id), str(lineup)), xbmc.LOGDEBUG)
to_delete.append(station_id)
if to_delete:
c.execute('DELETE FROM channels WHERE id IN (%s)' %
','.join('?' * len(to_delete)), to_delete)
# Add new channels
for channel in channelList:
xbmc.log('[%s] Adding Channel: %s from lineup: %s' % (
ADDON.getAddonInfo('id'), str(channel.id), str(lineup)), xbmc.LOGDEBUG)
logo = get_logo(channel)
c.execute(
'INSERT OR IGNORE INTO channels(id, title, logo, stream_url, visible, weight, source, lineup) VALUES(?, ?, ?, ?, ?, (CASE ? WHEN -1 THEN (SELECT COALESCE(MAX(weight)+1, 0) FROM channels WHERE source=?) ELSE ? END), ?, ?)',
[channel.id, channel.title, logo, '', True, -1, self.source.KEY, -1, self.source.KEY, lineup])
c.execute("UPDATE sources SET channels_updated=? WHERE id=?",
[datetime.datetime.now(), self.source.KEY])
self.conn.commit()
评论列表
文章目录