73 lines
3.1 KiB
Python
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() |