more unicode fixes: os.path functions use unicode depending on the OS

This commit is contained in:
marcelveldt 2016-01-18 12:05:05 +01:00
parent 2bd1d139c1
commit eae4fea76a
7 changed files with 30 additions and 13 deletions

View File

@ -185,7 +185,10 @@ class Artwork():
for dir in allDirs: for dir in allDirs:
allDirs, allFiles = xbmcvfs.listdir(path+dir) allDirs, allFiles = xbmcvfs.listdir(path+dir)
for file in allFiles: for file in allFiles:
if os.path.supports_unicode_filenames:
xbmcvfs.delete(os.path.join(path+dir.decode('utf-8'),file.decode('utf-8'))) xbmcvfs.delete(os.path.join(path+dir.decode('utf-8'),file.decode('utf-8')))
else:
xbmcvfs.delete(os.path.join(path.encode('utf-8')+dir,file))
# remove all existing data from texture DB # remove all existing data from texture DB
textureconnection = utils.kodiSQL('texture') textureconnection = utils.kodiSQL('texture')

View File

@ -76,7 +76,10 @@ class ClientInfo():
return clientId return clientId
addon_path = self.addon.getAddonInfo('path').decode('utf-8') addon_path = self.addon.getAddonInfo('path').decode('utf-8')
if os.path.supports_unicode_filenames:
GUID_file = xbmc.translatePath(os.path.join(addon_path, "machine_guid")).decode('utf-8') GUID_file = xbmc.translatePath(os.path.join(addon_path, "machine_guid")).decode('utf-8')
else:
GUID_file = xbmc.translatePath(os.path.join(addon_path.encode("utf-8"), "machine_guid")).decode('utf-8')
try: try:
GUID = xbmcvfs.File(GUID_file) GUID = xbmcvfs.File(GUID_file)

View File

@ -326,7 +326,7 @@ class DownloadUtils():
elif r.status_code == requests.codes.ok: elif r.status_code == requests.codes.ok:
try: try:
# UTF-8 - JSON object # UNICODE - JSON object
r = r.json() r = r.json()
self.logMsg("====== 200 Success ======", 2) self.logMsg("====== 200 Success ======", 2)
self.logMsg("Response: %s" % r, 2) self.logMsg("Response: %s" % r, 2)

View File

@ -990,7 +990,10 @@ def getExtraFanArt():
for backdrop in backdrops: for backdrop in backdrops:
# Same ordering as in artwork # Same ordering as in artwork
tag = tags[count] tag = tags[count]
if os.path.supports_unicode_filenames:
fanartFile = os.path.join(fanartDir, "fanart%s.jpg" % tag) fanartFile = os.path.join(fanartDir, "fanart%s.jpg" % tag)
else:
fanartFile = os.path.join(fanartDir.encode("utf-8"), "fanart%s.jpg" % tag.encode("utf-8"))
li = xbmcgui.ListItem(tag, path=fanartFile) li = xbmcgui.ListItem(tag, path=fanartFile)
xbmcplugin.addDirectoryItem( xbmcplugin.addDirectoryItem(
handle=int(sys.argv[1]), handle=int(sys.argv[1]),

View File

@ -2208,8 +2208,10 @@ class Music(Items):
filename = API.getFilePath() filename = API.getFilePath()
rating = 0 rating = 0
emby_rating = int(round(emby_rating, 0)) emby_rating = int(round(emby_rating, 0))
file_rating, comment = musicutils.getSongTags(filename)
#get file rating and comment tag from file itself.
#TODO: should we make this an optional setting if it impacts sync speed too much ?
file_rating, comment = musicutils.getSongTags(filename)
emby_dbitem = self.emby_db.getItem_byId(embyid) emby_dbitem = self.emby_db.getItem_byId(embyid)
try: try:
@ -2228,7 +2230,6 @@ class Music(Items):
elif file_rating is None and not currentvalue: elif file_rating is None and not currentvalue:
return (emby_rating, comment) return (emby_rating, comment)
file_rating = int(round(file_rating,0))
self.logMsg("getSongRatingAndComment --> embyid: %s - emby_rating: %s - file_rating: %s - current rating in kodidb: %s" %(embyid, emby_rating, file_rating, currentvalue)) self.logMsg("getSongRatingAndComment --> embyid: %s - emby_rating: %s - file_rating: %s - current rating in kodidb: %s" %(embyid, emby_rating, file_rating, currentvalue))
updateFileRating = False updateFileRating = False

View File

@ -72,7 +72,7 @@ class KodiMonitor(xbmc.Monitor):
self.logMsg("Method: %s Data: %s" % (method, data), 1) self.logMsg("Method: %s Data: %s" % (method, data), 1)
if data: if data:
data = json.loads(data) data = json.loads(data,'utf-8')
if method == "Player.OnPlay": if method == "Player.OnPlay":

View File

@ -24,10 +24,16 @@ def getRealFileName(filename):
logMsg( "File does not exist! %s" %(filename), 0) logMsg( "File does not exist! %s" %(filename), 0)
return (False, "") return (False, "")
#if we use os.path method on older python versions (sunch as some android builds), we need to pass arguments as string
if os.path.supports_unicode_filenames:
checkfile = filename
else:
checkfile = file.encode("utf-8")
# determine if our python module is able to access the file directly... # determine if our python module is able to access the file directly...
if os.path.exists(filename): if os.path.exists(checkfile):
filename = filename filename = filename
elif os.path.exists(filename.replace("smb://","\\\\").replace("/","\\")): elif os.path.exists(checkfile.replace("smb://","\\\\").replace("/","\\")):
filename = filename.replace("smb://","\\\\").replace("/","\\") filename = filename.replace("smb://","\\\\").replace("/","\\")
else: else:
#file can not be accessed by python directly, we copy it for processing... #file can not be accessed by python directly, we copy it for processing...
@ -57,7 +63,7 @@ def getEmbyRatingFromKodiRating(rating):
def getSongTags(file): def getSongTags(file):
# Get the actual ID3 tags for music songs as the server is lacking that info # Get the actual ID3 tags for music songs as the server is lacking that info
rating = None rating = 0
comment = "" comment = ""
isTemp,filename = getRealFileName(file) isTemp,filename = getRealFileName(file)
@ -84,12 +90,13 @@ def getSongTags(file):
else: else:
logMsg( "Not supported fileformat or unable to access file: %s" %(filename)) logMsg( "Not supported fileformat or unable to access file: %s" %(filename))
if rating: #the rating must be a round value
rating = int(round(rating,0)) rating = int(round(rating,0))
except Exception as e: except Exception as e:
#file in use ? #file in use ?
logMsg("Exception in getSongTags %s" %e,0) logMsg("Exception in getSongTags %s" %e,0)
return (None,"")
#remove tempfile if needed.... #remove tempfile if needed....
if isTemp: xbmcvfs.delete(filename) if isTemp: xbmcvfs.delete(filename)