Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 4 additions & 18 deletions plexapi/audio.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,7 @@
from plexapi import media, utils
from plexapi.base import Playable, PlexPartialObject, PlexHistory, PlexSession, cached_data_property
from plexapi.exceptions import BadRequest
from plexapi.mixins import (
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, PlayedUnplayedMixin, RatingMixin,
ArtUrlMixin, ArtMixin, LogoMixin, LogoUrlMixin, PosterUrlMixin, PosterMixin, SquareArtMixin, SquareArtUrlMixin,
ThemeMixin, ThemeUrlMixin,
ArtistEditMixins, AlbumEditMixins, TrackEditMixins
)
from plexapi.mixins import ArtistMixins, AlbumMixins, TrackMixins, PlayedUnplayedMixin
from plexapi.playlist import Playlist


Expand Down Expand Up @@ -180,10 +175,7 @@ def sonicallySimilar(

@utils.registerPlexObject
class Artist(
Audio,
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
ArtistEditMixins
Audio, ArtistMixins
):
""" Represents a single Artist.

Expand Down Expand Up @@ -350,10 +342,7 @@ def metadataDirectory(self):

@utils.registerPlexObject
class Album(
Audio,
SplitMergeMixin, UnmatchMatchMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeUrlMixin,
AlbumEditMixins
Audio, AlbumMixins
):
""" Represents a single Album.

Expand Down Expand Up @@ -503,10 +492,7 @@ def metadataDirectory(self):

@utils.registerPlexObject
class Track(
Audio, Playable,
ExtrasMixin, RatingMixin,
ArtUrlMixin, LogoUrlMixin, PosterUrlMixin, SquareArtUrlMixin, ThemeUrlMixin,
TrackEditMixins
Audio, Playable, TrackMixins
):
""" Represents a single Track.

Expand Down
11 changes: 2 additions & 9 deletions plexapi/collection.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,13 @@
from plexapi.base import PlexPartialObject, cached_data_property
from plexapi.exceptions import BadRequest, NotFound, Unsupported
from plexapi.library import LibrarySection, ManagedHub
from plexapi.mixins import (
AdvancedSettingsMixin, SmartFilterMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
CollectionEditMixins
)
from plexapi.mixins import CollectionMixins
from plexapi.utils import deprecated


@utils.registerPlexObject
class Collection(
PlexPartialObject,
AdvancedSettingsMixin, SmartFilterMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
CollectionEditMixins
PlexPartialObject, CollectionMixins
):
""" Represents a single Collection.

Expand Down
98 changes: 97 additions & 1 deletion plexapi/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def _parseFilterGroups(self, feed: Deque[Tuple[str, str]], returnOn: Union[Set[s

def _parseQueryFeed(self, feed: "deque[Tuple[str, str]]") -> dict:
""" Parse the query string into a dict. """
filtersDict = {}
filtersDict: dict[str, Union[str, int, list, dict]] = {}
special_keys = {"type", "sort"}
integer_keys = {"includeGuids", "limit"}
as_is_keys = {"group", "having"}
Expand Down Expand Up @@ -1414,3 +1414,99 @@ class PlaylistEditMixins(
SortTitleMixin, SummaryMixin, TitleMixin
):
pass


class MovieMixins(
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
MovieEditMixins,
WatchlistMixin
):
pass


class ShowMixins(
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
ShowEditMixins,
WatchlistMixin
):
pass


class SeasonMixins(
AdvancedSettingsMixin, ExtrasMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeUrlMixin,
SeasonEditMixins
):
pass


class EpisodeMixins(
ExtrasMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeUrlMixin,
EpisodeEditMixins
):
pass


class ClipMixins(
ArtUrlMixin, LogoUrlMixin, PosterUrlMixin, SquareArtUrlMixin
):
pass


class ArtistMixins(
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
ArtistEditMixins
):
pass


class AlbumMixins(
SplitMergeMixin, UnmatchMatchMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeUrlMixin,
AlbumEditMixins
):
pass


class TrackMixins(
ExtrasMixin, RatingMixin,
ArtUrlMixin, LogoUrlMixin, PosterUrlMixin, SquareArtUrlMixin, ThemeUrlMixin,
TrackEditMixins
):
pass


class PhotoalbumMixins(
RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin,
PhotoalbumEditMixins
):
pass


class PhotoMixins(
RatingMixin,
ArtUrlMixin, LogoUrlMixin, PosterUrlMixin, SquareArtUrlMixin,
PhotoEditMixins
):
pass


class CollectionMixins(
AdvancedSettingsMixin, SmartFilterMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
CollectionEditMixins
):
pass


class PlaylistMixins(
SmartFilterMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin,
PlaylistEditMixins
):
pass
16 changes: 3 additions & 13 deletions plexapi/photo.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,12 @@
from plexapi import media, utils, video
from plexapi.base import Playable, PlexPartialObject, PlexSession, cached_data_property
from plexapi.exceptions import BadRequest
from plexapi.mixins import (
RatingMixin,
ArtUrlMixin, ArtMixin, LogoMixin, LogoUrlMixin, PosterUrlMixin, PosterMixin, SquareArtMixin, SquareArtUrlMixin,
PhotoalbumEditMixins, PhotoEditMixins
)
from plexapi.mixins import PhotoalbumMixins, PhotoMixins


@utils.registerPlexObject
class Photoalbum(
PlexPartialObject,
RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin,
PhotoalbumEditMixins
PlexPartialObject, PhotoalbumMixins
):
""" Represents a single Photoalbum (collection of photos).

Expand Down Expand Up @@ -157,10 +150,7 @@ def metadataDirectory(self):

@utils.registerPlexObject
class Photo(
PlexPartialObject, Playable,
RatingMixin,
ArtUrlMixin, LogoUrlMixin, PosterUrlMixin, SquareArtUrlMixin,
PhotoEditMixins
PlexPartialObject, Playable, PhotoMixins
):
""" Represents a single Photo.

Expand Down
7 changes: 2 additions & 5 deletions plexapi/playlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,13 @@
from plexapi.base import Playable, PlexPartialObject, cached_data_property
from plexapi.exceptions import BadRequest, NotFound, Unsupported
from plexapi.library import LibrarySection, MusicSection
from plexapi.mixins import SmartFilterMixin, ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, PlaylistEditMixins
from plexapi.mixins import PlaylistMixins
from plexapi.utils import deprecated


@utils.registerPlexObject
class Playlist(
PlexPartialObject, Playable,
SmartFilterMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin,
PlaylistEditMixins
PlexPartialObject, Playable, PlaylistMixins
):
""" Represents a single Playlist.

Expand Down
33 changes: 6 additions & 27 deletions plexapi/video.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,7 @@
from plexapi import media, utils
from plexapi.base import Playable, PlexPartialObject, PlexHistory, PlexSession, cached_data_property
from plexapi.exceptions import BadRequest
from plexapi.mixins import (
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, PlayedUnplayedMixin, RatingMixin,
ArtUrlMixin, ArtMixin, LogoMixin, LogoUrlMixin, PosterUrlMixin, PosterMixin, SquareArtMixin, SquareArtUrlMixin,
ThemeUrlMixin, ThemeMixin,
MovieEditMixins, ShowEditMixins, SeasonEditMixins, EpisodeEditMixins,
WatchlistMixin
)
from plexapi.mixins import MovieMixins, ShowMixins, SeasonMixins, EpisodeMixins, ClipMixins, PlayedUnplayedMixin


class Video(PlexPartialObject, PlayedUnplayedMixin):
Expand Down Expand Up @@ -337,11 +331,7 @@ def sync(self, videoQuality, client=None, clientId=None, limit=None, unwatched=F

@utils.registerPlexObject
class Movie(
Video, Playable,
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
MovieEditMixins,
WatchlistMixin
Video, Playable, MovieMixins
):
""" Represents a single Movie.

Expand Down Expand Up @@ -549,11 +539,7 @@ def metadataDirectory(self):

@utils.registerPlexObject
class Show(
Video,
AdvancedSettingsMixin, SplitMergeMixin, UnmatchMatchMixin, ExtrasMixin, HubsMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeMixin,
ShowEditMixins,
WatchlistMixin
Video, ShowMixins
):
""" Represents a single Show (including all seasons and episodes).

Expand Down Expand Up @@ -801,10 +787,7 @@ def metadataDirectory(self):

@utils.registerPlexObject
class Season(
Video,
AdvancedSettingsMixin, ExtrasMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeUrlMixin,
SeasonEditMixins
Video, SeasonMixins
):
""" Represents a single Season.

Expand Down Expand Up @@ -983,10 +966,7 @@ def metadataDirectory(self):

@utils.registerPlexObject
class Episode(
Video, Playable,
ExtrasMixin, RatingMixin,
ArtMixin, LogoMixin, PosterMixin, SquareArtMixin, ThemeUrlMixin,
EpisodeEditMixins
Video, Playable, EpisodeMixins
):
""" Represents a single Episode.

Expand Down Expand Up @@ -1260,8 +1240,7 @@ def metadataDirectory(self):

@utils.registerPlexObject
class Clip(
Video, Playable,
ArtUrlMixin, LogoUrlMixin, PosterUrlMixin, SquareArtUrlMixin
Video, Playable, ClipMixins
):
""" Represents a single Clip.

Expand Down
Loading