@@ -418,7 +418,7 @@ def resume(self):
418
418
self .mpd_client .play ()
419
419
420
420
@plugs .tag
421
- def play_card (self , folder : str , recursive : bool = False ):
421
+ def play_card (self , folder : str , recursive : bool = False , resume : bool = False ):
422
422
"""
423
423
Main entry point for trigger music playing from RFID reader. Decodes second swipe options before playing folder content
424
424
@@ -427,6 +427,7 @@ def play_card(self, folder: str, recursive: bool = False):
427
427
428
428
:param folder: Folder path relative to music library path
429
429
:param recursive: Add folder recursively
430
+ :param resume: Try to resume from last position?
430
431
"""
431
432
# Developers notes:
432
433
#
@@ -447,7 +448,7 @@ def play_card(self, folder: str, recursive: bool = False):
447
448
self .second_swipe_action ()
448
449
else :
449
450
logger .debug ('Calling first swipe action' )
450
- self .play_folder (folder , recursive )
451
+ self .play_folder (folder , recursive , resume = resume )
451
452
452
453
@plugs .tag
453
454
def get_folder_content (self , folder : str ):
@@ -463,7 +464,8 @@ def get_folder_content(self, folder: str):
463
464
return plc .playlist
464
465
465
466
@plugs .tag
466
- def play_folder (self , folder : str , recursive : bool = False ) -> None :
467
+ def play_folder (self , folder : str , recursive : bool = False ,
468
+ resume : bool = False ) -> None :
467
469
"""
468
470
Playback a music folder.
469
471
@@ -472,6 +474,7 @@ def play_folder(self, folder: str, recursive: bool = False) -> None:
472
474
473
475
:param folder: Folder path relative to music library path
474
476
:param recursive: Add folder recursively
477
+ :param resume: Try to resume from previous state?
475
478
"""
476
479
# TODO: This changes the current state -> Need to save last state
477
480
with self .mpd_lock :
@@ -491,11 +494,23 @@ def play_folder(self, folder: str, recursive: bool = False) -> None:
491
494
492
495
self .music_player_status ['player_status' ]['last_played_folder' ] = folder
493
496
497
+ # Here a reference to the folder dict is used.
498
+ # Thus any update to the current_folder_status dict will
499
+ # be reflected in the dict of the corresponding folder
494
500
self .current_folder_status = self .music_player_status ['audio_folder_status' ].get (folder )
495
501
if self .current_folder_status is None :
496
502
self .current_folder_status = self .music_player_status ['audio_folder_status' ][folder ] = {}
497
-
498
- self .mpd_client .play ()
503
+ # Dont attempt to resume, if this is a new folder
504
+ self .mpd_client .play ()
505
+ else :
506
+ if resume :
507
+ try :
508
+ self .resume ()
509
+ except mpd .base .CommandError as e :
510
+ logger .exception ("Failed to resume folder: %s" , folder )
511
+ self .mpd_client .play ()
512
+ else :
513
+ self .mpd_client .play ()
499
514
500
515
@plugs .tag
501
516
def play_album (self , albumartist : str , album : str ):
0 commit comments