From 3529e01aba7c6968f81f78b3ce0528c0e0e9e3cb Mon Sep 17 00:00:00 2001 From: j Date: Thu, 12 Oct 2017 18:35:29 +0200 Subject: [PATCH] add title, option to play from a and restart --- cdoseaplay/play.py | 11 +++++++- cdoseaplay/static/title.png | Bin 0 -> 27120 bytes cdoseaplay/utils.py | 53 ++++++++++++++++++++---------------- 3 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 cdoseaplay/static/title.png diff --git a/cdoseaplay/play.py b/cdoseaplay/play.py index c0585a3..ac2f46a 100755 --- a/cdoseaplay/play.py +++ b/cdoseaplay/play.py @@ -28,6 +28,7 @@ def main(): parser.add_argument('--prefix', help='video location', default=prefix) parser.add_argument('--window', action='store_true', help='run in window', default=False) parser.add_argument('--debug', action='store_true', help='debug', default=False) + parser.add_argument('-a', '--always-a', action='store_true', help='start from A', default=False) args = parser.parse_args() DEBUG = args.debug @@ -40,9 +41,17 @@ def main(): player = get_player() player.register_key_binding('q', q_binding) - update_playlist(args.playlist, args.prefix) + def restart(*a): + update_playlist(args.playlist, args.prefix, shift=False) + player.loadlist(args.playlist) + player.pause = True + player.register_key_binding('r', restart) + + update_playlist(args.playlist, args.prefix, shift=not args.always_a) sub = SubtitleServer(player, args.playlist) player.loadlist(args.playlist) + if args.always_a: + player.pause = True while True: try: diff --git a/cdoseaplay/static/title.png b/cdoseaplay/static/title.png new file mode 100644 index 0000000000000000000000000000000000000000..eb646d6ec74fcefb94b1f4457652634c72484654 GIT binary patch literal 27120 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 Xu7%sxq&{0s02L0Nu6{1-oD!M<=k@tm literal 0 HcmV?d00001 diff --git a/cdoseaplay/utils.py b/cdoseaplay/utils.py index f6d96ea..e68b2df 100644 --- a/cdoseaplay/utils.py +++ b/cdoseaplay/utils.py @@ -11,11 +11,16 @@ import ox from . import mpv import logging + + logger = logging.getLogger('cdosea') +STATIC_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'static') + def mpv_log(loglevel, component, message): logger.info('[{}] {}: {}'.format(loglevel, component, message)) + def get_player(fullscreen=True): # 42 max player = mpv.MPV( @@ -26,16 +31,18 @@ def get_player(fullscreen=True): player.fullscreen = fullscreen player.loop = 'inf' player.loop_file = 'no' - - return player -def update_playlist(playlist, prefix, position=None): + +def update_playlist(playlist, prefix, position=None, shift=True): files = [] videos = {} if not prefix.endswith('/'): prefix += '/' + + if not shift: + files.append(os.path.join(STATIC_ROOT, 'title.png')) for letter in string.ascii_uppercase: videos[letter] = glob('%s%s*.mp4' % (prefix, letter.lower())) random.shuffle(videos[letter]) @@ -44,30 +51,30 @@ def update_playlist(playlist, prefix, position=None): for letter in string.ascii_uppercase: files.append(videos[letter][i]) - if position is None: - today = datetime.date.today() - seconds_since_midnight = time.time() - time.mktime(today.timetuple()) - offset = 0 - position = 0 + if shift: + if position is None: + today = datetime.date.today() + seconds_since_midnight = time.time() - time.mktime(today.timetuple()) + offset = 0 + position = 0 - while offset < seconds_since_midnight: - f = files.pop(0) - try: - offset += ox.avinfo(f)['duration'] + while offset < seconds_since_midnight: + f = files.pop(0) + try: + offset += ox.avinfo(f)['duration'] + files.append(f) + except: + logger.debug('WTF', exc_info=True) + pass + position += 1 + else: + pos = position + while pos: + f = files.pop(0) files.append(f) - except: - logger.debug('WTF', exc_info=True) - pass - position += 1 - else: - pos = position - while pos: - f = files.pop(0) - files.append(f) - pos -= 1 + pos -= 1 with open(playlist, 'w') as f: f.write('\n'.join(files)) f.write('\n') return position, len(files) -