1
0
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:
Jake Robertson 2019-01-31 17:16:35 -05:00
parent 425c69448d
commit 1ddc9191d9
No known key found for this signature in database
GPG Key ID: 15FF1380B7D5C715
4 changed files with 22 additions and 42 deletions

@ -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

@ -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"