PlexKodiConnect/resources/lib/playback_starter.py

55 lines
1.9 KiB
Python
Raw Normal View History

#!/usr/bin/env python
2017-01-02 14:07:24 +01:00
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, unicode_literals
2017-12-09 14:35:08 +01:00
from logging import getLogger
2017-01-02 14:07:24 +01:00
from urlparse import parse_qsl
2019-01-17 20:33:46 +01:00
2018-06-21 19:24:37 +02:00
from . import playback
from . import context_entry
from . import transfer
from . import backgroundthread
2017-01-02 14:07:24 +01:00
###############################################################################
2018-06-21 19:24:37 +02:00
LOG = getLogger('PLEX.playback_starter')
2017-01-02 14:07:24 +01:00
###############################################################################
class PlaybackTask(backgroundthread.Task):
2017-01-02 14:07:24 +01:00
"""
Processes new plays
"""
def __init__(self, command):
self.command = command
super(PlaybackTask, self).__init__()
def run(self):
LOG.debug('Starting PlaybackTask with %s', self.command)
item = self.command
try:
_, params = item.split('?', 1)
except ValueError:
# E.g. other add-ons scanning for Extras folder
LOG.debug('Detected 3rd party add-on call - ignoring')
transfer.send(True)
return
2017-01-02 14:07:24 +01:00
params = dict(parse_qsl(params))
mode = params.get('mode')
2018-04-15 18:13:48 +02:00
resolve = False if params.get('handle') == '-1' else True
LOG.debug('Received mode: %s, params: %s', mode, params)
2018-01-10 20:14:05 +01:00
if mode == 'play':
2018-01-28 17:21:28 +01:00
playback.playback_triage(plex_id=params.get('plex_id'),
plex_type=params.get('plex_type'),
2018-04-15 18:13:48 +02:00
path=params.get('path'),
resolve=resolve)
2018-01-10 20:14:05 +01:00
elif mode == 'plex_node':
2018-04-15 18:13:48 +02:00
playback.process_indirect(params['key'],
params['offset'],
resolve=resolve)
2018-01-10 20:14:05 +01:00
elif mode == 'context_menu':
2018-06-21 19:24:37 +02:00
context_entry.ContextMenu(kodi_id=params.get('kodi_id'),
kodi_type=params.get('kodi_type'))
LOG.debug('Finished PlaybackTask')