64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
from kivy.app import App
|
|
from kivy.uix.screenmanager import ScreenManager, Screen
|
|
from kivy.clock import Clock
|
|
from kivy.core.window import Window
|
|
from kivy.uix.video import Video
|
|
from kivy.uix.image import Image
|
|
from kivy.uix.boxlayout import BoxLayout
|
|
import requests
|
|
import os
|
|
import json
|
|
|
|
class MediaPlayer(Screen):
|
|
def __init__(self, **kwargs):
|
|
super(MediaPlayer, self).__init__(**kwargs)
|
|
self.playlist = []
|
|
self.current_index = 0
|
|
self.video_player = Video()
|
|
self.image_display = Image()
|
|
self.layout = BoxLayout(orientation='vertical')
|
|
self.layout.add_widget(self.video_player)
|
|
self.layout.add_widget(self.image_display)
|
|
self.add_widget(self.layout)
|
|
Clock.schedule_interval(self.check_playlist_updates, 300) # Check for updates every 5 minutes
|
|
|
|
def on_enter(self):
|
|
self.load_playlist()
|
|
self.play_media()
|
|
|
|
def load_playlist(self):
|
|
# Load playlist from the server or local storage
|
|
try:
|
|
response = requests.get('http://yourserver.com/api/playlist')
|
|
response.raise_for_status() # Raise an exception for HTTP errors
|
|
self.playlist = response.json()
|
|
except requests.exceptions.RequestException as e:
|
|
print(f"Failed to load playlist: {e}")
|
|
except json.JSONDecodeError:
|
|
print("Failed to parse playlist JSON")
|
|
|
|
def play_media(self):
|
|
if self.playlist:
|
|
media = self.playlist[self.current_index]
|
|
if media['type'] == 'video':
|
|
self.video_player.source = media['url']
|
|
self.video_player.play()
|
|
self.image_display.source = ''
|
|
elif media['type'] == 'image':
|
|
self.image_display.source = media['url']
|
|
self.video_player.source = ''
|
|
self.image_display.reload()
|
|
|
|
def check_playlist_updates(self, dt):
|
|
self.load_playlist()
|
|
self.play_media()
|
|
|
|
class MediaPlayerApp(App):
|
|
def build(self):
|
|
Window.fullscreen = True
|
|
sm = ScreenManager()
|
|
sm.add_widget(MediaPlayer(name='media_player'))
|
|
return sm
|
|
|
|
if __name__ == '__main__':
|
|
MediaPlayerApp().run() |