54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
|
|
Copyright (C) 2014-2016 bromix (plugin.video.youtube)
|
|
Copyright (C) 2016-2018 plugin.video.youtube
|
|
|
|
SPDX-License-Identifier: GPL-2.0-only
|
|
See LICENSES/GPL-2.0-only for more information.
|
|
"""
|
|
|
|
import xbmc
|
|
from ..abstract_player import AbstractPlayer
|
|
|
|
|
|
class XbmcPlayer(AbstractPlayer):
|
|
def __init__(self, player_type, context):
|
|
AbstractPlayer.__init__(self)
|
|
|
|
self._player_type = player_type
|
|
if player_type == 'audio':
|
|
self._player_type = 'music'
|
|
|
|
self._context = context
|
|
|
|
def play(self, playlist_index=-1):
|
|
"""
|
|
We call the player in this way, because 'Player.play(...)' will call the addon again while the instance is
|
|
running. This is somehow shitty, because we couldn't release any resources and in our case we couldn't release
|
|
the cache. So this is the solution to prevent a locked database (sqlite).
|
|
"""
|
|
self._context.execute('Playlist.PlayOffset(%s,%d)' % (self._player_type, playlist_index))
|
|
|
|
"""
|
|
playlist = None
|
|
if self._player_type == 'video':
|
|
playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
|
|
elif self._player_type == 'music':
|
|
playlist = xbmc.PlayList(xbmc.PLAYLIST_MUSIC)
|
|
|
|
if playlist_index >= 0:
|
|
xbmc.Player().play(item=playlist, startpos=playlist_index)
|
|
else:
|
|
xbmc.Player().play(item=playlist)
|
|
"""
|
|
|
|
def stop(self):
|
|
xbmc.Player().stop()
|
|
|
|
def pause(self):
|
|
xbmc.Player().pause()
|
|
|
|
def is_playing(self):
|
|
return xbmc.Player().isPlaying()
|