* Add sonicAdventure method to MusicSection
* satisfy flake8
* sonicAdventure accepts Track as param
* test with both types for sonicAdventure
* Add authentication to recently added music test
* Fix test_library.py to include missing newline character
* Add sonicAdventure method to Track class
* fix doc as suggested
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* fix bound on sonicAdventure method
- add type to docstr
* Apply suggestions from code review
- pass in plexpass account to tests
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* make tests pass on bootstrap
- still asserts it is an iterable
- still checks all elements are tracks
- in case no adventure found, does not fail
---------
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Add source property to Video
A Playlist entry if added a remote server item has field "source" initialized with value like `server://<server_id>/com.plexapp.plugins.library`
* Add source to Episode
* Fix flake8 error
E261 at least two spaces before inline comment
* Add source to Track
* Add source to Photo
* Rename the field to sourceURI
* Update plexapi/audio.py
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Update plexapi/photo.py
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Update plexapi/video.py
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Update plexapi/video.py
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Fix flake line length issue
---------
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Add sonicallySimilar method to Audio class
closes#1183
* Add type hinting for method
- fixes import error
* Apply review suggestions
Co-Authors @JonnyWong16
* Add optional parameters to sonicallySimilar method
- makes it so that params can be None and use the server default
* add test for `sonicallySimilar`
* Refactor test to check type of elements
* Apply suggestions
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Add authentication to sonicallySimilar test in
test_audio.py
* fix flake8
---------
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Add property to return the Plex Media Server data metadata path
* Add property to return the filepath for a resource
* Add tests for metadataDirectory and resourceFilepath
* Optimize methods to use library get/search
* Revert methods
* Fix reloading of episodes for missing parentRatingKey
* Add tests for LibrarySection.get with kwargs
* Use generator for string join
* Group media type edit mixins
* Add UserRatingMixin
* Add LibrarySection methods to multi-edit items
* Remove deprecated banners
* Factor out resource lock/unlock mixins
* Update `fetchItems` to accept list of rating keys
* Add repr and helper methods to Common object
* Update tests
* Add PlayedUnplayedMixin
* Deprecate Video isPlayed, markWatched, and markUnwatched
* Rename all deprecated methods
* Return self to enable method chaining
* Update tests for audio markPlayed / markUnplayed using history
* Remove duplicate video history tests
* Add base findItem method
* Create new PlexSession objects
* PlexSession objects are unique from their base media objects. These objects are built from `/status/sessions` instead of `/library/metadata/<ratingKey>`. This allows reloading data from sessions without overwriting them.
* Add some media and client attributes for sessions
* Add separater property to return the PlexSession user object
* This speeds up building the `PlexSession` object since it doesn't need to lookup the user.
* The user object is also cached for future lookups.
* Remove PlexSession attributes from tests
* Never auto reload a PlexSession object
* Rename PlexSession.usernames for backwards compatibility
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
* Don't cache myPlexAccount in PlexSession
* Move session stop method to PlexSession
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
* Fix discover search results
* Plex API response changed to separate "Free on Demand" and "More Ways To Watch"
* Add test for searchDiscover
* Manually set watchlist and discover result to online metadata objects
* Replace all key format ratingKey with key
* Add libtype argument to searchDiscover
* Update tests for searchDiscover libtype
* Add includeUserState=1 parameter to Discover results details key
* Add method to return UserState object
* Update Collection.edit() method
* Add new EditFieldMixin and subclasses
* Add EditFieldMixin to Plex objects
* Update PlexPartialObject.edit() doc string
* Cast Track parentIndex to int
* Add base _searchTypes property
* Add kwargs to editField
* Editing album title also requires the artist ratingKey
* Add tests for editing fields
* Deprecate Collection.edit()
* Make editing fields chainable
* Add chaining example to doc string
* Add batch editing mode
* Add test for batchEdits
* Clean up mixins imports
* Reorder mixins
* Fix tests for batch edit
* Fix various typos
* Fix various typos in tests
* Fix typos in `tests`
* Fix more typos
* Fix hasScalingMatrix test
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* Initial support of artist radio stations
* Fix docstring
* Change to a singular optional station
* Change to a property
* Revert property
* Explicitly set librarySectionID
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>
* 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