This repository was archived by the owner on Apr 2, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcommon.py
More file actions
108 lines (91 loc) · 3.49 KB
/
common.py
File metadata and controls
108 lines (91 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import xbmc, xbmcaddon, xbmcvfs
import os, sqlite3, unicodedata
import urllib.parse
import xml.etree.ElementTree as ET
addonSettings = xbmcaddon.Addon("script.profilecleaner")
addonAuthor = addonSettings.getAddonInfo("author")
addonName = addonSettings.getAddonInfo("name")
addonVersion = addonSettings.getAddonInfo("version")
addonLanguage = addonSettings.getLocalizedString
addonProfile = xbmcvfs.translatePath(addonSettings.getAddonInfo("profile"))
addonIcon = os.path.join(addonSettings.getAddonInfo("path"), "icon.png")
addonBackup = os.path.join(addonProfile, "backup")
xbmcVersion = xbmc.getInfoLabel("System.BuildVersion").split(" ")[0]
if not xbmcvfs.exists(addonProfile): xbmcvfs.mkdir(addonProfile)
if not xbmcvfs.exists(addonBackup): xbmcvfs.mkdir(addonBackup)
databaseFolder = xbmcvfs.translatePath("special://database")
thumbnailsFolder = xbmcvfs.translatePath("special://thumbnails")
homeFolder = xbmcvfs.translatePath("special://home")
# Read advancedsettings.xml for possible thumbnail folder redirection
userdataFolder = xbmcvfs.translatePath("special://profile")
if os.path.exists(os.path.join(userdataFolder, "advancedsettings.xml")):
tree = ET.parse(os.path.join(userdataFolder, "advancedsettings.xml"))
root = tree.getroot()
for node in root.getiterator('substitute'):
cfrom = node.find('from')
cto = node.find('to')
if cfrom != None and cto != None:
if cfrom.text.lower() == "special://profile/thumbnails/":
thumbnailsFolder = cto.text
thumbnailBackupFolder = addonSettings.getSetting("ThumbnailDestinationFolder")
if not thumbnailBackupFolder:
thumbnailBackupFolder = addonBackup
addonBackupFolder = addonSettings.getSetting("AddonDestinationFolder")
if not addonBackupFolder:
addonBackupFolder = addonBackup
showGUI = (addonSettings.getSetting("ShowGui") == "true")
def log(msg):
xbmc.log("[%s] - %s" % (addonName, msg), xbmc.LOGINFO)
def logError(msg):
xbmc.log("[%s] - %s" % (addonName, msg), xbmc.LOGERROR)
def _unicode(text, encoding='utf-8'):
try: text = str(text, encoding)
except: pass
return text
def normalize(text):
try: text = unicodedata.normalize('NFKD', _unicode(text))#.encode('utf-8')
except: pass
return text
def getHash(string):
string = string.lower()
bytes = bytearray(string, encoding='utf-8')
crc = 0xffffffff;
for b in bytes:
crc = crc ^ (b << 24)
for i in range(8):
if (crc & 0x80000000): crc = (crc << 1) ^ 0x04C11DB7
else: crc = crc << 1;
crc = crc & 0xFFFFFFFF
return '%08x' % crc
def humanReadableSizeOf(size):
for x in ['bytes','KB','MB','GB']:
if size < 1024.0 and size > -1024.0:
return "%3.1f%s" % (size, x)
size /= 1024.0
return "%3.1f%s" % (size, 'TB')
def removeDuplicate(lists):
#log(addonLanguage(32249)) #todo: review
seen = set()
seenAdd = seen.add
return [ x for x in lists if x not in seen and not seenAdd(x) ]
def cleanandAppendUrl( url:str, urllist: list ):
valueText = urllib.parse.unquote_plus(normalize(url))
valueText = valueText.replace("image://", "")
urllist.append(valueText)
class RawXBMC():
@staticmethod
def Query(Query):
RawXBMCConnect = ConnectToXbmcDb()
Cursor = RawXBMCConnect.cursor()
Cursor.execute(Query)
Matches = []
for Row in Cursor: Matches.append(Row)
RawXBMCConnect.commit()
Cursor.close()
return Matches
@staticmethod
def Execute(Query):
return RawXBMC.Query(Query)
def ConnectToXbmcDb():
dbHost = os.path.join(databaseFolder, "Textures" + addonSettings.getSetting("TexturesDB") + ".db")
return sqlite3.connect(dbHost)