-
Notifications
You must be signed in to change notification settings - Fork 200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Edit Library and Show's Advanced Settings #507
Conversation
allow for editing a show's advanced settings using kwargs
allows for defaulting all advanced settings
I can move/add these methods to def preferences(self):
""" Returns a list of :class:`~plexapi.settings.Preferences` objects. """
items = []
data = self._server.query(self._details_key)
for item in data.iter('Preferences'):
for elem in item:
setting = settings.Preferences(data=elem, server=self._server)
setting._initpath = self.key
items.append(setting)
return items This way the settings could be updated from the show object in mass or from the preference object. |
I should add some tests to this. Switch settings, reload, assert. |
@Hellowlol this should be ready for review. |
plexapi/settings.py
Outdated
if self.type == 'int': | ||
url = key + '%s=%s' % (self.id, self.default) | ||
else: | ||
url = key + '%s=%s' % (self.id, self.default.decode()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it still needed to decode this? py2 has been dropped.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.default
is a value so it also is a byte
that is either an int
or str
.
plexapi/video.py
Outdated
try: | ||
enumValues = [int(x) for x in preferences.get(settingID)] | ||
except ValueError: | ||
enumValues = [x.decode() for x in preferences.get(settingID)] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same again, why do we need to decode?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The .value
can be classed as a byte
that is either an int
or str
. Majority of the time they're int
-1, 1, 2
something like that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_bool_cast = lambda x: True if x == 'true' or x == '1' else False
_bool_str = lambda x: str(x).lower()
_str = lambda x: str(x).encode('utf-8') # py2 dependant?
TYPES = {
'bool': {'type': bool, 'cast': _bool_cast, 'tostr': _bool_str},
'double': {'type': float, 'cast': float, 'tostr': _str},
'int': {'type': int, 'cast': int, 'tostr': _str},
'text': {'type': str, 'cast': _str , 'tostr': _str},
}
Updating the the tostr: _str
references to tostr: str
should resolve the issue.
update _str references to use builin str instead update settings.Preferences class for py2 drop
…nt/int based change
Calling |
py2 support has been dropped. returning str instead of bytes now due to 5045ddc
This PR should be gtg. |
Allow for editing a show's advanced settings
show.editAdvanced(showOrdering='aired', autoDeletionItemPolicyWatchedLibrary=0)
Allow for editing a library's advanced settings
library.editAdvanced(enableBIFGeneration=0, collectionMode=2)