* timeline() now returns ClientTimeline objects
* timeline() creates and returns ClientTimeline objects with associated attributes and caching
* Refactor isPlayingMedia to use the new attributes and fix it's default value
* Clarify docstrings
* Remove default param in timeline call & fix docstring typo
* return empty list if `timelines()` comes back empty
Web clients can occasionally return no timelines if no media has been played on them or if nothing has played for a while, this prevents errors in those cases.
* typo
* Workaround for unresponsive clients
* Use sendCommand rather than timelines() for PTP workaround
* Remove workaround, set timeline's wait default to 1
* set timelines() wait default to 0, document buggy behavior
* Use ClientTimeline.key for consistency
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
* cast playQueue's IDs as int
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
* Add audio attribs & make casts bool from int where it makes sense.
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
* Add Library timeline support
* Retry intentional failure with different canary test
* Temporarily disable activities tests
* Set tests for normal runs
* Add tests to validate library timeline attributes
* Add /activities endpoint support
* Fix typos, return a list instead of iterator
* Canary test to validate CI behavior
* Increase timer of canary test to ensure proper run
* Move test to front of run, provide auth and anon versions
* Fix typo
* Use new Plex Music metadata scanner in tests
* Update tests to match Plex Music scanner metadata
* More tweaks to audio metadata matching
* Another tweak
* Allow creating PlayQueues with multiple items, appending items
* Fix single-item playqueues, fix 'next', fix docstrings, run black
* Docstring updates
* More documentation fixes
* Allow removing items from a PlayQueue
* Use f-strings for readability
* Add ability to move items within the PlayQueue
* Cast attributes to proper types, update docs
* Format with black
* flake8 and sphinx fixes
* Reformat with black
* Update __contains__ to accept media objects
* Operate using media items, use methods similar to playlists
* Rename parameter to better match behavior
* Help users by automatically finding appropriate playQueueItemID values
* Add refresh method, auto-refresh before modifying playqueues
* Reformat with black
* Add TAG and TYPE to PlayQueue objects
* Review comments, add playQueueSelectedMetadataItemKey for Chromecast convenience
* Allow setting the playback start point in the PlayQueue
* Add tests, simplify size check
* Use camel case for helper function
* Add a helper to provide the selected item media object
Details:
* WHile Github correctly detects the BSD license from LICENSE.txt, Pypi does
not and needs either a Trove classifier or the license argument specified
in setup(). This change adds that the package supports the BSD license as
a classifier, following the recommendation in
https://packaging.python.org/guides/distributing-packages-using-setuptools/#license
Signed-off-by: Andreas Maier <andreas.r.maier@gmx.de>
Details:
* This change adds package metadata to indicate that the current
version of PlexAPI only supports Python 3. Because Python 3.5 is
the lowest Python version supported by the PSF, the minimum
Python version indicated in the package metadata is 3.5.
(as per the python_requires argument of setup()).
* Added Trove classifiers for OS independency and for Python versions,
although Python is only stated very generally as Python 3,
in order to avoid maintenance effort when new Python 3.x versions
will be released in the future.
* Using the python_requires argument of setup() required using
setuptools instead of distutils. Distutils is pretty old stuff
anyway and should not be used anymore.
Setuptools is automatically part of any Python 3.x environment
these days, including virtual Python environments.
For details on distutils vs setuptools, see for example
https://packaging.python.org/guides/tool-recommendations/#packaging-tool-recommendations
Signed-off-by: Andreas Maier <andreas.r.maier@gmx.de>