Skip to content

Commit c15133d

Browse files
authored
Adds Movie and Artist advanced setting attributes (#680)
* Add advanced setting attributes to movie * Add advanced setting attributes to artist * Update tests for movie advanced setting attributes * Update tests for artist advanced setting attributes * Fix artist albumSort attribute
1 parent 7bdc9ed commit c15133d

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

plexapi/audio.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ class Artist(Audio, ArtMixin, PosterMixin, SplitMergeMixin, UnmatchMatchMixin,
121121
Attributes:
122122
TAG (str): 'Directory'
123123
TYPE (str): 'artist'
124+
albumSort (int): Setting that indicates how albums are sorted for the artist
125+
(-1 = Library default, 0 = Newest first, 1 = Oldest first, 2 = By name).
124126
collections (List<:class:`~plexapi.media.Collection`>): List of collection objects.
125127
countries (List<:class:`~plexapi.media.Country`>): List country objects.
126128
genres (List<:class:`~plexapi.media.Genre`>): List of genre objects.
@@ -135,6 +137,7 @@ class Artist(Audio, ArtMixin, PosterMixin, SplitMergeMixin, UnmatchMatchMixin,
135137
def _loadData(self, data):
136138
""" Load attribute values from Plex XML response. """
137139
Audio._loadData(self, data)
140+
self.albumSort = utils.cast(int, data.attrib.get('albumSort', '-1'))
138141
self.collections = self.findItems(data, media.Collection)
139142
self.countries = self.findItems(data, media.Country)
140143
self.genres = self.findItems(data, media.Genre)

plexapi/video.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,8 @@ class Movie(Video, Playable, ArtMixin, PosterMixin, SplitMergeMixin, UnmatchMatc
267267
genres (List<:class:`~plexapi.media.Genre`>): List of genre objects.
268268
guids (List<:class:`~plexapi.media.Guid`>): List of guid objects.
269269
labels (List<:class:`~plexapi.media.Label`>): List of label objects.
270+
languageOverride (str): Setting that indicates if a languge is used to override metadata
271+
(eg. en-CA, None = Library default).
270272
media (List<:class:`~plexapi.media.Media`>): List of media objects.
271273
originallyAvailableAt (datetime): Datetime the movie was released.
272274
originalTitle (str): Original title, often the foreign title (転々; 엽기적인 그녀).
@@ -278,6 +280,8 @@ class Movie(Video, Playable, ArtMixin, PosterMixin, SplitMergeMixin, UnmatchMatc
278280
similar (List<:class:`~plexapi.media.Similar`>): List of Similar objects.
279281
studio (str): Studio that created movie (Di Bonaventura Pictures; 21 Laps Entertainment).
280282
tagline (str): Movie tag line (Back 2 Work; Who says men can't change?).
283+
useOriginalTitle (int): Setting that indicates if the original title is used for the movie
284+
(-1 = Library default, 0 = No, 1 = Yes).
281285
userRating (float): User rating (2.0; 8.0).
282286
viewOffset (int): View offset in milliseconds.
283287
writers (List<:class:`~plexapi.media.Writer`>): List of writers objects.
@@ -303,6 +307,7 @@ def _loadData(self, data):
303307
self.genres = self.findItems(data, media.Genre)
304308
self.guids = self.findItems(data, media.Guid)
305309
self.labels = self.findItems(data, media.Label)
310+
self.languageOverride = data.attrib.get('languageOverride')
306311
self.media = self.findItems(data, media.Media)
307312
self.originallyAvailableAt = utils.toDatetime(data.attrib.get('originallyAvailableAt'), '%Y-%m-%d')
308313
self.originalTitle = data.attrib.get('originalTitle')
@@ -314,6 +319,7 @@ def _loadData(self, data):
314319
self.similar = self.findItems(data, media.Similar)
315320
self.studio = data.attrib.get('studio')
316321
self.tagline = data.attrib.get('tagline')
322+
self.useOriginalTitle = utils.cast(int, data.attrib.get('useOriginalTitle', '-1'))
317323
self.userRating = utils.cast(float, data.attrib.get('userRating'))
318324
self.viewOffset = utils.cast(int, data.attrib.get('viewOffset', 0))
319325
self.writers = self.findItems(data, media.Writer)

tests/test_audio.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
def test_audio_Artist_attr(artist):
77
artist.reload()
88
assert utils.is_datetime(artist.addedAt)
9+
assert artist.albumSort == -1
910
if artist.art:
1011
assert utils.is_art(artist.art)
1112
if artist.countries:

tests/test_video.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ def test_video_Movie_attrs(movies):
185185
assert movie.guid == "plex://movie/5d776846880197001ec967c6"
186186
assert utils.is_metadata(movie._initpath)
187187
assert utils.is_metadata(movie.key)
188+
assert movie.languageOverride is None
188189
assert utils.is_datetime(movie.lastViewedAt)
189190
assert int(movie.librarySectionID) >= 1
190191
assert movie.listType == "video"
@@ -206,6 +207,7 @@ def test_video_Movie_attrs(movies):
206207
assert not movie.transcodeSessions
207208
assert movie.type == "movie"
208209
assert movie.updatedAt > datetime(2017, 1, 1)
210+
assert movie.useOriginalTitle == -1
209211
assert movie.userRating is None
210212
assert movie.viewCount == 0
211213
assert utils.is_int(movie.viewOffset, gte=0)

0 commit comments

Comments
 (0)