Refactor 1/4

This commit is contained in:
xnappo 2015-03-17 12:51:45 -05:00
parent ed77944543
commit ed784bfcd9
2 changed files with 134 additions and 120 deletions

View File

@ -23,6 +23,7 @@ import xml.etree.cElementTree as ET
from API import API
import Utils as utils
from DownloadUtils import DownloadUtils
from ReadEmbyDB import ReadEmbyDB
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
addondir = xbmc.translatePath(addon.getAddonInfo('profile'))
@ -58,10 +59,10 @@ class LibrarySync():
if processMovies:
allMovies = list()
views = self.getCollections("movies")
views = ReadEmbyDB().getCollections("movies")
for view in views:
movieData = self.getMovies(view.get('id'), True)
movieData = ReadEmbyDB().getMovies(view.get('id'), True)
if(self.ShouldStop()):
return True
@ -103,7 +104,7 @@ class LibrarySync():
if processTvShows:
allTVShows = list()
allEpisodes = list()
tvShowData = self.getTVShows(True)
tvShowData = ReadEmbyDB().getTVShows(True)
if(self.ShouldStop()):
return True
@ -146,7 +147,7 @@ class LibrarySync():
for tvshow in allTVShows:
episodeData = self.getEpisodes(tvshow,True)
episodeData = ReadEmbyDB().getEpisodes(tvshow,True)
kodiEpisodes = self.getKodiEpisodes(tvshow)
if(self.ShouldStop()):
@ -253,9 +254,9 @@ class LibrarySync():
#process movies
if processMovies:
views = self.getCollections("movies")
views = ReadEmbyDB().getCollections("movies")
for view in views:
movieData = self.getMovies(view.get('id'),False)
movieData = ReadEmbyDB().getMovies(view.get('id'),False)
if(self.ShouldStop()):
return True
@ -295,7 +296,7 @@ class LibrarySync():
#process Tv shows
if processTvShows:
tvshowData = self.getTVShows(False)
tvshowData = ReadEmbyDB().getTVShows(False)
if(self.ShouldStop()):
return True
@ -305,7 +306,7 @@ class LibrarySync():
for item in tvshowData:
xbmc.sleep(sleepVal)
episodeData = self.getEpisodes(item["Id"], False)
episodeData = ReadEmbyDB().getEpisodes(item["Id"], False)
if (episodeData != None):
if(pDialog != None):
@ -343,78 +344,6 @@ class LibrarySync():
return True
def getMovies(self, id, fullinfo = False):
result = None
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
downloadUtils = DownloadUtils()
userid = downloadUtils.getUserId()
if fullinfo:
url = server + '/mediabrowser/Users/' + userid + '/items?ParentId=' + id + '&SortBy=SortName&Fields=Path,Genres,SortName,Studios,Writer,ProductionYear,Taglines,CommunityRating,OfficialRating,CumulativeRunTimeTicks,Metascore,AirTime,DateCreated,MediaStreams,People,Overview&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Movie&format=json&ImageTypeLimit=1'
else:
url = server + '/mediabrowser/Users/' + userid + '/items?ParentId=' + id + '&SortBy=SortName&Fields=CumulativeRunTimeTicks&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Movie&format=json&ImageTypeLimit=1'
jsonData = downloadUtils.downloadUrl(url, suppress=True, popup=0)
if jsonData != None and jsonData != "":
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
return result
def getTVShows(self, fullinfo = False):
result = None
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
downloadUtils = DownloadUtils()
userid = downloadUtils.getUserId()
if fullinfo:
url = server + '/mediabrowser/Users/' + userid + '/Items?&SortBy=SortName&Fields=Path,Genres,SortName,Studios,Writer,ProductionYear,Taglines,CommunityRating,OfficialRating,CumulativeRunTimeTicks,Metascore,AirTime,DateCreated,MediaStreams,People,Overview&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Series&format=json&ImageTypeLimit=1'
else:
url = server + '/mediabrowser/Users/' + userid + '/Items?&SortBy=SortName&Fields=CumulativeRunTimeTicks&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Series&format=json&ImageTypeLimit=1'
jsonData = downloadUtils.downloadUrl(url, suppress=True, popup=0)
if jsonData != None and jsonData != "":
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
return result
def getEpisodes(self, showId, fullinfo = False):
result = None
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
downloadUtils = DownloadUtils()
userid = downloadUtils.getUserId()
if fullinfo:
url = server + '/mediabrowser/Users/' + userid + '/Items?ParentId=' + showId + '&IsVirtualUnaired=false&IsMissing=False&SortBy=SortName&Fields=Path,Genres,SortName,Studios,Writer,ProductionYear,Taglines,CommunityRating,OfficialRating,CumulativeRunTimeTicks,Metascore,AirTime,DateCreated,MediaStreams,People,Overview&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Episode&format=json&ImageTypeLimit=1'
else:
url = server + '/mediabrowser/Users/' + userid + '/Items?ParentId=' + showId + '&IsVirtualUnaired=false&IsMissing=False&SortBy=SortName&Fields=Name,SortName,CumulativeRunTimeTicks&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Episode&format=json&ImageTypeLimit=1'
jsonData = downloadUtils.downloadUrl(url, suppress=True, popup=0)
if jsonData != None and jsonData != "":
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
return result
def updatePlayCountFromKodi(self, id, playcount=0):
#when user marks item watched from kodi interface update this to MB3
@ -1147,46 +1076,6 @@ class LibrarySync():
return episode
def getCollections(self, type):
#Build a list of the user views
userid = DownloadUtils().getUserId()
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
viewsUrl = server + "/mediabrowser/Users/" + userid + "/Views?format=json&ImageTypeLimit=1"
jsonData = DownloadUtils().downloadUrl(viewsUrl, suppress=True, popup=0 )
if(jsonData != ""):
views = json.loads(jsonData)
views = views.get("Items")
collections=[]
for view in views:
if view.get("Type") == 'UserView': # Need to grab the real main node
newViewsUrl = server + '/mediabrowser/Users/' + userid + '/items?ParentId=' + view.get("Id") + '&SortBy=SortName&SortOrder=Ascending&format=json&ImageTypeLimit=1'
jsonData = DownloadUtils().downloadUrl(newViewsUrl, suppress=True, popup=0 )
if(jsonData != ""):
newViews = json.loads(jsonData)
newViews = newViews.get("Items")
for newView in newViews:
# There are multiple nodes in here like 'Latest', 'NextUp' - below we grab the full node.
if newView.get("CollectionType") == "MovieMovies" or newView.get("CollectionType") == "TvShowSeries":
view=newView
if(view.get("ChildCount") != 0):
Name =(view.get("Name")).encode('utf-8')
total = str(view.get("ChildCount"))
type = view.get("CollectionType")
if type == None:
type = "None" # User may not have declared the type
if type == type:
collections.append( {'title' : Name,
'type' : type,
'id' : view.get("Id")})
return collections
def ShouldStop(self):
if(xbmc.Player().isPlaying() or xbmc.abortRequested):
return True

125
resources/lib/ReadEmbyDB.py Normal file
View File

@ -0,0 +1,125 @@
#################################################################################################
# ReadEmbyDB
#################################################################################################
import xbmc
import xbmcgui
import xbmcaddon
import json
from DownloadUtils import DownloadUtils
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
class ReadEmbyDB():
def getMovies(self, id, fullinfo = False):
result = None
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
downloadUtils = DownloadUtils()
userid = downloadUtils.getUserId()
if fullinfo:
url = server + '/mediabrowser/Users/' + userid + '/items?ParentId=' + id + '&SortBy=SortName&Fields=Path,Genres,SortName,Studios,Writer,ProductionYear,Taglines,CommunityRating,OfficialRating,CumulativeRunTimeTicks,Metascore,AirTime,DateCreated,MediaStreams,People,Overview&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Movie&format=json&ImageTypeLimit=1'
else:
url = server + '/mediabrowser/Users/' + userid + '/items?ParentId=' + id + '&SortBy=SortName&Fields=CumulativeRunTimeTicks&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Movie&format=json&ImageTypeLimit=1'
jsonData = downloadUtils.downloadUrl(url, suppress=True, popup=0)
if jsonData != None and jsonData != "":
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
return result
def getTVShows(self, fullinfo = False):
result = None
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
downloadUtils = DownloadUtils()
userid = downloadUtils.getUserId()
if fullinfo:
url = server + '/mediabrowser/Users/' + userid + '/Items?&SortBy=SortName&Fields=Path,Genres,SortName,Studios,Writer,ProductionYear,Taglines,CommunityRating,OfficialRating,CumulativeRunTimeTicks,Metascore,AirTime,DateCreated,MediaStreams,People,Overview&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Series&format=json&ImageTypeLimit=1'
else:
url = server + '/mediabrowser/Users/' + userid + '/Items?&SortBy=SortName&Fields=CumulativeRunTimeTicks&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Series&format=json&ImageTypeLimit=1'
jsonData = downloadUtils.downloadUrl(url, suppress=True, popup=0)
if jsonData != None and jsonData != "":
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
return result
def getEpisodes(self, showId, fullinfo = False):
result = None
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
downloadUtils = DownloadUtils()
userid = downloadUtils.getUserId()
if fullinfo:
url = server + '/mediabrowser/Users/' + userid + '/Items?ParentId=' + showId + '&IsVirtualUnaired=false&IsMissing=False&SortBy=SortName&Fields=Path,Genres,SortName,Studios,Writer,ProductionYear,Taglines,CommunityRating,OfficialRating,CumulativeRunTimeTicks,Metascore,AirTime,DateCreated,MediaStreams,People,Overview&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Episode&format=json&ImageTypeLimit=1'
else:
url = server + '/mediabrowser/Users/' + userid + '/Items?ParentId=' + showId + '&IsVirtualUnaired=false&IsMissing=False&SortBy=SortName&Fields=Name,SortName,CumulativeRunTimeTicks&Recursive=true&SortOrder=Ascending&IncludeItemTypes=Episode&format=json&ImageTypeLimit=1'
jsonData = downloadUtils.downloadUrl(url, suppress=True, popup=0)
if jsonData != None and jsonData != "":
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
return result
def getCollections(self, type):
#Build a list of the user views
userid = DownloadUtils().getUserId()
addon = xbmcaddon.Addon(id='plugin.video.mb3sync')
port = addon.getSetting('port')
host = addon.getSetting('ipaddress')
server = host + ":" + port
viewsUrl = server + "/mediabrowser/Users/" + userid + "/Views?format=json&ImageTypeLimit=1"
jsonData = DownloadUtils().downloadUrl(viewsUrl, suppress=True, popup=0 )
if(jsonData != ""):
views = json.loads(jsonData)
views = views.get("Items")
collections=[]
for view in views:
if view.get("Type") == 'UserView': # Need to grab the real main node
newViewsUrl = server + '/mediabrowser/Users/' + userid + '/items?ParentId=' + view.get("Id") + '&SortBy=SortName&SortOrder=Ascending&format=json&ImageTypeLimit=1'
jsonData = DownloadUtils().downloadUrl(newViewsUrl, suppress=True, popup=0 )
if(jsonData != ""):
newViews = json.loads(jsonData)
newViews = newViews.get("Items")
for newView in newViews:
# There are multiple nodes in here like 'Latest', 'NextUp' - below we grab the full node.
if newView.get("CollectionType") == "MovieMovies" or newView.get("CollectionType") == "TvShowSeries":
view=newView
if(view.get("ChildCount") != 0):
Name =(view.get("Name")).encode('utf-8')
total = str(view.get("ChildCount"))
type = view.get("CollectionType")
if type == None:
type = "None" # User may not have declared the type
if type == type:
collections.append( {'title' : Name,
'type' : type,
'id' : view.get("Id")})
return collections