mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 10:16:11 +00:00
added autoplay remaining episodes option
This commit is contained in:
parent
78883f2216
commit
b88f467357
4 changed files with 53 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="plugin.video.emby"
|
||||
name="Emby"
|
||||
version="0.0.20"
|
||||
version="0.0.21"
|
||||
provider-name="Emby.media">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
|
|
|
@ -36,7 +36,7 @@ class PlaybackUtils():
|
|||
pass
|
||||
|
||||
def PLAY(self, id):
|
||||
|
||||
xbmc.log("PLAY Called")
|
||||
port = addon.getSetting('port')
|
||||
host = addon.getSetting('ipaddress')
|
||||
server = host + ":" + port
|
||||
|
@ -59,7 +59,7 @@ class PlaybackUtils():
|
|||
if episodeItem != None and str(episodeItem["Type"]) == "Episode":
|
||||
kodiItem = ReadKodiDB().getKodiEpisodeByMbItem(id,episodeItem["SeriesId"])
|
||||
if kodiItem != None:
|
||||
seekTime = int(round(kodiItem['resume'].get("position")))
|
||||
seekTime = int(round(kodiItem['resume'].get("position")))
|
||||
|
||||
playurl = PlayUtils().getPlayUrl(server, id, result)
|
||||
|
||||
|
@ -272,6 +272,23 @@ class PlaybackUtils():
|
|||
|
||||
if seekTime > 0:
|
||||
self.seekToPosition(seekTime)
|
||||
|
||||
def PLAYAllEpisodes(self, items):
|
||||
userid = self.downloadUtils.getUserId()
|
||||
server = self.downloadUtils.getServer()
|
||||
|
||||
playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
|
||||
playlist.clear()
|
||||
|
||||
for item in items:
|
||||
|
||||
item_url = server + "/mediabrowser/Users/" + userid + "/Items/" + item["Id"] + "?format=json&ImageTypeLimit=1"
|
||||
jsonData = self.downloadUtils.downloadUrl(item_url, suppress=False, popup=1 )
|
||||
|
||||
item_data = json.loads(jsonData)
|
||||
self.addPlaylistItem(playlist, item_data, server, userid)
|
||||
|
||||
xbmc.Player().play(playlist)
|
||||
|
||||
def AddToPlaylist(self, itemIds):
|
||||
utils.logMsg("PlayBackUtils", "== ENTER: PLAYAllItems ==")
|
||||
|
|
|
@ -13,6 +13,8 @@ from PlayUtils import PlayUtils
|
|||
from ClientInformation import ClientInformation
|
||||
from LibrarySync import LibrarySync
|
||||
from PlaybackUtils import PlaybackUtils
|
||||
from ReadEmbyDB import ReadEmbyDB
|
||||
from API import API
|
||||
librarySync = LibrarySync()
|
||||
|
||||
# service class for playback monitoring
|
||||
|
@ -89,7 +91,36 @@ class Player( xbmc.Player ):
|
|||
if(refresh_id != None):
|
||||
#report updates playcount and resume status to Kodi and MB3
|
||||
librarySync.updatePlayCount(item_id,type)
|
||||
|
||||
|
||||
# if its an episode see if autoplay is enabled
|
||||
if addonSettings.getSetting("autoPlaySeason")=="true" and type=="Episode":
|
||||
port = addonSettings.getSetting('port')
|
||||
host = addonSettings.getSetting('ipaddress')
|
||||
server = host + ":" + port
|
||||
userid = self.downloadUtils.getUserId()
|
||||
# add remaining unplayed episodes if applicable
|
||||
MB3Episode = ReadEmbyDB().getItem(item_id)
|
||||
userData = MB3Episode["UserData"]
|
||||
if userData!=None and userData["Played"]==True:
|
||||
|
||||
pDialog = xbmcgui.DialogProgress()
|
||||
pDialog.create("Auto Play","Further Episode(s) in "+MB3Episode["SeasonName"]+" for "+MB3Episode["SeriesName"]+ " found","Cancel to stop automatic play of remaining episodes")
|
||||
count = 0
|
||||
while(pDialog.iscanceled==False or count < 10):
|
||||
xbmc.sleep(1000)
|
||||
count += 1
|
||||
progress = count * 10
|
||||
remainingsecs = 10 - count
|
||||
pDialog.update(progress,"Further Episode(s) in "+MB3Episode["SeasonName"]+" for "+MB3Episode["SeriesName"]+ " found","Cancel to stop automatic play of remaining episodes", str(remainingsecs) + " seconds(s) until auto dismiss")
|
||||
|
||||
if pDialog.iscanceled()==False:
|
||||
seasonId = MB3Episode["SeasonId"]
|
||||
jsonData = self.downloadUtils.downloadUrl("http://" + server + "/mediabrowser/Users/" + userid + "/Items?ParentId=" + seasonId + "&ImageTypeLimit=1&SortBy=SortName&SortOrder=Ascending&Filters=IsUnPlayed&IncludeItemTypes=Episode&IsVirtualUnaired=false&Recursive=true&IsMissing=False&format=json", suppress=False, popup=1 )
|
||||
if(jsonData != ""):
|
||||
seasonData = json.loads(jsonData)
|
||||
if seasonData.get("Items") != None:
|
||||
PlaybackUtils().PLAYAllEpisodes(seasonData.get("Items"))
|
||||
|
||||
self.played_information.clear()
|
||||
|
||||
# stop transcoding - todo check we are actually transcoding?
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<category label="Playback"> <!-- Extra Sync options -->
|
||||
<setting id="smbusername" type="text" label="30007" default="" visible="true" enable="true" />
|
||||
<setting id="smbpassword" type="text" label="30008" default="" option="hidden" visible="true" enable="true" />
|
||||
<setting id="autoPlaySeason" type="bool" label="30216" default="false" visible="true" enable="true" />
|
||||
</category>
|
||||
<category label="30022">
|
||||
<setting id="logLevel" type="enum" label="30004" values="None|Info|Debug" default="1" />
|
||||
|
|
Loading…
Reference in a new issue