import os import sys from glob import glob import datetime import time import string import random import ox from . import mpv import logging logger = logging.getLogger('cdosea') def mpv_log(loglevel, component, message): logger.info('[{}] {}: {}'.format(loglevel, component, message)) def get_player(fullscreen=True): # 42 max player = mpv.MPV( log_handler=mpv_log, input_default_bindings=True, input_vo_keyboard=True, sub_text_font_size=28, sub_text_font='Menlo' ) #player.observe_property('time-pos', lambda pos: print('Now playing at {:.2f}s'.format(pos))) player.fullscreen = fullscreen player.loop = 'inf' return player def update_playlist(playlist, prefix, position=None): files = [] videos = {} if not prefix.endswith('/'): prefix += '/' for letter in string.ascii_uppercase: videos[letter] = glob('%s%s*.mp4' % (prefix, letter.lower())) random.shuffle(videos[letter]) for i in range(10): 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 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) pos -= 1 with open(playlist, 'w') as f: f.write('\n'.join(files)) f.write('\n') return position, len(files)