mirror of
https://github.com/Rafostar/clapper.git
synced 2025-08-29 23:32:04 +02:00
examples: Add download cache code example
This commit is contained in:
57
examples/clapper-gtk/download_cache/python/example.py
Executable file
57
examples/clapper-gtk/download_cache/python/example.py
Executable file
@@ -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)
|
Reference in New Issue
Block a user