Reset musicutils.py to emby

This commit is contained in:
tomkat83 2016-09-01 19:11:57 +02:00
parent f72e120cf5
commit 9c775ad644

View file

@ -6,11 +6,13 @@ import logging
import os import os
import xbmc import xbmc
import xbmcaddon
import xbmcvfs import xbmcvfs
from mutagen.flac import FLAC from mutagen.flac import FLAC, Picture
from mutagen.id3 import ID3 from mutagen.id3 import ID3
from mutagen import id3 from mutagen import id3
import base64
import read_embyserver as embyserver import read_embyserver as embyserver
from utils import window from utils import window
@ -34,7 +36,7 @@ def getRealFileName(filename, isTemp=False):
if os.path.supports_unicode_filenames: if os.path.supports_unicode_filenames:
checkfile = filename checkfile = filename
else: else:
checkfile = utils.tryEncode(filename) checkfile = filename.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(checkfile): if os.path.exists(checkfile):
@ -48,7 +50,7 @@ def getRealFileName(filename, isTemp=False):
else: filepart = filename.split("\\")[-1] else: filepart = filename.split("\\")[-1]
tempfile = "special://temp/"+filepart tempfile = "special://temp/"+filepart
xbmcvfs.copy(filename, tempfile) xbmcvfs.copy(filename, tempfile)
filename = utils.tryDecode(xbmc.translatePath(tempfile)) filename = xbmc.translatePath(tempfile).decode("utf-8")
return (isTemp,filename) return (isTemp,filename)
@ -67,14 +69,14 @@ def getEmbyRatingFromKodiRating(rating):
if (rating >= 5): favourite = True if (rating >= 5): favourite = True
return(like, favourite, deletelike) return(like, favourite, deletelike)
def getAdditionalSongTags(plexid, plex_rating, API, kodicursor, emby_db, enableimportsongrating, enableexportsongrating, enableupdatesongrating): def getAdditionalSongTags(embyid, emby_rating, API, kodicursor, emby_db, enableimportsongrating, enableexportsongrating, enableupdatesongrating):
emby = embyserver.Read_EmbyServer() emby = embyserver.Read_EmbyServer()
previous_values = None previous_values = None
filename = API.getFilePath() filename = API.getFilePath()
rating = 0 rating = 0
plex_rating = int(round(plex_rating, 0)) emby_rating = int(round(emby_rating, 0))
#get file rating and comment tag from file itself. #get file rating and comment tag from file itself.
if enableimportsongrating: if enableimportsongrating:
@ -85,7 +87,7 @@ def getAdditionalSongTags(plexid, plex_rating, API, kodicursor, emby_db, enablei
hasEmbeddedCover = False hasEmbeddedCover = False
emby_dbitem = emby_db.getItem_byId(plexid) emby_dbitem = emby_db.getItem_byId(embyid)
try: try:
kodiid = emby_dbitem[0] kodiid = emby_dbitem[0]
except TypeError: except TypeError:
@ -102,44 +104,44 @@ def getAdditionalSongTags(plexid, plex_rating, API, kodicursor, emby_db, enablei
if file_rating is None and currentvalue: if file_rating is None and currentvalue:
return (currentvalue, comment, False) return (currentvalue, comment, False)
elif file_rating is None and not currentvalue: elif file_rating is None and not currentvalue:
return (plex_rating, comment, False) return (emby_rating, comment, False)
logMsg("getAdditionalSongTags --> plexid: %s - plex_rating: %s - file_rating: %s - current rating in kodidb: %s" %(plexid, plex_rating, file_rating, currentvalue)) log.info("getAdditionalSongTags --> embyid: %s - emby_rating: %s - file_rating: %s - current rating in kodidb: %s" %(embyid, emby_rating, file_rating, currentvalue))
updateFileRating = False updateFileRating = False
updateEmbyRating = False updateEmbyRating = False
if currentvalue != None: if currentvalue != None:
# we need to translate the emby values... # we need to translate the emby values...
if plex_rating == 1 and currentvalue == 2: if emby_rating == 1 and currentvalue == 2:
plex_rating = 2 emby_rating = 2
if plex_rating == 3 and currentvalue == 4: if emby_rating == 3 and currentvalue == 4:
plex_rating = 4 emby_rating = 4
#if updating rating into file is disabled, we ignore the rating in the file... #if updating rating into file is disabled, we ignore the rating in the file...
if not enableupdatesongrating: if not enableupdatesongrating:
file_rating = currentvalue file_rating = currentvalue
#if convert emby likes/favourites convert to song rating is disabled, we ignore the emby rating... #if convert emby likes/favourites convert to song rating is disabled, we ignore the emby rating...
if not enableexportsongrating: if not enableexportsongrating:
plex_rating = currentvalue emby_rating = currentvalue
if (plex_rating == file_rating) and (file_rating != currentvalue): if (emby_rating == file_rating) and (file_rating != currentvalue):
#the rating has been updated from kodi itself, update change to both emby ands file #the rating has been updated from kodi itself, update change to both emby ands file
rating = currentvalue rating = currentvalue
updateFileRating = True updateFileRating = True
updateEmbyRating = True updateEmbyRating = True
elif (plex_rating != currentvalue) and (file_rating == currentvalue): elif (emby_rating != currentvalue) and (file_rating == currentvalue):
#emby rating changed - update the file #emby rating changed - update the file
rating = plex_rating rating = emby_rating
updateFileRating = True updateFileRating = True
elif (file_rating != currentvalue) and (plex_rating == currentvalue): elif (file_rating != currentvalue) and (emby_rating == currentvalue):
#file rating was updated, sync change to emby #file rating was updated, sync change to emby
rating = file_rating rating = file_rating
updateEmbyRating = True updateEmbyRating = True
elif (plex_rating != currentvalue) and (file_rating != currentvalue): elif (emby_rating != currentvalue) and (file_rating != currentvalue):
#both ratings have changed (corner case) - the highest rating wins... #both ratings have changed (corner case) - the highest rating wins...
if plex_rating > file_rating: if emby_rating > file_rating:
rating = plex_rating rating = emby_rating
updateFileRating = True updateFileRating = True
else: else:
rating = file_rating rating = file_rating
@ -154,16 +156,16 @@ def getAdditionalSongTags(plexid, plex_rating, API, kodicursor, emby_db, enablei
rating = file_rating rating = file_rating
#determine if we should also send the rating to emby server #determine if we should also send the rating to emby server
if enableexportsongrating: if enableexportsongrating:
if plex_rating == 1 and file_rating == 2: if emby_rating == 1 and file_rating == 2:
plex_rating = 2 emby_rating = 2
if plex_rating == 3 and file_rating == 4: if emby_rating == 3 and file_rating == 4:
plex_rating = 4 emby_rating = 4
if plex_rating != file_rating: if emby_rating != file_rating:
updateEmbyRating = True updateEmbyRating = True
elif enableexportsongrating: elif enableexportsongrating:
#set the initial rating to emby value #set the initial rating to emby value
rating = plex_rating rating = emby_rating
if updateFileRating and enableupdatesongrating: if updateFileRating and enableupdatesongrating:
updateRatingToFile(rating, filename) updateRatingToFile(rating, filename)
@ -171,8 +173,8 @@ def getAdditionalSongTags(plexid, plex_rating, API, kodicursor, emby_db, enablei
if updateEmbyRating and enableexportsongrating: if updateEmbyRating and enableexportsongrating:
# sync details to emby server. Translation needed between ID3 rating and emby likes/favourites: # sync details to emby server. Translation needed between ID3 rating and emby likes/favourites:
like, favourite, deletelike = getEmbyRatingFromKodiRating(rating) like, favourite, deletelike = getEmbyRatingFromKodiRating(rating)
utils.window("ignore-update-%s" %plexid, "true") #set temp windows prop to ignore the update from webclient update window("ignore-update-%s" %embyid, "true") #set temp windows prop to ignore the update from webclient update
emby.updateUserRating(plexid, like, favourite, deletelike) emby.updateUserRating(embyid, favourite)
return (rating, comment, hasEmbeddedCover) return (rating, comment, hasEmbeddedCover)
@ -244,7 +246,7 @@ def updateRatingToFile(rating, file):
else: filepart = file.split("\\")[-1] else: filepart = file.split("\\")[-1]
tempfile = "special://temp/"+filepart tempfile = "special://temp/"+filepart
xbmcvfs.copy(file, tempfile) xbmcvfs.copy(file, tempfile)
tempfile = utils.tryDecode(xbmc.translatePath(tempfile)) tempfile = xbmc.translatePath(tempfile).decode("utf-8")
log.info( "setting song rating: %s for filename: %s - using tempfile: %s" %(rating,file,tempfile)) log.info( "setting song rating: %s for filename: %s - using tempfile: %s" %(rating,file,tempfile))