Merge branch 'beta-version' into plex_for_kodi
This commit is contained in:
commit
9eba24485e
5 changed files with 57 additions and 49 deletions
|
@ -1,5 +1,5 @@
|
||||||
[![stable version](https://img.shields.io/badge/stable_version-2.4.3-blue.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/stable/repository.plexkodiconnect/repository.plexkodiconnect-1.0.2.zip)
|
[![stable version](https://img.shields.io/badge/stable_version-2.4.3-blue.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/stable/repository.plexkodiconnect/repository.plexkodiconnect-1.0.2.zip)
|
||||||
[![beta version](https://img.shields.io/badge/beta_version-2.4.3-red.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/beta/repository.plexkodiconnectbeta/repository.plexkodiconnectbeta-1.0.2.zip)
|
[![beta version](https://img.shields.io/badge/beta_version-2.4.4-red.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/beta/repository.plexkodiconnectbeta/repository.plexkodiconnectbeta-1.0.2.zip)
|
||||||
|
|
||||||
[![Installation](https://img.shields.io/badge/wiki-installation-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/Installation)
|
[![Installation](https://img.shields.io/badge/wiki-installation-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/Installation)
|
||||||
[![FAQ](https://img.shields.io/badge/wiki-FAQ-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/faq)
|
[![FAQ](https://img.shields.io/badge/wiki-FAQ-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/faq)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<addon id="plugin.video.plexkodiconnect" name="PlexKodiConnect" version="2.4.3" provider-name="croneter">
|
<addon id="plugin.video.plexkodiconnect" name="PlexKodiConnect" version="2.4.4" provider-name="croneter">
|
||||||
<requires>
|
<requires>
|
||||||
<import addon="xbmc.python" version="2.1.0"/>
|
<import addon="xbmc.python" version="2.1.0"/>
|
||||||
<import addon="script.module.requests" version="2.9.1" />
|
<import addon="script.module.requests" version="2.9.1" />
|
||||||
|
@ -74,7 +74,11 @@
|
||||||
<summary lang="uk_UA">Нативна інтеграція Plex в Kodi</summary>
|
<summary lang="uk_UA">Нативна інтеграція Plex в Kodi</summary>
|
||||||
<description lang="uk_UA">Підключає Kodi до серверу Plex. Цей плагін передбачає, що ви керуєте всіма своїми відео за допомогою Plex (і ніяк не Kodi). Ви можете втратити дані, які вже зберігаються у відео та музичних БД Kodi (оскільки цей плагін безпосередньо їх змінює). Використовуйте на свій страх і ризик!</description>
|
<description lang="uk_UA">Підключає Kodi до серверу Plex. Цей плагін передбачає, що ви керуєте всіма своїми відео за допомогою Plex (і ніяк не Kodi). Ви можете втратити дані, які вже зберігаються у відео та музичних БД Kodi (оскільки цей плагін безпосередньо їх змінює). Використовуйте на свій страх і ризик!</description>
|
||||||
<disclaimer lang="uk_UA">Використовуйте на свій ризик</disclaimer>
|
<disclaimer lang="uk_UA">Використовуйте на свій ризик</disclaimer>
|
||||||
<news>version 2.4.3:
|
<news>version 2.4.4 (beta only):
|
||||||
|
- Fix rare case when playback would not start-up
|
||||||
|
- Increase logging
|
||||||
|
|
||||||
|
version 2.4.3:
|
||||||
- Fix Kodi addons throwing jsonrpc errors (database reset needed)
|
- Fix Kodi addons throwing jsonrpc errors (database reset needed)
|
||||||
|
|
||||||
version 2.4.2:
|
version 2.4.2:
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
version 2.4.4 (beta only):
|
||||||
|
- Fix rare case when playback would not start-up
|
||||||
|
- Increase logging
|
||||||
|
|
||||||
version 2.4.3:
|
version 2.4.3:
|
||||||
- Fix Kodi addons throwing jsonrpc errors (database reset needed)
|
- Fix Kodi addons throwing jsonrpc errors (database reset needed)
|
||||||
|
|
||||||
|
|
|
@ -535,7 +535,7 @@ def _playback_cleanup(ended=False):
|
||||||
state.PLAYER_STATES[playerid] = copy.deepcopy(state.PLAYSTATE)
|
state.PLAYER_STATES[playerid] = copy.deepcopy(state.PLAYSTATE)
|
||||||
# As all playback has halted, reset the players that have been active
|
# As all playback has halted, reset the players that have been active
|
||||||
state.ACTIVE_PLAYERS = set()
|
state.ACTIVE_PLAYERS = set()
|
||||||
LOG.debug('Finished PKC playback cleanup')
|
LOG.info('Finished PKC playback cleanup')
|
||||||
|
|
||||||
|
|
||||||
def _record_playstate(status, ended):
|
def _record_playstate(status, ended):
|
||||||
|
|
|
@ -57,61 +57,61 @@ def playback_triage(plex_id=None, plex_type=None, path=None, resolve=True):
|
||||||
utils.dialog('notification', utils.lang(29999), utils.lang(30017))
|
utils.dialog('notification', utils.lang(29999), utils.lang(30017))
|
||||||
_ensure_resolve(abort=True)
|
_ensure_resolve(abort=True)
|
||||||
return
|
return
|
||||||
playqueue = PQ.get_playqueue_from_type(
|
with state.LOCK_PLAYQUEUES:
|
||||||
v.KODI_PLAYLIST_TYPE_FROM_PLEX_TYPE[plex_type])
|
playqueue = PQ.get_playqueue_from_type(
|
||||||
try:
|
v.KODI_PLAYLIST_TYPE_FROM_PLEX_TYPE[plex_type])
|
||||||
pos = js.get_position(playqueue.playlistid)
|
|
||||||
except KeyError:
|
|
||||||
# Kodi bug - Playlist plays (not Playqueue) will ALWAYS be audio for
|
|
||||||
# add-on paths
|
|
||||||
LOG.info('No position returned from Kodi player! Assuming playlist')
|
|
||||||
playqueue = PQ.get_playqueue_from_type(v.KODI_PLAYLIST_TYPE_AUDIO)
|
|
||||||
try:
|
try:
|
||||||
pos = js.get_position(playqueue.playlistid)
|
pos = js.get_position(playqueue.playlistid)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
LOG.info('Assuming video instead of audio playlist playback')
|
# Kodi bug - Playlist plays (not Playqueue) will ALWAYS be audio for
|
||||||
playqueue = PQ.get_playqueue_from_type(v.KODI_PLAYLIST_TYPE_VIDEO)
|
# add-on paths
|
||||||
|
LOG.info('No position returned from player! Assuming playlist')
|
||||||
|
playqueue = PQ.get_playqueue_from_type(v.KODI_PLAYLIST_TYPE_AUDIO)
|
||||||
try:
|
try:
|
||||||
pos = js.get_position(playqueue.playlistid)
|
pos = js.get_position(playqueue.playlistid)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
LOG.error('Still no position - abort')
|
LOG.info('Assuming video instead of audio playlist playback')
|
||||||
# "Play error"
|
playqueue = PQ.get_playqueue_from_type(v.KODI_PLAYLIST_TYPE_VIDEO)
|
||||||
utils.dialog('notification',
|
try:
|
||||||
utils.lang(29999),
|
pos = js.get_position(playqueue.playlistid)
|
||||||
utils.lang(30128),
|
except KeyError:
|
||||||
icon='{error}')
|
LOG.error('Still no position - abort')
|
||||||
_ensure_resolve(abort=True)
|
# "Play error"
|
||||||
|
utils.dialog('notification',
|
||||||
|
utils.lang(29999),
|
||||||
|
utils.lang(30128),
|
||||||
|
icon='{error}')
|
||||||
|
_ensure_resolve(abort=True)
|
||||||
|
return
|
||||||
|
# HACK to detect playback of playlists for add-on paths
|
||||||
|
items = js.playlist_get_items(playqueue.playlistid)
|
||||||
|
try:
|
||||||
|
item = items[pos]
|
||||||
|
except IndexError:
|
||||||
|
LOG.info('Could not apply playlist hack! Probably Widget playback')
|
||||||
|
else:
|
||||||
|
if ('id' not in item and
|
||||||
|
item.get('type') == 'unknown' and item.get('title') == ''):
|
||||||
|
LOG.info('Kodi playlist play detected')
|
||||||
|
_playlist_playback(plex_id, plex_type)
|
||||||
return
|
return
|
||||||
# HACK to detect playback of playlists for add-on paths
|
|
||||||
items = js.playlist_get_items(playqueue.playlistid)
|
|
||||||
try:
|
|
||||||
item = items[pos]
|
|
||||||
except IndexError:
|
|
||||||
LOG.info('Could not apply playlist hack! Probably Widget playback')
|
|
||||||
else:
|
|
||||||
if ('id' not in item and
|
|
||||||
item.get('type') == 'unknown' and item.get('title') == ''):
|
|
||||||
LOG.info('Kodi playlist play detected')
|
|
||||||
_playlist_playback(plex_id, plex_type)
|
|
||||||
return
|
|
||||||
|
|
||||||
# Can return -1 (as in "no playlist")
|
# Can return -1 (as in "no playlist")
|
||||||
pos = pos if pos != -1 else 0
|
pos = pos if pos != -1 else 0
|
||||||
LOG.debug('playQueue position %s for %s', pos, playqueue)
|
LOG.debug('playQueue position %s for %s', pos, playqueue)
|
||||||
# Have we already initiated playback?
|
# Have we already initiated playback?
|
||||||
try:
|
try:
|
||||||
item = playqueue.items[pos]
|
item = playqueue.items[pos]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
LOG.debug('PKC playqueue yet empty, need to initialize playback')
|
LOG.debug('PKC playqueue yet empty, need to initialize playback')
|
||||||
initiate = True
|
|
||||||
else:
|
|
||||||
if item.plex_id != plex_id:
|
|
||||||
LOG.debug('Received new plex_id %s, expected %s. Init playback',
|
|
||||||
plex_id, item.plex_id)
|
|
||||||
initiate = True
|
initiate = True
|
||||||
else:
|
else:
|
||||||
initiate = False
|
if item.plex_id != plex_id:
|
||||||
with state.LOCK_PLAYQUEUES:
|
LOG.debug('Received new plex_id %s, expected %s',
|
||||||
|
plex_id, item.plex_id)
|
||||||
|
initiate = True
|
||||||
|
else:
|
||||||
|
initiate = False
|
||||||
if initiate:
|
if initiate:
|
||||||
_playback_init(plex_id, plex_type, playqueue, pos)
|
_playback_init(plex_id, plex_type, playqueue, pos)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue