diff --git a/examples/clapper-gtk/download_cache/python/example.py b/examples/clapper-gtk/download_cache/python/example.py new file mode 100755 index 00000000..a542d825 --- /dev/null +++ b/examples/clapper-gtk/download_cache/python/example.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 + +import gi +gi.require_version('Adw', '1') +gi.require_version('Clapper', '0.0') +gi.require_version('ClapperGtk', '0.0') +gi.require_version('GLib', '2.0') +gi.require_version('Gtk', '4.0') +from gi.repository import Adw, Clapper, ClapperGtk, GLib, Gtk +import shutil + +Clapper.init(None) + +download_dir = GLib.build_filenamev([GLib.get_user_cache_dir(), "example_download_dir", None]) +print('Using ceche directory: {0}'.format(download_dir)) + +def on_download_complete(player, item, location): + # Media downloaded. Data from this file is still used for current playback (including seeking). + print('Download complete: {0} => {1}'.format(item.props.uri, location)) + +def on_activate(app): + win = Gtk.ApplicationWindow(application=app, default_width=640, default_height=396) + video = ClapperGtk.Video() + controls = ClapperGtk.SimpleControls(fullscreenable=False) + + # Enable local storage caching and monitor it + video.props.player.set_download_dir(download_dir) + video.props.player.set_download_enabled(True) + video.props.player.connect('download-complete', on_download_complete) + + # Configure playback + video.props.player.props.queue.set_progression_mode(Clapper.QueueProgressionMode.CAROUSEL) + video.props.player.set_autoplay(True) + + # Create and add media for playback + item_1 = Clapper.MediaItem(uri='http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4') + item_2 = Clapper.MediaItem(uri='http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4') + video.props.player.props.queue.add_item(item_1) + video.props.player.props.queue.add_item(item_2) + + # Assemble window + video.add_fading_overlay(controls) + win.set_child(video) + win.present() + +# Create a new application +app = Adw.Application(application_id='com.example.ClapperDownloadCache') +app.connect('activate', on_activate) + +# Run the application +app.run(None) + +# Finally app should cleanup before exit. Possibly moving data to +# another dir if it wants to use it on next run and deleting what's +# left (so any unfinished downloads will also be removed). +print('Cleanup') +shutil.rmtree(download_dir)