def plex_deletion(items, libraries, toggleDeletion): """ Parameters ---------- items (list): List of items to be deleted by Plex libraries {list): List of libraries used toggleDeletion (bool): Allow then disable Plex ability to delete media items Returns ------- """ plex = PlexServer(PLEX_URL, PLEX_TOKEN) if plex.allowMediaDeletion is None and toggleDeletion is None: print("Allow Plex to delete media.") exit() elif plex.allowMediaDeletion is None and toggleDeletion: print("Temporarily allowing Plex to delete media.") plex._allowMediaDeletion(True) time.sleep(1) plex = PlexServer(PLEX_URL, PLEX_TOKEN) print("The following items were added before {} and marked for deletion.". format(opts.date)) for item in items: plex_item = plex.fetchItem(int(item.rating_key)) plex_item.delete() print("Item: {} was deleted".format(item.title)) for _library in libraries: section = plex.library.sectionByID(_library.key) print("Emptying Trash from library {}".format(_library.title)) section.emptyTrash() if toggleDeletion: print("Disabling Plex to delete media.") plex._allowMediaDeletion(False)
def test_server_allowMediaDeletion(account): plex = PlexServer(utils.SERVER_BASEURL, account.authenticationToken) # Check server current allowMediaDeletion setting if plex.allowMediaDeletion: # If allowed then test disallowed plex._allowMediaDeletion(False) time.sleep(1) plex = PlexServer(utils.SERVER_BASEURL, account.authenticationToken) assert plex.allowMediaDeletion is None # Test redundant toggle with pytest.raises(BadRequest): plex._allowMediaDeletion(False) plex._allowMediaDeletion(True) time.sleep(1) plex = PlexServer(utils.SERVER_BASEURL, account.authenticationToken) assert plex.allowMediaDeletion is True # Test redundant toggle with pytest.raises(BadRequest): plex._allowMediaDeletion(True) else: # If disallowed then test allowed plex._allowMediaDeletion(True) time.sleep(1) plex = PlexServer(utils.SERVER_BASEURL, account.authenticationToken) assert plex.allowMediaDeletion is True # Test redundant toggle with pytest.raises(BadRequest): plex._allowMediaDeletion(True) plex._allowMediaDeletion(False) time.sleep(1) plex = PlexServer(utils.SERVER_BASEURL, account.authenticationToken) assert plex.allowMediaDeletion is None # Test redundant toggle with pytest.raises(BadRequest): plex._allowMediaDeletion(False)