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 0000000..eb646d6 Binary files /dev/null and b/cdoseaplay/static/title.png differ 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) -