python-plexapi/tests/test_audio.py

335 lines
12 KiB
Python
Raw Normal View History

2017-01-09 14:21:54 +00:00
# -*- coding: utf-8 -*-
from datetime import datetime
2020-04-14 20:13:30 +00:00
from . import conftest as utils
def test_audio_Artist_attr(artist):
artist.reload()
assert utils.is_datetime(artist.addedAt)
assert artist.countries == []
2020-04-29 21:23:22 +00:00
assert "Electronic" in [i.tag for i in artist.genres]
2017-04-29 05:47:21 +00:00
assert utils.is_string(artist.guid, gte=5)
2020-04-29 21:23:22 +00:00
assert artist.index == "1"
assert utils.is_metadata(artist._initpath)
assert utils.is_metadata(artist.key)
assert utils.is_int(artist.librarySectionID)
2020-04-29 21:23:22 +00:00
assert artist.listType == "audio"
assert len(artist.locations) == 1
assert len(artist.locations[0]) >= 10
assert artist.ratingKey >= 1
assert artist._server._baseurl == utils.SERVER_BASEURL
2019-09-21 20:54:50 +00:00
assert isinstance(artist.similar, list)
2020-04-29 21:23:22 +00:00
assert "Alias" in artist.summary
assert artist.title == "Broke For Free"
assert artist.titleSort == "Broke For Free"
assert artist.type == "artist"
assert utils.is_datetime(artist.updatedAt)
2017-04-29 05:47:21 +00:00
assert utils.is_int(artist.viewCount, gte=0)
def test_audio_Artist_get(artist, music):
2020-04-29 21:23:22 +00:00
artist == music.searchArtists(**{"title": "Broke For Free"})[0]
artist.title == "Broke For Free"
2017-01-09 14:21:54 +00:00
def test_audio_Artist_history(artist):
history = artist.history()
2020-04-15 18:41:15 +00:00
assert isinstance(history, list)
def test_audio_Artist_track(artist):
2020-04-29 21:23:22 +00:00
track = artist.track("As Colourful as Ever")
assert track.title == "As Colourful as Ever"
2017-01-09 14:21:54 +00:00
def test_audio_Artist_tracks(artist):
tracks = artist.tracks()
2020-04-29 21:23:22 +00:00
assert len(tracks) == 1
2017-01-09 14:21:54 +00:00
def test_audio_Artist_album(artist):
2020-04-29 21:23:22 +00:00
album = artist.album("Layers")
assert album.title == "Layers"
2017-01-09 14:21:54 +00:00
def test_audio_Artist_albums(artist):
albums = artist.albums()
2020-04-29 21:23:22 +00:00
assert len(albums) == 1 and albums[0].title == "Layers"
2017-01-09 14:21:54 +00:00
def test_audio_Album_attrs(album):
assert utils.is_datetime(album.addedAt)
assert isinstance(album.genres, list)
2020-04-29 21:23:22 +00:00
assert album.index == "1"
assert utils.is_metadata(album._initpath)
assert utils.is_metadata(album.key)
assert utils.is_int(album.librarySectionID)
2020-04-29 21:23:22 +00:00
assert album.listType == "audio"
2020-04-29 13:20:42 +00:00
if album.originallyAvailableAt:
assert utils.is_datetime(album.originallyAvailableAt)
assert utils.is_metadata(album.parentKey)
assert utils.is_int(album.parentRatingKey)
2017-04-23 05:54:53 +00:00
if album.parentThumb:
2020-04-29 21:23:22 +00:00
assert utils.is_metadata(album.parentThumb, contains="/thumb/")
assert album.parentTitle == "Broke For Free"
assert album.ratingKey >= 1
assert album._server._baseurl == utils.SERVER_BASEURL
assert album.studio is None
2020-04-29 21:23:22 +00:00
assert album.summary == ""
if album.thumb:
assert utils.is_metadata(album.thumb, contains="/thumb/")
assert album.title == "Layers"
assert album.titleSort == "Layers"
assert album.type == "album"
assert utils.is_datetime(album.updatedAt)
2017-04-29 05:47:21 +00:00
assert utils.is_int(album.viewCount, gte=0)
2020-04-29 21:23:22 +00:00
assert album.year in (2012,)
assert album.artUrl is None
def test_audio_Album_history(album):
history = album.history()
2020-04-14 20:13:30 +00:00
assert isinstance(history, list)
def test_audio_Track_history(track):
history = track.history()
2020-04-14 20:13:30 +00:00
assert isinstance(history, list)
def test_audio_Album_tracks(album):
tracks = album.tracks()
track = tracks[0]
2020-04-29 21:23:22 +00:00
assert len(tracks) == 1
assert utils.is_metadata(track.grandparentKey)
assert utils.is_int(track.grandparentRatingKey)
2020-04-29 21:23:22 +00:00
assert track.grandparentTitle == "Broke For Free"
assert track.index == "1"
assert utils.is_metadata(track._initpath)
assert utils.is_metadata(track.key)
2020-04-29 21:23:22 +00:00
assert track.listType == "audio"
assert track.originalTitle in (None, "Broke For Free")
2020-04-29 13:20:42 +00:00
# assert utils.is_int(track.parentIndex)
assert utils.is_metadata(track.parentKey)
assert utils.is_int(track.parentRatingKey)
2020-04-29 21:23:22 +00:00
assert utils.is_metadata(track.parentThumb, contains="/thumb/")
assert track.parentTitle == "Layers"
# assert track.ratingCount == 9 # Flaky
assert utils.is_int(track.ratingKey)
assert track._server._baseurl == utils.SERVER_BASEURL
assert track.summary == ""
2020-04-29 21:23:22 +00:00
assert utils.is_metadata(track.thumb, contains="/thumb/")
assert track.title == "As Colourful as Ever"
assert track.titleSort == "As Colourful as Ever"
2017-10-13 22:02:21 +00:00
assert not track.transcodeSessions
2020-04-29 21:23:22 +00:00
assert track.type == "track"
assert utils.is_datetime(track.updatedAt)
2017-04-29 05:47:21 +00:00
assert utils.is_int(track.viewCount, gte=0)
assert track.viewOffset == 0
def test_audio_Album_track(album, track=None):
2017-01-09 14:21:54 +00:00
# this is not reloaded. its not that much info missing.
2020-04-29 21:23:22 +00:00
track = track or album.track("As Colourful As Ever")
assert utils.is_datetime(track.addedAt)
assert utils.is_int(track.duration)
assert utils.is_metadata(track.grandparentKey)
assert utils.is_int(track.grandparentRatingKey)
2020-04-29 21:23:22 +00:00
assert track.grandparentTitle == "Broke For Free"
assert int(track.index) == 1
assert utils.is_metadata(track._initpath)
assert utils.is_metadata(track.key)
2020-04-29 21:23:22 +00:00
assert track.listType == "audio"
2017-01-09 14:21:54 +00:00
# Assign 0 track.media
media = track.media[0]
2020-04-29 21:23:22 +00:00
assert track.originalTitle in (None, "As Colourful As Ever")
# Fix me
assert utils.is_int(track.parentIndex)
assert utils.is_metadata(track.parentKey)
assert utils.is_int(track.parentRatingKey)
2020-04-29 21:23:22 +00:00
assert utils.is_metadata(track.parentThumb, contains="/thumb/")
assert track.parentTitle == "Layers"
2019-09-21 21:17:35 +00:00
# assert track.ratingCount == 9
assert utils.is_int(track.ratingKey)
assert track._server._baseurl == utils.SERVER_BASEURL
2020-04-29 21:23:22 +00:00
assert track.summary == ""
assert utils.is_metadata(track.thumb, contains="/thumb/")
assert track.title == "As Colourful as Ever"
assert track.titleSort == "As Colourful as Ever"
2017-10-13 22:02:21 +00:00
assert not track.transcodeSessions
2020-04-29 21:23:22 +00:00
assert track.type == "track"
assert utils.is_datetime(track.updatedAt)
2017-04-29 05:47:21 +00:00
assert utils.is_int(track.viewCount, gte=0)
2017-01-09 14:21:54 +00:00
assert track.viewOffset == 0
assert media.aspectRatio is None
assert media.audioChannels == 2
2020-04-29 21:23:22 +00:00
assert media.audioCodec == "mp3"
assert media.bitrate == 128
assert media.container == "mp3"
assert utils.is_int(media.duration)
2020-04-29 21:23:22 +00:00
assert media.height in (None, 1080)
2017-04-29 05:47:21 +00:00
assert utils.is_int(media.id, gte=1)
assert utils.is_metadata(media._initpath)
2020-04-29 21:23:22 +00:00
assert media.optimizedForStreaming in (None, True)
# Assign 0 media.parts
part = media.parts[0]
assert media._server._baseurl == utils.SERVER_BASEURL
assert media.videoCodec is None
assert media.videoFrameRate is None
assert media.videoResolution is None
assert media.width is None
2020-04-29 21:23:22 +00:00
assert part.container == "mp3"
assert utils.is_int(part.duration)
2020-04-29 21:23:22 +00:00
assert part.file.endswith(".mp3")
assert utils.is_int(part.id)
assert utils.is_metadata(part._initpath)
assert utils.is_part(part.key)
assert part._server._baseurl == utils.SERVER_BASEURL
2020-04-29 21:23:22 +00:00
assert part.size == 3761053
assert track.artUrl is None
def test_audio_Album_get(album):
# alias for album.track()
2020-04-29 21:23:22 +00:00
track = album.get("As Colourful As Ever")
test_audio_Album_track(album, track=track)
def test_audio_Album_artist(album):
artist = album.artist()
2020-04-29 21:23:22 +00:00
artist.title == "Broke For Free"
2017-01-09 14:21:54 +00:00
def test_audio_Track_attrs(album):
2020-04-29 21:23:22 +00:00
track = album.get("As Colourful As Ever").reload()
assert utils.is_datetime(track.addedAt)
2017-02-04 19:18:10 +00:00
assert track.art is None
assert track.chapterSource is None
assert utils.is_int(track.duration)
2017-02-04 19:18:10 +00:00
assert track.grandparentArt is None
assert utils.is_metadata(track.grandparentKey)
assert utils.is_int(track.grandparentRatingKey)
2017-04-23 05:54:53 +00:00
if track.grandparentThumb:
2020-04-29 21:23:22 +00:00
assert utils.is_metadata(track.grandparentThumb, contains="/thumb/")
assert track.grandparentTitle == "Broke For Free"
assert track.guid.startswith("local://")
assert int(track.index) == 1
assert utils.is_metadata(track._initpath)
assert utils.is_metadata(track.key)
2017-04-29 06:21:20 +00:00
if track.lastViewedAt:
assert utils.is_datetime(track.lastViewedAt)
assert utils.is_int(track.librarySectionID)
2020-04-29 21:23:22 +00:00
assert track.listType == "audio"
2017-01-09 14:21:54 +00:00
# Assign 0 track.media
media = track.media[0]
2017-01-09 14:21:54 +00:00
assert track.moods == []
2020-04-29 21:23:22 +00:00
assert track.originalTitle in (None, "Broke For Free")
assert int(track.parentIndex) == 1
assert utils.is_metadata(track.parentKey)
assert utils.is_int(track.parentRatingKey)
2020-04-29 21:23:22 +00:00
assert utils.is_metadata(track.parentThumb, contains="/thumb/")
assert track.parentTitle == "Layers"
2017-02-04 19:18:10 +00:00
assert track.playlistItemID is None
assert track.primaryExtraKey is None
2020-04-29 21:23:22 +00:00
# assert utils.is_int(track.ratingCount)
assert utils.is_int(track.ratingKey)
assert track._server._baseurl == utils.SERVER_BASEURL
2017-02-04 19:18:10 +00:00
assert track.sessionKey is None
2020-04-29 21:23:22 +00:00
assert track.summary == ""
assert utils.is_metadata(track.thumb, contains="/thumb/")
assert track.title == "As Colourful as Ever"
assert track.titleSort == "As Colourful as Ever"
2017-10-13 22:02:21 +00:00
assert not track.transcodeSessions
2020-04-29 21:23:22 +00:00
assert track.type == "track"
assert utils.is_datetime(track.updatedAt)
2017-04-29 05:47:21 +00:00
assert utils.is_int(track.viewCount, gte=0)
2017-01-09 14:21:54 +00:00
assert track.viewOffset == 0
2017-02-04 19:18:10 +00:00
assert track.viewedAt is None
assert track.year is None
assert media.aspectRatio is None
assert media.audioChannels == 2
2020-04-29 21:23:22 +00:00
assert media.audioCodec == "mp3"
assert media.bitrate == 128
assert media.container == "mp3"
assert utils.is_int(media.duration)
assert media.height is None
2017-04-29 05:47:21 +00:00
assert utils.is_int(media.id, gte=1)
assert utils.is_metadata(media._initpath)
assert media.optimizedForStreaming is None
# Assign 0 media.parts
part = media.parts[0]
assert media._server._baseurl == utils.SERVER_BASEURL
assert media.videoCodec is None
assert media.videoFrameRate is None
assert media.videoResolution is None
assert media.width is None
2020-04-29 21:23:22 +00:00
assert part.container == "mp3"
assert utils.is_int(part.duration)
2020-04-29 21:23:22 +00:00
assert part.file.endswith(".mp3")
assert utils.is_int(part.id)
assert utils.is_metadata(part._initpath)
assert utils.is_part(part.key)
# assert part.media == <Media:Holy.Moment>
assert part._server._baseurl == utils.SERVER_BASEURL
2020-04-29 21:23:22 +00:00
assert part.size == 3761053
# Assign 0 part.streams
stream = part.streams[0]
2020-04-29 21:23:22 +00:00
assert stream.audioChannelLayout == "stereo"
assert stream.bitDepth is None
2020-04-29 21:23:22 +00:00
assert stream.bitrate == 128
assert stream.bitrateMode is None
assert stream.channels == 2
2020-04-29 21:23:22 +00:00
assert stream.codec == "mp3"
assert stream.codecID is None
assert stream.dialogNorm is None
assert stream.duration is None
assert utils.is_int(stream.id)
assert stream.index == 0
assert utils.is_metadata(stream._initpath)
assert stream.language is None
assert stream.languageCode is None
# assert stream.part == <MediaPart:22>
2020-04-29 21:23:22 +00:00
assert stream.samplingRate == 48000
assert stream.selected is True
assert stream._server._baseurl == utils.SERVER_BASEURL
assert stream.streamType == 2
assert stream.title is None
assert stream.type == 2
def test_audio_Track_album(album):
tracks = album.tracks()
assert tracks[0].album() == album
def test_audio_Track_artist(album, artist):
tracks = album.tracks()
assert tracks[0].artist() == artist
def test_audio_Audio_section(artist, album, track):
assert artist.section()
assert album.section()
assert track.section()
assert track.section().key == album.section().key == artist.section().key
def test_audio_Track_download(monkeydownload, tmpdir, track):
f = track.download(savepath=str(tmpdir))
2017-01-09 14:21:54 +00:00
assert f
def test_audio_album_download(monkeydownload, album, tmpdir):
f = album.download(savepath=str(tmpdir))
2020-04-29 21:23:22 +00:00
assert len(f) == 1
2017-01-09 14:21:54 +00:00
def test_audio_Artist_download(monkeydownload, artist, tmpdir):
f = artist.download(savepath=str(tmpdir))
2020-04-29 21:23:22 +00:00
assert len(f) == 1
2018-03-02 10:41:30 +00:00
def test_audio_Album_label(album, patched_http_call):
2020-04-29 21:23:22 +00:00
album.addLabel("YO")