updated to download

This commit is contained in:
2025-03-25 09:56:16 +02:00
parent 7610547a72
commit 5fad1ffaf0

View File

@@ -32,38 +32,91 @@ class MediaPlayer(Screen):
def on_enter(self):
self.load_playlist()
self.download_media_files()
self.play_media()
def load_playlist(self):
# Load playlist from the server or local storage
try:
Logger.debug("Attempting to load playlist from server...")
response = requests.get('http://192.168.0.115:5000/api/playlist')
response.raise_for_status() # Raise an exception for HTTP errors
if response.headers.get('Content-Type') == 'application/json':
Logger.debug(f"Server response: {response.text}") # Log the response content
self.playlist = response.json()
server_ip = 'http://192.168.0.115:5000'
hostname = 'player1.local'
quickconnect_code = 'Initial01!'
url = f'{server_ip}/api/playlists'
params = {
'hostname': "TvHolBa1",
'quickconnect_code': quickconnect_code
}
response = requests.get(url, params=params)
# Print the raw response content and status code for debugging
Logger.debug(f'Status Code: {response.status_code}')
Logger.debug(f'Response Content: {response.text}')
# Check if the request was successful
if response.status_code == 200:
try:
# Parse the JSON response
self.playlist = response.json().get('playlist', [])
Logger.debug(f'Playlist: {self.playlist}')
except json.JSONDecodeError as e:
Logger.error(f'Failed to parse JSON response: {e}')
else:
Logger.warning(f"Unexpected content type: {response.headers.get('Content-Type')}")
Logger.error(f'Failed to retrieve playlist: {response.text}')
except requests.exceptions.RequestException as e:
Logger.error(f"Failed to load playlist: {e}")
except json.JSONDecodeError as e:
Logger.error(f"Failed to parse playlist JSON: {e}")
def download_media_files(self):
base_dir = '/home/pi/media/files' # Update this to a directory with write permissions
if not os.path.exists(base_dir):
os.makedirs(base_dir)
for media in self.playlist:
file_name = media.get('file_name', '')
file_url = f"http://192.168.0.115:5000/media/{file_name}" # Update this to the correct URL
file_path = os.path.join(base_dir, file_name)
try:
response = requests.get(file_url)
if response.status_code == 200:
with open(file_path, 'wb') as file:
file.write(response.content)
Logger.debug(f"Downloaded {file_name} to {file_path}")
else:
Logger.error(f"Failed to download {file_name}: {response.status_code}")
except requests.exceptions.RequestException as e:
Logger.error(f"Failed to download {file_name}: {e}")
def play_media(self):
if self.playlist:
media = self.playlist[self.current_index]
if media['type'] == 'video':
self.video_player.source = media['url']
file_name = media.get('file_name', '')
file_extension = os.path.splitext(file_name)[1].lower()
duration = media.get('duration', 10) # Default duration is 10 seconds
# Define the base directory for media files
base_dir = '/path/to/media/files' # Update this to the correct path
file_path = os.path.join(base_dir, file_name)
if file_extension in ['.mp4', '.avi', '.mov']:
self.video_player.source = file_path
self.video_player.play()
self.image_display.source = ''
elif media['type'] == 'image':
self.image_display.source = media['url']
elif file_extension in ['.jpg', '.jpeg', '.png', '.gif']:
self.image_display.source = file_path
self.video_player.source = ''
self.image_display.reload()
Clock.schedule_once(self.next_media, duration)
else:
Logger.error(f"Unsupported media type for file: {file_name}")
def next_media(self, dt):
self.current_index = (self.current_index + 1) % len(self.playlist)
self.play_media()
def check_playlist_updates(self, dt):
self.load_playlist()
self.download_media_files()
self.play_media()
class MediaPlayerApp(App):