Music: use strm files for addon paths
This commit is contained in:
parent
7a58c9ddb9
commit
2d3f19b536
1 changed files with 30 additions and 23 deletions
|
@ -6,10 +6,12 @@ import logging
|
||||||
from urllib import urlencode
|
from urllib import urlencode
|
||||||
from ntpath import dirname
|
from ntpath import dirname
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from xbmc import sleep
|
from xbmc import sleep, translatePath
|
||||||
|
from os import path as os_path, makedirs
|
||||||
|
|
||||||
import artwork
|
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 plexdb_functions as plexdb
|
||||||
import kodidb_functions as kodidb
|
import kodidb_functions as kodidb
|
||||||
|
|
||||||
|
@ -22,6 +24,12 @@ import variables as v
|
||||||
log = logging.getLogger("PLEX."+__name__)
|
log = logging.getLogger("PLEX."+__name__)
|
||||||
|
|
||||||
MARK_PLAYED_AT = 0.90
|
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,32 +1629,31 @@ class Music(Items):
|
||||||
moods.append(entry.attrib['tag'])
|
moods.append(entry.attrib['tag'])
|
||||||
mood = ' / '.join(moods)
|
mood = ' / '.join(moods)
|
||||||
|
|
||||||
# GET THE FILE AND PATH #####
|
|
||||||
doIndirect = not self.directpath
|
|
||||||
if self.directpath:
|
if self.directpath:
|
||||||
# Direct paths is set the Kodi way
|
# Direct paths is set the Kodi way
|
||||||
playurl = API.getFilePath(forceFirstMediaStream=True)
|
playurl = API.getFilePath(forceFirstMediaStream=True)
|
||||||
|
playurl = API.validatePlayurl(playurl, API.getType())
|
||||||
if playurl is None:
|
if playurl is None:
|
||||||
# Something went wrong, trying to use non-direct paths
|
return False
|
||||||
doIndirect = True
|
if "\\" in playurl:
|
||||||
|
# Local path
|
||||||
|
filename = playurl.rsplit("\\", 1)[1]
|
||||||
else:
|
else:
|
||||||
playurl = API.validatePlayurl(playurl, API.getType())
|
# Network share
|
||||||
if playurl is None:
|
filename = playurl.rsplit("/", 1)[1]
|
||||||
return False
|
path = playurl.replace(filename, "")
|
||||||
if "\\" in playurl:
|
else:
|
||||||
# Local path
|
# now using .strm files instead to circumvent the inability to
|
||||||
filename = playurl.rsplit("\\", 1)[1]
|
# launch plugins directly from the library for music files
|
||||||
else:
|
filename = '%s.strm' % songid
|
||||||
# Network share
|
with open(translatePath(
|
||||||
filename = playurl.rsplit("/", 1)[1]
|
'%s%s' % (SONG_STREAM_DIR, filename)), 'w') as file:
|
||||||
path = playurl.replace(filename, "")
|
file.write('plugin://%s?dbid=%s&mode=play&id=%s'
|
||||||
if doIndirect:
|
% (v.ADDON_ID, songid, itemid))
|
||||||
# Plex works a bit differently
|
# Avoid telling kodi in which folder the music files are, so the
|
||||||
path = "%s%s" % (self.server, item[0][0].attrib.get('key'))
|
# scraper can't find them (and delete them)
|
||||||
path = API.addPlexCredentialsToUrl(path)
|
path = ''
|
||||||
filename = path.rsplit('/', 1)[1]
|
filename = '%s%s' % (SONG_STREAM_DIR, filename)
|
||||||
path = path.replace(filename, '')
|
|
||||||
|
|
||||||
# UPDATE THE SONG #####
|
# UPDATE THE SONG #####
|
||||||
if update_item:
|
if update_item:
|
||||||
log.info("UPDATE song itemid: %s - Title: %s with path: %s"
|
log.info("UPDATE song itemid: %s - Title: %s with path: %s"
|
||||||
|
|
Loading…
Reference in a new issue