yandex-music-api/yandex_music/playlist/playlist.py

121 行
3.8 KiB
Python
Raw 通常表示 履歴

from datetime import datetime
from yandex_music import YandexMusicObject
class Playlist(YandexMusicObject):
def __init__(self,
owner,
uid,
kind,
title,
track_count,
cover,
made_for,
play_counter,
tags=None,
revision=None,
snapshot=None,
visibility=None,
collective=None,
created=None,
modified=None,
available=None,
is_banner=None,
is_premiere=None,
duration_ms=None,
og_image=None,
tracks=None,
prerolls=None,
likes_count=None,
generated_playlist_type=None,
animated_cover_uri=None,
ever_played=None,
description=None,
description_formatted=None,
is_for_from=None,
regions=None,
client=None,
**kwargs):
self.owner = owner
self.uid = uid
self.kind = kind
self.title = title
self.track_count = track_count
self.cover = cover
self.made_for = made_for
self.play_counter = play_counter
self.revision = revision
self.snapshot = snapshot
self.visibility = visibility
self.collective = collective
self.created = datetime.fromisoformat(created) if created else created
self.modified = datetime.fromisoformat(modified) if modified else modified
self.available = available
self.is_banner = is_banner
self.is_premiere = is_premiere
self.duration_ms = duration_ms
self.og_image = og_image
self.tracks = tracks
self.prerolls = prerolls
self.likes_count = likes_count
self.animated_cover_uri = animated_cover_uri
self.description = description
self.description_formatted = description_formatted
self.ever_played = ever_played
self.generated_playlist_type = generated_playlist_type
self.is_for_from = is_for_from
self.regions = regions
self.tags = tags
self.client = client
self._id_attrs = (self.uid,)
@property
def is_mine(self):
return self.owner.uid == self.client.account.uid
@property
def playlist_id(self):
return f'{self.owner.uid}:{self.kind}'
def rename(self, name):
client, kind = self.client, self.kind
self.__dict__.clear()
self.__dict__.update(client.users_playlists_name(kind, name).__dict__)
@classmethod
def de_json(cls, data, client):
if not data:
return None
data = super(Playlist, cls).de_json(data, client)
from yandex_music import User, MadeFor, Cover, PlayCounter, TrackShort
data['owner'] = User.de_json(data.get('owner'), client)
data['cover'] = Cover.de_json(data.get('cover'), client)
data['made_for'] = MadeFor.de_json(data.get('made_for'), client)
data['tracks'] = TrackShort.de_list(data.get('tracks'), client)
data['play_counter'] = PlayCounter.de_json(data.get('play_counter'), client)
return cls(client=client, **data)
@classmethod
def de_list(cls, data, client):
if not data:
return []
playlists = list()
for playlist in data:
playlists.append(cls.de_json(playlist, client))
return playlists
2019-08-18 18:54:13 +09:00
# camelCase псевдонимы
"""Псевдоним для :attr:`is_mine`"""
isMine = is_mine
"""Псевдоним для :attr:`playlist_id`"""
playlistId = playlist_id