Files
addon/core/channeltoolsDB.py
2019-12-10 20:58:19 +01:00

73 lines
3.1 KiB
Python

import _sqlite3 as sql
import os
# from platformcode import config
from platformcode import config, logger
db = os.path.join(config.get_runtime_path(), 'kod_db.sqlite')
# db = '/home/casa/.kodi/userdata/addon_data/plugin.video.kod/kod_db.sqlite'
conn = sql.connect(db)
conn.row_factory = lambda c, r: dict(zip([col[0] for col in c.description], r))
cur = conn.cursor()
baseQuery = "select channels.*,(select group_concat(category) from categories WHERE categories.channel=id) as 'categories', (select group_concat(language) from languages WHERE languages.channel=id) as 'language' from channels "
thumb_path = 'https://raw.githubusercontent.com/kodiondemand/media/master/'
def filter(category, language='all', adult=False):
cur.execute(baseQuery + "join categories on channels.id=categories.channel where category=? and adult=? and active=1", (category,adult))
ris = []
for channel in cur.fetchall():
el = {}
for col in channel.keys():
if channel[col] and col in ['categories', 'language']:
el[col] = channel[col].split(',')
elif col == 'thumbnail': # remote thumbnail
el[col] = os.path.join(thumb_path, 'resources', "thumb", channel[col])
elif channel[col]:
el[col] = channel[col]
else:
el[col] = ''
ris.append(el)
# ris = [{channel[col].split(',') if col in ['category', 'language'] else channel[col]} for col in channel.keys() for channel in cur.fetchall()]
logger.info(ris)
return ris
def get_channel_parameters(channel_id):
cur.execute('select * from channels where id=?', (channel_id,))
ris = cur.fetchall()[0]
ris["channel"] = ris["id"]
ris["title"] = ris["name"]
ris["fanart"] = ''
ris["compatible"] = True
cur.execute('select category from categories where channel=?', (channel_id,))
ris["categories"] = [cat["category"] for cat in cur.fetchall()]
cur.execute('select language from languages where channel=?', (channel_id,))
ris["language"] = [lang["language"] for lang in cur.fetchall()]
ris["has_settings"] = False
return ris
def create_db():
import json
cur.execute('delete from channels')
for f in os.walk('../channels/'):
for file in f[2]:
if file.split('.')[-1] == 'json':
j = json.load(open(os.path.join(f[0], file)))
id = j.get('id', '')
name = j.get('name', '')
active = j.get('active', False)
adult = j.get('adult', False)
thumbnail = j.get('thumbnail', '')
banner = j.get('banner', '')
cur.execute('insert into channels values (?,?,?,?,?,?,?,?)', (id, name, active, adult, thumbnail, banner, '', ''))
for cat in j.get('categories', ''):
cur.execute('insert into categories values(?,?)', (id, cat))
for cat in j.get('language', 'all'):
cur.execute('insert into languages values(?,?)', (id, cat))
conn.commit()
# print get_channel_parameters('altadefinizione01')
# print create_db()