Test gestione viste via db
This commit is contained in:
@@ -79,11 +79,16 @@ def get_platform(full_version=False):
|
|||||||
'13': 'MyVideos78.db', '14': 'MyVideos90.db', '15': 'MyVideos93.db',
|
'13': 'MyVideos78.db', '14': 'MyVideos90.db', '15': 'MyVideos93.db',
|
||||||
'16': 'MyVideos99.db', '17': 'MyVideos107.db', '18': 'MyVideos116.db',
|
'16': 'MyVideos99.db', '17': 'MyVideos107.db', '18': 'MyVideos116.db',
|
||||||
'19': 'MyVideos119.db', '20': 'MyVideos120.db'}
|
'19': 'MyVideos119.db', '20': 'MyVideos120.db'}
|
||||||
|
view_db = {'10': 'ViewModes1.db', '11': 'ViewModes4.db', '12': 'ViewModes4.db',
|
||||||
|
'13': 'ViewModes6.db', '14': 'ViewModes6.db', '15': 'ViewModes6.db',
|
||||||
|
'16': 'ViewModes6.db', '17': 'ViewModes6.db', '18': 'ViewModes6.db',
|
||||||
|
'19': 'ViewModes6.db', '20': 'ViewModes6.db'}
|
||||||
|
|
||||||
num_version = xbmc.getInfoLabel('System.BuildVersion')
|
num_version = xbmc.getInfoLabel('System.BuildVersion')
|
||||||
num_version = re.match("\d+\.\d+", num_version).group(0)
|
num_version = re.match("\d+\.\d+", num_version).group(0)
|
||||||
ret['name_version'] = codename.get(num_version.split('.')[0], num_version)
|
ret['name_version'] = codename.get(num_version.split('.')[0], num_version)
|
||||||
ret['video_db'] = video_db.get(num_version.split('.')[0], "")
|
ret['video_db'] = video_db.get(num_version.split('.')[0], "")
|
||||||
|
ret['view_db'] = view_db.get(num_version.split('.')[0], "")
|
||||||
ret['num_version'] = float(num_version)
|
ret['num_version'] = float(num_version)
|
||||||
if ret['num_version'] < 14:
|
if ret['num_version'] < 14:
|
||||||
ret['platform'] = "xbmc-" + ret['name_version']
|
ret['platform'] = "xbmc-" + ret['name_version']
|
||||||
@@ -443,3 +448,9 @@ def get_online_server_thumb(server):
|
|||||||
|
|
||||||
def get_language():
|
def get_language():
|
||||||
return get_localized_string(20001)
|
return get_localized_string(20001)
|
||||||
|
|
||||||
|
def get_skin():
|
||||||
|
import xbmc
|
||||||
|
from core import jsontools
|
||||||
|
js = '{"jsonrpc": "2.0", "method": "Settings.GetSettingValue", "params": {"setting": "lookandfeel.skin"}, "id": 1 }'
|
||||||
|
return jsontools.load(xbmc.executeJSONRPC(js)).get('result', {}).get('value')
|
||||||
|
|||||||
@@ -331,6 +331,9 @@ def render_items(itemlist, parent_item):
|
|||||||
itemlist.append(Item(title=config.get_localized_string(60347), thumbnail=thumb('nofolder')))
|
itemlist.append(Item(title=config.get_localized_string(60347), thumbnail=thumb('nofolder')))
|
||||||
|
|
||||||
mode, Type = get_view_mode(itemlist[0], parent_item)
|
mode, Type = get_view_mode(itemlist[0], parent_item)
|
||||||
|
# from core.support import dbg;dbg()
|
||||||
|
if mode:
|
||||||
|
set_view_mode(parent_item.tourl(), mode)
|
||||||
|
|
||||||
dirItems = []
|
dirItems = []
|
||||||
|
|
||||||
@@ -402,7 +405,6 @@ def render_items(itemlist, parent_item):
|
|||||||
xbmcplugin.addDirectoryItems(_handle, dirItems)
|
xbmcplugin.addDirectoryItems(_handle, dirItems)
|
||||||
|
|
||||||
if Type: xbmcplugin.setContent(handle=int(sys.argv[1]), content=Type)
|
if Type: xbmcplugin.setContent(handle=int(sys.argv[1]), content=Type)
|
||||||
if mode: xbmc.executebuiltin('Container.SetViewMode(%s)' % mode)
|
|
||||||
|
|
||||||
if parent_item.sorted:
|
if parent_item.sorted:
|
||||||
if parent_item.sorted == 'year': xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_DATE)
|
if parent_item.sorted == 'year': xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_DATE)
|
||||||
@@ -423,9 +425,9 @@ def render_items(itemlist, parent_item):
|
|||||||
|
|
||||||
xbmcplugin.endOfDirectory(_handle, succeeded=True, updateListing=False, cacheToDisc= True) # if parent_item.action in ['news', 'search', 'new_search', 'now_on_tv'] else False)
|
xbmcplugin.endOfDirectory(_handle, succeeded=True, updateListing=False, cacheToDisc= True) # if parent_item.action in ['news', 'search', 'new_search', 'now_on_tv'] else False)
|
||||||
|
|
||||||
if mode:
|
# if mode:
|
||||||
xbmc.sleep(50)
|
# xbmc.sleep(50)
|
||||||
xbmc.executebuiltin('Container.SetViewMode(%s)' % mode)
|
# xbmc.executebuiltin('Container.SetViewMode(%s)' % mode)
|
||||||
|
|
||||||
from core import db; db.close()
|
from core import db; db.close()
|
||||||
logger.debug('END renderItems')
|
logger.debug('END renderItems')
|
||||||
@@ -533,6 +535,64 @@ def get_view_mode(item, parent_item):
|
|||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
|
def set_view_mode(url, mode):
|
||||||
|
import re
|
||||||
|
find = re.findall('(%\d\w)', url, flags=re.DOTALL)
|
||||||
|
for f in find:
|
||||||
|
url = url.replace(f, f.lower())
|
||||||
|
|
||||||
|
def get_connection():
|
||||||
|
from core import filetools
|
||||||
|
|
||||||
|
file_db = ""
|
||||||
|
|
||||||
|
# We look for the archive of the video database according to the version of kodi
|
||||||
|
view_db = config.get_platform(True)['view_db']
|
||||||
|
if view_db:
|
||||||
|
file_db = filetools.join(xbmc.translatePath("special://userdata/Database"), view_db)
|
||||||
|
|
||||||
|
# alternative method to locate the database
|
||||||
|
if not file_db or not filetools.exists(file_db):
|
||||||
|
file_db = ""
|
||||||
|
for f in filetools.listdir(xbmc.translatePath("special://userdata/Database")):
|
||||||
|
path_f = filetools.join(xbmc.translatePath("special://userdata/Database"), f)
|
||||||
|
|
||||||
|
if filetools.isfile(path_f) and f.lower().startswith('viewmodes') and f.lower().endswith('.db'):
|
||||||
|
file_db = path_f
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
import sqlite3
|
||||||
|
return sqlite3.connect(file_db)
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def execute_sql(conn, sql):
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(sql)
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
return cursor.fetchall()
|
||||||
|
|
||||||
|
conn = get_connection()
|
||||||
|
if conn:
|
||||||
|
skin_name = config.get_skin()
|
||||||
|
try:
|
||||||
|
sql = 'select idView from view where (path="{}?{}" and skin="{}")'.format(sys.argv[0], url, skin_name)
|
||||||
|
records = execute_sql(conn, sql)
|
||||||
|
if records:
|
||||||
|
# from core.support import dbg;dbg()
|
||||||
|
sql = 'update view set viewMode={} where idView={}'.format(mode, records[0][0])
|
||||||
|
records = execute_sql(conn, sql)
|
||||||
|
else:
|
||||||
|
# from core.support import dbg;dbg()
|
||||||
|
sql = 'INSERT INTO view (window, path, viewMode, sortMethod, sortOrder, sortAttributes, skin) VALUES ' \
|
||||||
|
'(10025, "{}?{}", {}, 0, 1, 0, "{}")'.format(sys.argv[0], url, mode, skin_name)
|
||||||
|
records = execute_sql(conn, sql)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def set_infolabels(listitem, item, player=False):
|
def set_infolabels(listitem, item, player=False):
|
||||||
"""
|
"""
|
||||||
Method to pass the information to the listitem (see tmdb.set_InfoLabels())
|
Method to pass the information to the listitem (see tmdb.set_InfoLabels())
|
||||||
|
|||||||
Reference in New Issue
Block a user