Music: use strm files for addon paths

This commit is contained in:
tomkat83 2017-04-11 19:16:03 +02:00
parent 7a58c9ddb9
commit 2d3f19b536

View file

@ -6,10 +6,12 @@ import logging
from urllib import urlencode
from ntpath import dirname
from datetime import datetime
from xbmc import sleep
from xbmc import sleep, translatePath
from os import path as os_path, makedirs
import artwork
from utils import tryEncode, tryDecode, window, kodiSQL, CatchExceptions
from utils import tryEncode, tryDecode, window, kodiSQL, CatchExceptions, \
settings
import plexdb_functions as plexdb
import kodidb_functions as kodidb
@ -22,6 +24,12 @@ import variables as v
log = logging.getLogger("PLEX."+__name__)
MARK_PLAYED_AT = 0.90
if settings('enableMusic') == "true":
SONG_STREAM_DIR = ('special://userdata/addon_data/%s/musicstreamfiles/'
% v.ADDON_ID)
if not os_path.exists(translatePath(SONG_STREAM_DIR)):
makedirs(translatePath(SONG_STREAM_DIR))
###############################################################################
@ -1621,15 +1629,9 @@ class Music(Items):
moods.append(entry.attrib['tag'])
mood = ' / '.join(moods)
# GET THE FILE AND PATH #####
doIndirect = not self.directpath
if self.directpath:
# Direct paths is set the Kodi way
playurl = API.getFilePath(forceFirstMediaStream=True)
if playurl is None:
# Something went wrong, trying to use non-direct paths
doIndirect = True
else:
playurl = API.validatePlayurl(playurl, API.getType())
if playurl is None:
return False
@ -1640,13 +1642,18 @@ class Music(Items):
# Network share
filename = playurl.rsplit("/", 1)[1]
path = playurl.replace(filename, "")
if doIndirect:
# Plex works a bit differently
path = "%s%s" % (self.server, item[0][0].attrib.get('key'))
path = API.addPlexCredentialsToUrl(path)
filename = path.rsplit('/', 1)[1]
path = path.replace(filename, '')
else:
# now using .strm files instead to circumvent the inability to
# launch plugins directly from the library for music files
filename = '%s.strm' % songid
with open(translatePath(
'%s%s' % (SONG_STREAM_DIR, filename)), 'w') as file:
file.write('plugin://%s?dbid=%s&mode=play&id=%s'
% (v.ADDON_ID, songid, itemid))
# Avoid telling kodi in which folder the music files are, so the
# scraper can't find them (and delete them)
path = ''
filename = '%s%s' % (SONG_STREAM_DIR, filename)
# UPDATE THE SONG #####
if update_item:
log.info("UPDATE song itemid: %s - Title: %s with path: %s"