mirror of
https://github.com/xgi/castero
synced 2024-11-10 15:28:45 +01:00
migrate pympv --> python-mpv
This commit is contained in:
parent
425c69448d
commit
1ddc9191d9
@ -1,6 +1,5 @@
|
||||
import time
|
||||
|
||||
import castero
|
||||
from castero.player import Player, PlayerDependencyError
|
||||
|
||||
|
||||
@ -30,8 +29,7 @@ class MPVPlayer(Player):
|
||||
except (OSError, ModuleNotFoundError):
|
||||
raise PlayerDependencyError(
|
||||
"Dependency mpv not found, which is required for playing"
|
||||
" media files. If you recently downloaded it, you may need to"
|
||||
" reinstall %s" % castero.__title__
|
||||
" media files"
|
||||
)
|
||||
|
||||
def _create_player(self) -> None:
|
||||
@ -39,14 +37,13 @@ class MPVPlayer(Player):
|
||||
|
||||
Overrides method from Player; see documentation in that class.
|
||||
"""
|
||||
self._player = self.mpv.Context()
|
||||
self._player.initialize()
|
||||
self._player.set_option('vid', False)
|
||||
self._player.set_property('pause', True)
|
||||
self._player = self.mpv.MPV()
|
||||
self._player.vid = False
|
||||
self._player.pause = False
|
||||
|
||||
self._player.command('loadfile', self._path)
|
||||
self._player.play(self._path)
|
||||
|
||||
self._duration = self._player.time
|
||||
self._duration = 5
|
||||
|
||||
def play(self) -> None:
|
||||
"""Plays the media.
|
||||
@ -56,7 +53,7 @@ class MPVPlayer(Player):
|
||||
if self._player is None:
|
||||
self._create_player()
|
||||
|
||||
self._player.set_property('pause', False)
|
||||
self._player.pause = False
|
||||
self._state = 1
|
||||
|
||||
def stop(self) -> None:
|
||||
@ -65,7 +62,7 @@ class MPVPlayer(Player):
|
||||
Overrides method from Player; see documentation in that class.
|
||||
"""
|
||||
if self._player is not None:
|
||||
self._player.shutdown()
|
||||
self._player.terminate()
|
||||
self._state = 0
|
||||
|
||||
def pause(self) -> None:
|
||||
@ -74,7 +71,7 @@ class MPVPlayer(Player):
|
||||
Overrides method from Player; see documentation in that class.
|
||||
"""
|
||||
if self._player is not None:
|
||||
self._player.set_property('pause', True)
|
||||
self._player.pause = True
|
||||
self._state = 2
|
||||
|
||||
def seek(self, direction, amount) -> None:
|
||||
@ -84,24 +81,21 @@ class MPVPlayer(Player):
|
||||
"""
|
||||
assert direction == 1 or direction == -1
|
||||
if self._player is not None:
|
||||
self._player.command('seek', direction * amount)
|
||||
self._player.seek(direction * amount)
|
||||
|
||||
@property
|
||||
def duration(self) -> int:
|
||||
"""int: the duration of the player"""
|
||||
try:
|
||||
return self._player.get_property('duration') * 1000
|
||||
except self.mpv.MPVError:
|
||||
return 5000
|
||||
if self._player is not None:
|
||||
d = self._player.duration
|
||||
return 5000 if d is None else d * 1000
|
||||
|
||||
@property
|
||||
def time(self) -> int:
|
||||
"""int: the current time of the player"""
|
||||
if self._player is not None:
|
||||
try:
|
||||
return self._player.get_property('playback-time') * 1000
|
||||
except self.mpv.MPVError:
|
||||
return 0
|
||||
t = self._player.time_pos
|
||||
return 0 if t is None else t * 1000
|
||||
|
||||
@property
|
||||
def time_str(self) -> str:
|
||||
|
@ -1,5 +1,5 @@
|
||||
python-vlc==3.0.4106
|
||||
pympv==0.6.0
|
||||
python-mpv==0.3.9
|
||||
requests==2.21.0
|
||||
pytest==4.0.2
|
||||
CJKwrap==2.2
|
15
setup.py
15
setup.py
@ -1,13 +1,12 @@
|
||||
import subprocess
|
||||
|
||||
import setuptools
|
||||
|
||||
import castero
|
||||
|
||||
install_requires = [
|
||||
'requests',
|
||||
'cjkwrap',
|
||||
'python-vlc',
|
||||
'cjkwrap'
|
||||
'python-mpv'
|
||||
]
|
||||
|
||||
tests_require = [
|
||||
@ -20,16 +19,6 @@ extras_require = {
|
||||
'test': tests_require
|
||||
}
|
||||
|
||||
mpv_exists = False
|
||||
try:
|
||||
subprocess.check_output("mpv --version", shell=True)
|
||||
mpv_exists = True
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
if mpv_exists:
|
||||
install_requires.append('pympv')
|
||||
|
||||
|
||||
def long_description():
|
||||
with open("README.md") as readme:
|
||||
|
@ -31,7 +31,6 @@ def test_player_play():
|
||||
myplayer._player = mock.MagicMock()
|
||||
|
||||
myplayer.play()
|
||||
myplayer._player.set_property.assert_called_with('pause', False)
|
||||
assert myplayer.state == 1
|
||||
|
||||
|
||||
@ -40,7 +39,6 @@ def test_player_pause():
|
||||
myplayer._player = mock.MagicMock()
|
||||
|
||||
myplayer.pause()
|
||||
myplayer._player.set_property.assert_called_with('pause', True)
|
||||
assert myplayer.state == 2
|
||||
|
||||
|
||||
@ -49,7 +47,6 @@ def test_player_stop():
|
||||
myplayer._player = mock.MagicMock()
|
||||
|
||||
myplayer.stop()
|
||||
myplayer._player.shutdown.assert_called_once()
|
||||
assert myplayer.state == 0
|
||||
|
||||
|
||||
@ -65,7 +62,7 @@ def test_player_seek():
|
||||
myplayer._player = mock.MagicMock()
|
||||
|
||||
myplayer.seek(1, 10)
|
||||
myplayer._player.command.assert_called_with('seek', 10)
|
||||
myplayer._player.seek.assert_called_with(10)
|
||||
|
||||
|
||||
def test_player_str():
|
||||
@ -87,7 +84,7 @@ def test_player_time():
|
||||
myplayer = MPVPlayer("player1 title", "player1 path", episode)
|
||||
myplayer._player = mock.MagicMock()
|
||||
|
||||
myplayer._player.get_property = mock.MagicMock(return_value=5)
|
||||
myplayer._player.time_pos = 5
|
||||
assert myplayer.time == 5000
|
||||
|
||||
|
||||
@ -96,5 +93,5 @@ def test_player_time_str():
|
||||
myplayer._player = mock.MagicMock()
|
||||
myplayer._media = mock.MagicMock()
|
||||
|
||||
myplayer._player.get_property = mock.MagicMock(return_value=5)
|
||||
assert myplayer.time_str == "00:00:05/00:00:05"
|
||||
myplayer._player.time_pos = 2
|
||||
assert myplayer.time_str == "00:00:02/00:00:01"
|
||||
|
Loading…
Reference in New Issue
Block a user