mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 10:16:11 +00:00
Refactor 2/4
This commit is contained in:
parent
ed784bfcd9
commit
2a09fe6117
2 changed files with 226 additions and 204 deletions
215
resources/lib/CreateFiles.py
Normal file
215
resources/lib/CreateFiles.py
Normal file
|
@ -0,0 +1,215 @@
|
||||||
|
#################################################################################################
|
||||||
|
# CreateFiles
|
||||||
|
#################################################################################################
|
||||||
|
|
||||||
|
import xbmc
|
||||||
|
import xbmcgui
|
||||||
|
import xbmcaddon
|
||||||
|
import xbmcvfs
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
from xml.etree.ElementTree import Element, SubElement, Comment, tostring
|
||||||
|
from xml.etree import ElementTree
|
||||||
|
from xml.dom import minidom
|
||||||
|
import xml.etree.cElementTree as ET
|
||||||
|
|
||||||
|
from DownloadUtils import DownloadUtils
|
||||||
|
from API import API
|
||||||
|
import Utils as utils
|
||||||
|
|
||||||
|
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
|
||||||
|
addondir = xbmc.translatePath(addon.getAddonInfo('profile'))
|
||||||
|
dataPath = os.path.join(addondir,"library")
|
||||||
|
movieLibrary = os.path.join(dataPath,'movies')
|
||||||
|
tvLibrary = os.path.join(dataPath,'tvshows')
|
||||||
|
|
||||||
|
class CreateFiles():
|
||||||
|
def createSTRM(self,item,parentId=None):
|
||||||
|
|
||||||
|
item_type=str(item.get("Type")).encode('utf-8')
|
||||||
|
if item_type == "Movie":
|
||||||
|
itemPath = os.path.join(movieLibrary,item["Id"])
|
||||||
|
strmFile = os.path.join(itemPath,item["Id"] + ".strm")
|
||||||
|
|
||||||
|
if item_type == "MusicVideo":
|
||||||
|
itemPath = os.path.join(musicVideoLibrary,item["Id"])
|
||||||
|
strmFile = os.path.join(itemPath,item["Id"] + ".strm")
|
||||||
|
|
||||||
|
if item_type == "Episode":
|
||||||
|
itemPath = os.path.join(tvLibrary,parentId)
|
||||||
|
if str(item.get("IndexNumber")) != None:
|
||||||
|
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S" + str(item.get("ParentIndexNumber")) + "E" + str(item.get("IndexNumber")) + ".strm"
|
||||||
|
else:
|
||||||
|
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S0E0 " + item["Name"].decode('utf-8') + ".strm"
|
||||||
|
strmFile = os.path.join(itemPath,filenamestr)
|
||||||
|
|
||||||
|
changes = False
|
||||||
|
if not xbmcvfs.exists(strmFile):
|
||||||
|
changes = True
|
||||||
|
xbmcvfs.mkdir(itemPath)
|
||||||
|
text_file = open(strmFile, "w")
|
||||||
|
|
||||||
|
playUrl = "plugin://plugin.video.mb3sync/?id=" + item["Id"] + '&mode=play'
|
||||||
|
|
||||||
|
text_file.writelines(playUrl)
|
||||||
|
text_file.close()
|
||||||
|
|
||||||
|
return changes
|
||||||
|
|
||||||
|
def createNFO(self,item, parentId=None):
|
||||||
|
downloadUtils = DownloadUtils()
|
||||||
|
timeInfo = API().getTimeInfo(item)
|
||||||
|
userData=API().getUserData(item)
|
||||||
|
people = API().getPeople(item)
|
||||||
|
mediaStreams=API().getMediaStreams(item)
|
||||||
|
studios = API().getStudios(item)
|
||||||
|
userid = downloadUtils.getUserId()
|
||||||
|
port = addon.getSetting('port')
|
||||||
|
host = addon.getSetting('ipaddress')
|
||||||
|
server = host + ":" + port
|
||||||
|
item_type=str(item.get("Type"))
|
||||||
|
|
||||||
|
if item_type == "Movie":
|
||||||
|
itemPath = os.path.join(movieLibrary,item["Id"])
|
||||||
|
nfoFile = os.path.join(itemPath,item["Id"] + ".nfo")
|
||||||
|
rootelement = "movie"
|
||||||
|
if item_type == "Series":
|
||||||
|
itemPath = os.path.join(tvLibrary,item["Id"])
|
||||||
|
nfoFile = os.path.join(itemPath,"tvshow.nfo")
|
||||||
|
rootelement = "tvshow"
|
||||||
|
if item_type == "Episode":
|
||||||
|
itemPath = os.path.join(tvLibrary,parentId)
|
||||||
|
if str(item.get("ParentIndexNumber")) != None:
|
||||||
|
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S" + str(item.get("ParentIndexNumber")) + "E" + str(item.get("IndexNumber")) + ".nfo"
|
||||||
|
else:
|
||||||
|
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S0E0 " + item["Name"].decode('utf-8') + ".nfo"
|
||||||
|
nfoFile = os.path.join(itemPath,filenamestr)
|
||||||
|
rootelement = "episodedetails"
|
||||||
|
|
||||||
|
changes = False
|
||||||
|
if not xbmcvfs.exists(nfoFile):
|
||||||
|
changes = True
|
||||||
|
utils.logMsg("MB3 Syncer","creating NFO file " + nfoFile)
|
||||||
|
xbmcvfs.mkdir(itemPath)
|
||||||
|
root = Element(rootelement)
|
||||||
|
SubElement(root, "id").text = item["Id"]
|
||||||
|
if item.get("Tag") != None:
|
||||||
|
for tag in item.get("Tag"):
|
||||||
|
SubElement(root, "tag").text = tag
|
||||||
|
|
||||||
|
SubElement(root, "thumb").text = API().getArtwork(item, "Primary")
|
||||||
|
SubElement(root, "fanart").text = API().getArtwork(item, "Backdrop")
|
||||||
|
SubElement(root, "title").text = utils.convertEncoding(item["Name"])
|
||||||
|
SubElement(root, "originaltitle").text = utils.convertEncoding(item["Name"])
|
||||||
|
SubElement(root, "sorttitle").text = utils.convertEncoding(item["SortName"])
|
||||||
|
|
||||||
|
if item.has_key("OfficialRating"):
|
||||||
|
SubElement(root, "mpaa").text = item["OfficialRating"]
|
||||||
|
|
||||||
|
if item.get("CriticRating") != None:
|
||||||
|
rating = int(item.get("CriticRating"))/10
|
||||||
|
SubElement(root, "rating").text = str(rating)
|
||||||
|
|
||||||
|
if item.get("DateCreated") != None:
|
||||||
|
SubElement(root, "dateadded").text = item["DateCreated"]
|
||||||
|
|
||||||
|
if userData.get("PlayCount") != None:
|
||||||
|
SubElement(root, "playcount").text = userData.get("PlayCount")
|
||||||
|
if int(userData.get("PlayCount")) > 0:
|
||||||
|
SubElement(root, "watched").text = "true"
|
||||||
|
|
||||||
|
if timeInfo.get("ResumeTime") != None:
|
||||||
|
resume_sec = int(round(float(timeInfo.get("ResumeTime"))))*60
|
||||||
|
total_sec = int(round(float(timeInfo.get("TotalTime"))))*60
|
||||||
|
resume = SubElement(root, "resume")
|
||||||
|
SubElement(resume, "position").text = str(resume_sec)
|
||||||
|
SubElement(resume, "total").text = str(total_sec)
|
||||||
|
|
||||||
|
if item_type == "Episode":
|
||||||
|
SubElement(root, "season").text = str(item.get("ParentIndexNumber"))
|
||||||
|
SubElement(root, "episode").text = str(item.get("IndexNumber"))
|
||||||
|
SubElement(root, "aired").text = str(item.get("ProductionYear"))
|
||||||
|
|
||||||
|
SubElement(root, "year").text = str(item.get("ProductionYear"))
|
||||||
|
if item.get("PremiereDate") != None:
|
||||||
|
premieredatelist = (item.get("PremiereDate")).split("T")
|
||||||
|
premieredate = premieredatelist[0]
|
||||||
|
SubElement(root, "firstaired").text = premieredate
|
||||||
|
SubElement(root, "premieredate").text = premieredate
|
||||||
|
|
||||||
|
if(timeInfo.get('Duration') != "0"):
|
||||||
|
SubElement(root, "runtime").text = str(timeInfo.get('Duration'))
|
||||||
|
|
||||||
|
SubElement(root, "plot").text = utils.convertEncoding(API().getOverview(item))
|
||||||
|
|
||||||
|
if item.get("ShortOverview") != None:
|
||||||
|
SubElement(root, "plotoutline").text = utils.convertEncoding(item.get("ShortOverview"))
|
||||||
|
|
||||||
|
if item.get("TmdbCollectionName") != None:
|
||||||
|
SubElement(root, "set").text = item.get("TmdbCollectionName")
|
||||||
|
|
||||||
|
if item.get("ProviderIds") != None:
|
||||||
|
if item.get("ProviderIds").get("Imdb") != None:
|
||||||
|
SubElement(root, "imdbnumber").text = item
|
||||||
|
|
||||||
|
if people.get("Writer") != None:
|
||||||
|
for writer in people.get("Writer"):
|
||||||
|
SubElement(root, "writer").text = utils.convertEncoding(writer)
|
||||||
|
|
||||||
|
if people.get("Director") != None:
|
||||||
|
for director in people.get("Director"):
|
||||||
|
SubElement(root, "director").text = utils.convertEncoding(director)
|
||||||
|
|
||||||
|
if item.get("Genres") != None:
|
||||||
|
for genre in item.get("Genres"):
|
||||||
|
SubElement(root, "genre").text = utils.convertEncoding(genre)
|
||||||
|
|
||||||
|
if studios != None:
|
||||||
|
for studio in studios:
|
||||||
|
SubElement(root, "studio").text = utils.convertEncoding(studio)
|
||||||
|
|
||||||
|
if item.get("ProductionLocations") != None:
|
||||||
|
for country in item.get("ProductionLocations"):
|
||||||
|
SubElement(root, "country").text = utils.convertEncoding(country)
|
||||||
|
|
||||||
|
#trailer link
|
||||||
|
trailerUrl = None
|
||||||
|
if item.get("LocalTrailerCount") != None and item.get("LocalTrailerCount") > 0:
|
||||||
|
itemTrailerUrl = "http://" + server + "/mediabrowser/Users/" + userid + "/Items/" + item.get("Id") + "/LocalTrailers?format=json"
|
||||||
|
jsonData = downloadUtils.downloadUrl(itemTrailerUrl, suppress=True, popup=0 )
|
||||||
|
if(jsonData != ""):
|
||||||
|
trailerItem = json.loads(jsonData)
|
||||||
|
trailerUrl = "plugin://plugin.video.mb3sync/?id=" + trailerItem[0].get("Id") + '&mode=play'
|
||||||
|
SubElement(root, "trailer").text = trailerUrl
|
||||||
|
|
||||||
|
#add streamdetails
|
||||||
|
fileinfo = SubElement(root, "fileinfo")
|
||||||
|
streamdetails = SubElement(fileinfo, "streamdetails")
|
||||||
|
video = SubElement(streamdetails, "video")
|
||||||
|
SubElement(video, "duration").text = str(mediaStreams.get('totaltime'))
|
||||||
|
SubElement(video, "aspect").text = mediaStreams.get('aspectratio')
|
||||||
|
SubElement(video, "codec").text = mediaStreams.get('videocodec')
|
||||||
|
SubElement(video, "width").text = str(mediaStreams.get('width'))
|
||||||
|
SubElement(video, "height").text = str(mediaStreams.get('height'))
|
||||||
|
SubElement(video, "duration").text = str(timeInfo.get('Duration'))
|
||||||
|
|
||||||
|
audio = SubElement(streamdetails, "audio")
|
||||||
|
SubElement(audio, "codec").text = mediaStreams.get('audiocodec')
|
||||||
|
SubElement(audio, "channels").text = mediaStreams.get('channels')
|
||||||
|
|
||||||
|
#add people
|
||||||
|
if item.get("People") != None:
|
||||||
|
for actor in item.get("People"):
|
||||||
|
if(actor.get("Type") == "Actor"):
|
||||||
|
actor_elem = SubElement(root, "actor")
|
||||||
|
SubElement(actor_elem, "name").text = utils.convertEncoding(actor.get("Name"))
|
||||||
|
SubElement(actor_elem, "type").text = utils.convertEncoding(actor.get("Role"))
|
||||||
|
SubElement(actor_elem, "thumb").text = downloadUtils.imageUrl(actor.get("Id"), "Primary", 0, 400, 400)
|
||||||
|
|
||||||
|
ET.ElementTree(root).write(nfoFile, xml_declaration=True)
|
||||||
|
return changes
|
||||||
|
|
||||||
|
def CleanName(self, name):
|
||||||
|
name = name.replace(":", "-")
|
||||||
|
return name
|
|
@ -15,15 +15,11 @@ from datetime import datetime, timedelta, time
|
||||||
import urllib2
|
import urllib2
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from xml.etree.ElementTree import Element, SubElement, Comment, tostring
|
|
||||||
from xml.etree import ElementTree
|
|
||||||
from xml.dom import minidom
|
|
||||||
import xml.etree.cElementTree as ET
|
|
||||||
|
|
||||||
from API import API
|
from API import API
|
||||||
import Utils as utils
|
import Utils as utils
|
||||||
from DownloadUtils import DownloadUtils
|
from DownloadUtils import DownloadUtils
|
||||||
from ReadEmbyDB import ReadEmbyDB
|
from ReadEmbyDB import ReadEmbyDB
|
||||||
|
from CreateFiles import CreateFiles
|
||||||
|
|
||||||
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
|
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
|
||||||
addondir = xbmc.translatePath(addon.getAddonInfo('profile'))
|
addondir = xbmc.translatePath(addon.getAddonInfo('profile'))
|
||||||
|
@ -447,8 +443,8 @@ class LibrarySync():
|
||||||
#add actors
|
#add actors
|
||||||
self.AddActorsToMedia(KodiItem,MBitem.get("People"),"movie")
|
self.AddActorsToMedia(KodiItem,MBitem.get("People"),"movie")
|
||||||
|
|
||||||
self.createSTRM(MBitem)
|
CreateFiles().createSTRM(MBitem)
|
||||||
self.createNFO(MBitem)
|
CreateFiles().createNFO(MBitem)
|
||||||
|
|
||||||
if changes:
|
if changes:
|
||||||
utils.logMsg("Updated item to Kodi Library", MBitem["Id"] + " - " + MBitem["Name"])
|
utils.logMsg("Updated item to Kodi Library", MBitem["Id"] + " - " + MBitem["Name"])
|
||||||
|
@ -508,7 +504,7 @@ class LibrarySync():
|
||||||
#add actors
|
#add actors
|
||||||
changes = self.AddActorsToMedia(KodiItem,MBitem.get("People"),"tvshow")
|
changes = self.AddActorsToMedia(KodiItem,MBitem.get("People"),"tvshow")
|
||||||
|
|
||||||
self.createNFO(MBitem)
|
CreateFiles().createNFO(MBitem)
|
||||||
|
|
||||||
if changes:
|
if changes:
|
||||||
utils.logMsg("Updated item to Kodi Library", MBitem["Id"] + " - " + MBitem["Name"])
|
utils.logMsg("Updated item to Kodi Library", MBitem["Id"] + " - " + MBitem["Name"])
|
||||||
|
@ -566,8 +562,8 @@ class LibrarySync():
|
||||||
#add actors
|
#add actors
|
||||||
changes = self.AddActorsToMedia(KodiItem,MBitem.get("People"),"episode")
|
changes = self.AddActorsToMedia(KodiItem,MBitem.get("People"),"episode")
|
||||||
|
|
||||||
self.createNFO(MBitem, tvshowId)
|
CreateFiles().createNFO(MBitem, tvshowId)
|
||||||
self.createSTRM(MBitem, tvshowId)
|
CreateFiles().createSTRM(MBitem, tvshowId)
|
||||||
|
|
||||||
if changes:
|
if changes:
|
||||||
utils.logMsg("Updated item to Kodi Library", MBitem["Id"] + " - " + MBitem["Name"])
|
utils.logMsg("Updated item to Kodi Library", MBitem["Id"] + " - " + MBitem["Name"])
|
||||||
|
@ -671,195 +667,6 @@ class LibrarySync():
|
||||||
|
|
||||||
return pendingChanges
|
return pendingChanges
|
||||||
|
|
||||||
def CleanName(self, name):
|
|
||||||
name = name.replace(":", "-")
|
|
||||||
return name
|
|
||||||
|
|
||||||
def createSTRM(self,item,parentId=None):
|
|
||||||
|
|
||||||
item_type=str(item.get("Type")).encode('utf-8')
|
|
||||||
if item_type == "Movie":
|
|
||||||
itemPath = os.path.join(movieLibrary,item["Id"])
|
|
||||||
strmFile = os.path.join(itemPath,item["Id"] + ".strm")
|
|
||||||
|
|
||||||
if item_type == "MusicVideo":
|
|
||||||
itemPath = os.path.join(musicVideoLibrary,item["Id"])
|
|
||||||
strmFile = os.path.join(itemPath,item["Id"] + ".strm")
|
|
||||||
|
|
||||||
if item_type == "Episode":
|
|
||||||
itemPath = os.path.join(tvLibrary,parentId)
|
|
||||||
if str(item.get("IndexNumber")) != None:
|
|
||||||
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S" + str(item.get("ParentIndexNumber")) + "E" + str(item.get("IndexNumber")) + ".strm"
|
|
||||||
else:
|
|
||||||
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S0E0 " + item["Name"].decode('utf-8') + ".strm"
|
|
||||||
strmFile = os.path.join(itemPath,filenamestr)
|
|
||||||
|
|
||||||
changes = False
|
|
||||||
if not xbmcvfs.exists(strmFile):
|
|
||||||
changes = True
|
|
||||||
xbmcvfs.mkdir(itemPath)
|
|
||||||
text_file = open(strmFile, "w")
|
|
||||||
|
|
||||||
playUrl = "plugin://plugin.video.mb3sync/?id=" + item["Id"] + '&mode=play'
|
|
||||||
|
|
||||||
text_file.writelines(playUrl)
|
|
||||||
text_file.close()
|
|
||||||
|
|
||||||
return changes
|
|
||||||
|
|
||||||
def createNFO(self,item, parentId=None):
|
|
||||||
downloadUtils = DownloadUtils()
|
|
||||||
timeInfo = API().getTimeInfo(item)
|
|
||||||
userData=API().getUserData(item)
|
|
||||||
people = API().getPeople(item)
|
|
||||||
mediaStreams=API().getMediaStreams(item)
|
|
||||||
studios = API().getStudios(item)
|
|
||||||
userid = downloadUtils.getUserId()
|
|
||||||
port = addon.getSetting('port')
|
|
||||||
host = addon.getSetting('ipaddress')
|
|
||||||
server = host + ":" + port
|
|
||||||
item_type=str(item.get("Type"))
|
|
||||||
|
|
||||||
if item_type == "Movie":
|
|
||||||
itemPath = os.path.join(movieLibrary,item["Id"])
|
|
||||||
nfoFile = os.path.join(itemPath,item["Id"] + ".nfo")
|
|
||||||
rootelement = "movie"
|
|
||||||
if item_type == "Series":
|
|
||||||
itemPath = os.path.join(tvLibrary,item["Id"])
|
|
||||||
nfoFile = os.path.join(itemPath,"tvshow.nfo")
|
|
||||||
rootelement = "tvshow"
|
|
||||||
if item_type == "Episode":
|
|
||||||
itemPath = os.path.join(tvLibrary,parentId)
|
|
||||||
if str(item.get("ParentIndexNumber")) != None:
|
|
||||||
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S" + str(item.get("ParentIndexNumber")) + "E" + str(item.get("IndexNumber")) + ".nfo"
|
|
||||||
else:
|
|
||||||
filenamestr = self.CleanName(item.get("SeriesName")).encode('utf-8') + " S0E0 " + item["Name"].decode('utf-8') + ".nfo"
|
|
||||||
nfoFile = os.path.join(itemPath,filenamestr)
|
|
||||||
rootelement = "episodedetails"
|
|
||||||
|
|
||||||
changes = False
|
|
||||||
if not xbmcvfs.exists(nfoFile):
|
|
||||||
changes = True
|
|
||||||
utils.logMsg("MB3 Syncer","creating NFO file " + nfoFile)
|
|
||||||
xbmcvfs.mkdir(itemPath)
|
|
||||||
root = Element(rootelement)
|
|
||||||
SubElement(root, "id").text = item["Id"]
|
|
||||||
if item.get("Tag") != None:
|
|
||||||
for tag in item.get("Tag"):
|
|
||||||
SubElement(root, "tag").text = tag
|
|
||||||
|
|
||||||
SubElement(root, "thumb").text = API().getArtwork(item, "Primary")
|
|
||||||
SubElement(root, "fanart").text = API().getArtwork(item, "Backdrop")
|
|
||||||
SubElement(root, "title").text = utils.convertEncoding(item["Name"])
|
|
||||||
SubElement(root, "originaltitle").text = utils.convertEncoding(item["Name"])
|
|
||||||
SubElement(root, "sorttitle").text = utils.convertEncoding(item["SortName"])
|
|
||||||
|
|
||||||
if item.has_key("OfficialRating"):
|
|
||||||
SubElement(root, "mpaa").text = item["OfficialRating"]
|
|
||||||
|
|
||||||
if item.get("CriticRating") != None:
|
|
||||||
rating = int(item.get("CriticRating"))/10
|
|
||||||
SubElement(root, "rating").text = str(rating)
|
|
||||||
|
|
||||||
if item.get("DateCreated") != None:
|
|
||||||
SubElement(root, "dateadded").text = item["DateCreated"]
|
|
||||||
|
|
||||||
if userData.get("PlayCount") != None:
|
|
||||||
SubElement(root, "playcount").text = userData.get("PlayCount")
|
|
||||||
if int(userData.get("PlayCount")) > 0:
|
|
||||||
SubElement(root, "watched").text = "true"
|
|
||||||
|
|
||||||
if timeInfo.get("ResumeTime") != None:
|
|
||||||
resume_sec = int(round(float(timeInfo.get("ResumeTime"))))*60
|
|
||||||
total_sec = int(round(float(timeInfo.get("TotalTime"))))*60
|
|
||||||
resume = SubElement(root, "resume")
|
|
||||||
SubElement(resume, "position").text = str(resume_sec)
|
|
||||||
SubElement(resume, "total").text = str(total_sec)
|
|
||||||
|
|
||||||
if item_type == "Episode":
|
|
||||||
SubElement(root, "season").text = str(item.get("ParentIndexNumber"))
|
|
||||||
SubElement(root, "episode").text = str(item.get("IndexNumber"))
|
|
||||||
SubElement(root, "aired").text = str(item.get("ProductionYear"))
|
|
||||||
|
|
||||||
SubElement(root, "year").text = str(item.get("ProductionYear"))
|
|
||||||
if item.get("PremiereDate") != None:
|
|
||||||
premieredatelist = (item.get("PremiereDate")).split("T")
|
|
||||||
premieredate = premieredatelist[0]
|
|
||||||
SubElement(root, "firstaired").text = premieredate
|
|
||||||
SubElement(root, "premieredate").text = premieredate
|
|
||||||
|
|
||||||
if(timeInfo.get('Duration') != "0"):
|
|
||||||
SubElement(root, "runtime").text = str(timeInfo.get('Duration'))
|
|
||||||
|
|
||||||
SubElement(root, "plot").text = utils.convertEncoding(API().getOverview(item))
|
|
||||||
|
|
||||||
if item.get("ShortOverview") != None:
|
|
||||||
SubElement(root, "plotoutline").text = utils.convertEncoding(item.get("ShortOverview"))
|
|
||||||
|
|
||||||
if item.get("TmdbCollectionName") != None:
|
|
||||||
SubElement(root, "set").text = item.get("TmdbCollectionName")
|
|
||||||
|
|
||||||
if item.get("ProviderIds") != None:
|
|
||||||
if item.get("ProviderIds").get("Imdb") != None:
|
|
||||||
SubElement(root, "imdbnumber").text = item
|
|
||||||
|
|
||||||
if people.get("Writer") != None:
|
|
||||||
for writer in people.get("Writer"):
|
|
||||||
SubElement(root, "writer").text = utils.convertEncoding(writer)
|
|
||||||
|
|
||||||
if people.get("Director") != None:
|
|
||||||
for director in people.get("Director"):
|
|
||||||
SubElement(root, "director").text = utils.convertEncoding(director)
|
|
||||||
|
|
||||||
if item.get("Genres") != None:
|
|
||||||
for genre in item.get("Genres"):
|
|
||||||
SubElement(root, "genre").text = utils.convertEncoding(genre)
|
|
||||||
|
|
||||||
if studios != None:
|
|
||||||
for studio in studios:
|
|
||||||
SubElement(root, "studio").text = utils.convertEncoding(studio)
|
|
||||||
|
|
||||||
if item.get("ProductionLocations") != None:
|
|
||||||
for country in item.get("ProductionLocations"):
|
|
||||||
SubElement(root, "country").text = utils.convertEncoding(country)
|
|
||||||
|
|
||||||
#trailer link
|
|
||||||
trailerUrl = None
|
|
||||||
if item.get("LocalTrailerCount") != None and item.get("LocalTrailerCount") > 0:
|
|
||||||
itemTrailerUrl = "http://" + server + "/mediabrowser/Users/" + userid + "/Items/" + item.get("Id") + "/LocalTrailers?format=json"
|
|
||||||
jsonData = downloadUtils.downloadUrl(itemTrailerUrl, suppress=True, popup=0 )
|
|
||||||
if(jsonData != ""):
|
|
||||||
trailerItem = json.loads(jsonData)
|
|
||||||
trailerUrl = "plugin://plugin.video.mb3sync/?id=" + trailerItem[0].get("Id") + '&mode=play'
|
|
||||||
SubElement(root, "trailer").text = trailerUrl
|
|
||||||
|
|
||||||
#add streamdetails
|
|
||||||
fileinfo = SubElement(root, "fileinfo")
|
|
||||||
streamdetails = SubElement(fileinfo, "streamdetails")
|
|
||||||
video = SubElement(streamdetails, "video")
|
|
||||||
SubElement(video, "duration").text = str(mediaStreams.get('totaltime'))
|
|
||||||
SubElement(video, "aspect").text = mediaStreams.get('aspectratio')
|
|
||||||
SubElement(video, "codec").text = mediaStreams.get('videocodec')
|
|
||||||
SubElement(video, "width").text = str(mediaStreams.get('width'))
|
|
||||||
SubElement(video, "height").text = str(mediaStreams.get('height'))
|
|
||||||
SubElement(video, "duration").text = str(timeInfo.get('Duration'))
|
|
||||||
|
|
||||||
audio = SubElement(streamdetails, "audio")
|
|
||||||
SubElement(audio, "codec").text = mediaStreams.get('audiocodec')
|
|
||||||
SubElement(audio, "channels").text = mediaStreams.get('channels')
|
|
||||||
|
|
||||||
#add people
|
|
||||||
if item.get("People") != None:
|
|
||||||
for actor in item.get("People"):
|
|
||||||
if(actor.get("Type") == "Actor"):
|
|
||||||
actor_elem = SubElement(root, "actor")
|
|
||||||
SubElement(actor_elem, "name").text = utils.convertEncoding(actor.get("Name"))
|
|
||||||
SubElement(actor_elem, "type").text = utils.convertEncoding(actor.get("Role"))
|
|
||||||
SubElement(actor_elem, "thumb").text = downloadUtils.imageUrl(actor.get("Id"), "Primary", 0, 400, 400)
|
|
||||||
|
|
||||||
ET.ElementTree(root).write(nfoFile, xml_declaration=True)
|
|
||||||
return changes
|
|
||||||
|
|
||||||
def addMovieToKodiLibrary( self, item ):
|
def addMovieToKodiLibrary( self, item ):
|
||||||
itemPath = os.path.join(movieLibrary,item["Id"])
|
itemPath = os.path.join(movieLibrary,item["Id"])
|
||||||
strmFile = os.path.join(itemPath,item["Id"] + ".strm")
|
strmFile = os.path.join(itemPath,item["Id"] + ".strm")
|
||||||
|
@ -871,10 +678,10 @@ class LibrarySync():
|
||||||
xbmcvfs.mkdir(itemPath)
|
xbmcvfs.mkdir(itemPath)
|
||||||
|
|
||||||
#create nfo file
|
#create nfo file
|
||||||
changes = self.createNFO(item)
|
changes = CreateFiles().createNFO(item)
|
||||||
|
|
||||||
# create strm file
|
# create strm file
|
||||||
changes = self.createSTRM(item)
|
changes = CreateFiles().createSTRM(item)
|
||||||
|
|
||||||
if changes:
|
if changes:
|
||||||
utils.logMsg("MB3 Sync","Added movie to Kodi Library",item["Id"] + " - " + item["Name"])
|
utils.logMsg("MB3 Sync","Added movie to Kodi Library",item["Id"] + " - " + item["Name"])
|
||||||
|
@ -884,10 +691,10 @@ class LibrarySync():
|
||||||
changes = False
|
changes = False
|
||||||
|
|
||||||
#create nfo file
|
#create nfo file
|
||||||
changes = self.createNFO(item, tvshowId)
|
changes = CreateFiles().createNFO(item, tvshowId)
|
||||||
|
|
||||||
# create strm file
|
# create strm file
|
||||||
changes = self.createSTRM(item, tvshowId)
|
changes = CreateFiles().createSTRM(item, tvshowId)
|
||||||
|
|
||||||
if changes:
|
if changes:
|
||||||
utils.logMsg("MB3 Sync","Added episode to Kodi Library",item["Id"] + " - " + item["Name"])
|
utils.logMsg("MB3 Sync","Added episode to Kodi Library",item["Id"] + " - " + item["Name"])
|
||||||
|
@ -911,7 +718,7 @@ class LibrarySync():
|
||||||
xbmcvfs.mkdir(itemPath)
|
xbmcvfs.mkdir(itemPath)
|
||||||
|
|
||||||
#create nfo file
|
#create nfo file
|
||||||
changes = self.createNFO(item)
|
changes = CreateFiles().createNFO(item)
|
||||||
|
|
||||||
if changes:
|
if changes:
|
||||||
utils.logMsg("Added TV Show to Kodi Library ",item["Id"] + " - " + item["Name"])
|
utils.logMsg("Added TV Show to Kodi Library ",item["Id"] + " - " + item["Name"])
|
||||||
|
|
Loading…
Reference in a new issue