# HG changeset patch # User Goffi # Date 1598337116 -7200 # Node ID cda5537c71d64381a89b88afdc5b8bbe48dc3894 # Parent ce1217e3a9c04720b6e9dd105b4fbd59073dd8e7 browser (photos/album): videos integrations: videos can now be added to an album, the alternative media player is then used to display them. Slides options are used to remove pagination and slidebar from slideshow (they don't play well with media player), and video are reset when its slide is exited. diff -r ce1217e3a9c0 -r cda5537c71d6 libervia/pages/photos/album/_browser/__init__.py --- a/libervia/pages/photos/album/_browser/__init__.py Tue Aug 25 08:28:08 2020 +0200 +++ b/libervia/pages/photos/album/_browser/__init__.py Tue Aug 25 08:31:56 2020 +0200 @@ -5,6 +5,7 @@ import dialog from slideshow import SlideShow from invitation import InvitationManager +import alt_media_player cache_path = window.cache_path files_service = window.files_service @@ -15,6 +16,11 @@ pass bridge = Bridge() +alt_media_player.install_if_needed() + +photo_tpl = Template('photo/item.html') +player_tpl = Template('components/media_player.html') + # file upload def on_progress(ev, photo_elt): @@ -65,7 +71,6 @@ def upload_files(files): print(f"uploading {len(files)} files") - photo_tpl = Template('photo/item.html') album_items = document['album_items'] for file_ in files: url = window.URL.createObjectURL(file_) @@ -180,8 +185,25 @@ thumb_url = f"{cache_path}{biggest_thumb['filename']}" except (KeyError, IndexError) as e: print(f"Can't get full screen thumbnail URL: {e}") - thumb_url = item['url'] - slideshow.add_slide(html.IMG(src=thumb_url, Class="slide_img"), item) + thumb_url = None + if item.get("mime_type", "")[:5] == "video": + player = alt_media_player.MediaPlayer( + [item['url']], + poster = thumb_url, + reduce_click_area = True + ) + elt = player.elt + elt.classList.add("slide_video", "no_fullscreen") + slideshow.add_slide( + elt, + item, + options={ + "flags": (alt_media_player.NO_PAGINATION, alt_media_player.NO_SCROLLBAR), + "exit_callback": player.reset, + } + ) + else: + slideshow.add_slide(html.IMG(src=thumb_url or item['url'], Class="slide_img"), item) if item_elt == clicked_item_elt: slideshow.index = idx