feat: add workaround method to remove user from playlist and enhance get_users method with optional user_id
This commit is contained in:
@@ -2,6 +2,7 @@ import os
|
|||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
|
from typing import Optional
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import requests
|
import requests
|
||||||
import base64
|
import base64
|
||||||
@@ -350,6 +351,34 @@ class JellyfinClient:
|
|||||||
# Raise an exception if the request failed
|
# Raise an exception if the request failed
|
||||||
raise Exception(f"Failed to remove user from playlist: {response.content}")
|
raise Exception(f"Failed to remove user from playlist: {response.content}")
|
||||||
|
|
||||||
|
def remove_user_from_playlist2(self, session_token: str, playlist_id: str, user_id: str, admin_user_id : str):
|
||||||
|
#TODO: This is a workaround for the issue where the above method does not work
|
||||||
|
metadata = self.get_playlist_metadata(session_token= session_token, user_id= admin_user_id, playlist_id= playlist_id)
|
||||||
|
# Construct the API URL
|
||||||
|
url = f'{self.base_url}/Playlists/{playlist_id}'
|
||||||
|
users_data = []
|
||||||
|
current_users = self.get_playlist_users(session_token=session_token, playlist_id= playlist_id)
|
||||||
|
for cu in current_users:
|
||||||
|
# This way we remove the user
|
||||||
|
if cu['UserId'] != user_id:
|
||||||
|
users_data.append({'UserId': cu['UserId'], 'CanEdit': cu['CanEdit']})
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'Users' : users_data
|
||||||
|
}
|
||||||
|
# Prepare the headers
|
||||||
|
headers = self._get_headers(session_token=session_token)
|
||||||
|
|
||||||
|
# Send the request to Jellyfin API
|
||||||
|
response = requests.post(url, headers=headers, json=data,timeout = self.timeout)
|
||||||
|
|
||||||
|
# Check for success
|
||||||
|
if response.status_code == 204:
|
||||||
|
self.update_playlist_metadata(session_token= session_token, user_id= admin_user_id, playlist_id= playlist_id , updates= metadata)
|
||||||
|
return {"status": "success", "message": f"Users added to playlist {playlist_id}."}
|
||||||
|
else:
|
||||||
|
raise Exception(f"Failed to add users to playlist: {response.status_code} - {response.content}")
|
||||||
|
|
||||||
|
|
||||||
def set_playlist_cover_image(self, session_token: str, playlist_id: str, provider_image_url: str):
|
def set_playlist_cover_image(self, session_token: str, playlist_id: str, provider_image_url: str):
|
||||||
"""
|
"""
|
||||||
@@ -454,8 +483,10 @@ class JellyfinClient:
|
|||||||
|
|
||||||
return response.json()
|
return response.json()
|
||||||
|
|
||||||
def get_users(self, session_token: str):
|
def get_users(self, session_token: str, user_id: Optional[str] = None):
|
||||||
url = f'{self.base_url}/Users'
|
url = f'{self.base_url}/Users'
|
||||||
|
if user_id:
|
||||||
|
url = f'{url}/{user_id}'
|
||||||
|
|
||||||
response = requests.get(url, headers=self._get_headers(session_token=session_token), timeout = self.timeout)
|
response = requests.get(url, headers=self._get_headers(session_token=session_token), timeout = self.timeout)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user