Exemplo n.º 1
0
    def de_json(cls, data: dict, client: 'Client') -> Optional['TrackWithAds']:
        if not data:
            return None

        data = super(TrackWithAds, cls).de_json(data, client)
        from yandex_music import Track
        data['track'] = Track.de_json(data.get('track'), client)

        return cls(client=client, **data)
    def de_json(cls, data, client):
        if not data:
            return None

        data = super(Sequence, cls).de_json(data, client)
        from yandex_music import Track
        data['track'] = Track.de_json(data.get('track'), client)

        return cls(client=client, **data)
Exemplo n.º 3
0
    def de_json(cls, data, client):
        if not data:
            return None

        data = super(ChartItem, cls).de_json(data, client)
        from yandex_music import Chart, Track
        data['track'] = Track.de_json(data.get('track'), client)
        data['chart'] = Chart.de_json(data.get('chart'), client)

        return cls(client=client, **data)
    def test_de_json_required(self, client, artist, album):
        json_dict = {
            'id': self.id,
            'title': self.title,
            'available': self.available,
            'artists': [artist.to_dict()],
            'albums': [album.to_dict()]
        }
        track = Track.de_json(json_dict, client)

        assert track.id == self.id
        assert track.title == self.title
        assert track.available == self.available
        assert track.artists == [artist]
        assert track.albums == [album]
Exemplo n.º 5
0
    def de_json(cls, data: dict, client: 'Client') -> Optional['TrackWithAds']:
        """Десериализация объекта.

        Args:
            data (:obj:`dict`): Поля и значения десериализуемого объекта.
            client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.

        Returns:
            :obj:`yandex_music.TrackWithAds`: Трек с рекламой.
        """
        if not data:
            return None

        data = super(TrackWithAds, cls).de_json(data, client)
        from yandex_music import Track
        data['track'] = Track.de_json(data.get('track'), client)

        return cls(client=client, **data)
Exemplo n.º 6
0
    def de_json(cls, data: dict, client: 'Client') -> Optional['Sequence']:
        """Десериализация объекта.

        Args:
            data (:obj:`dict`): Поля и значения десериализуемого объекта.
            client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.

        Returns:
            :obj:`yandex_music.Sequence`: Звено последовательности.
        """
        if not data:
            return None

        data = super(Sequence, cls).de_json(data, client)
        from yandex_music import Track
        data['track'] = Track.de_json(data.get('track'), client)

        return cls(client=client, **data)
Exemplo n.º 7
0
    def de_json(cls, data, client):
        """Десериализация объекта.

        Args:
            data (:obj:`dict`): Поля и значения десериализуемого объекта.
            client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client`, представляющий клиент
                Yandex Music.

        Returns:
            :obj:`yandex_music.TrackWithAds`: Объект класса :class:`yandex_music.TrackWithAds`.
        """
        if not data:
            return None

        data = super(TrackWithAds, cls).de_json(data, client)
        from yandex_music import Track
        data['track'] = Track.de_json(data.get('track'), client)

        return cls(client=client, **data)
Exemplo n.º 8
0
    def de_json(cls, data: dict, client: 'Client') -> Optional['ChartItem']:
        """Десериализация объекта.

        Args:
            data (:obj:`dict`): Поля и значения десериализуемого объекта.
            client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.

        Returns:
            :obj:`yandex_music.ChartItem`: Трек в чарте.
        """
        if not data:
            return None

        data = super(ChartItem, cls).de_json(data, client)
        from yandex_music import Chart, Track
        data['track'] = Track.de_json(data.get('track'), client)
        data['chart'] = Chart.de_json(data.get('chart'), client)

        return cls(client=client, **data)
Exemplo n.º 9
0
    def de_json(cls, data: dict, client: 'Client') -> Optional['TrackShort']:
        """Десериализация объекта.

        Args:
            data (:obj:`dict`): Поля и значения десериализуемого объекта.
            client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.

        Returns:
            :obj:`yandex_music.TrackShort`: Укороченная версия трека с неполными данными.
        """
        if not data:
            return None

        data = super(TrackShort, cls).de_json(data, client)
        from yandex_music import Track, Chart

        data['track'] = Track.de_json(data.get('track'), client)
        data['chart'] = Chart.de_json(data.get('chart'), client)

        return cls(client=client, **data)
Exemplo n.º 10
0
    def de_json(cls, data: dict,
                client: 'Client') -> Optional['SimilarTracks']:
        """Десериализация объекта.

        Args:
            data (:obj:`dict`): Поля и значения десериализуемого объекта.
            client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.

        Returns:
            :obj:`yandex_music.SimilarTracks`: Список похожих треков на другой трек.
        """
        if not data:
            return None

        data = super(SimilarTracks, cls).de_json(data, client)
        from yandex_music import Track
        data['track'] = Track.de_json(data.get('track'), client)
        data['similar_tracks'] = Track.de_list(data.get('similar_tracks'),
                                               client)

        return cls(client=client, **data)
    def test_de_json_all(self, client, artist, album, major, normalization):
        json_dict = {
            'id':
            self.id,
            'title':
            self.title,
            'available':
            self.available,
            'available_for_premium_users':
            self.available_for_premium_users,
            'artists': [artist.to_dict()],
            'albums': [album.to_dict()],
            'lyrics_available':
            self.lyrics_available,
            'real_id':
            self.real_id,
            'og_image':
            self.og_image,
            'type':
            self.type,
            'cover_uri':
            self.cover_uri,
            'major':
            major.to_dict(),
            'duration_ms':
            self.duration_ms,
            'storage_dir':
            self.storage_dir,
            'file_size':
            self.file_size,
            'normalization':
            normalization.to_dict(),
            'error':
            self.error,
            'regions':
            self.regions,
            'available_as_rbt':
            self.available_as_rbt,
            'content_warning':
            self.content_warning,
            'explicit':
            self.explicit,
            'preview_duration_ms':
            self.preview_duration_ms,
            'available_full_without_permission':
            self.available_full_without_permission
        }
        track = Track.de_json(json_dict, client)

        assert track.id == self.id
        assert track.title == self.title
        assert track.available == self.available
        assert track.available_for_premium_users == self.available_for_premium_users
        assert track.artists == [artist]
        assert track.albums == [album]
        assert track.lyrics_available == self.lyrics_available
        assert track.real_id == self.real_id
        assert track.og_image == self.og_image
        assert track.type == self.type
        assert track.cover_uri == self.cover_uri
        assert track.major == major
        assert track.duration_ms == self.duration_ms
        assert track.storage_dir == self.storage_dir
        assert track.file_size == self.file_size
        assert track.normalization == normalization
        assert track.error == self.error
        assert track.regions == self.regions
        assert track.available_as_rbt == self.available_as_rbt
        assert track.content_warning == self.content_warning
        assert track.explicit == self.explicit
        assert track.preview_duration_ms == self.preview_duration_ms
        assert track.available_full_without_permission == self.available_full_without_permission
Exemplo n.º 12
0
    def test_de_json_required(self, client, artist, album):
        json_dict = {'id_': self.id}
        track = Track.de_json(json_dict, client)

        assert track.id == self.id
Exemplo n.º 13
0
 def test_de_json_none(self, client):
     assert Track.de_json({}, client) is None
Exemplo n.º 14
0
    def test_de_json_all(
        self,
        client,
        artist,
        album,
        major,
        normalization,
        track_without_nested_tracks,
        user,
        meta_data,
        poetry_lover_match,
    ):
        json_dict = {
            'id_': self.id,
            'title': self.title,
            'available': self.available,
            'available_for_premium_users': self.available_for_premium_users,
            'artists': [artist.to_dict()],
            'albums': [album.to_dict()],
            'lyrics_available': self.lyrics_available,
            'best': self.best,
            'real_id': self.real_id,
            'og_image': self.og_image,
            'type_': self.type,
            'cover_uri': self.cover_uri,
            'major': major.to_dict(),
            'duration_ms': self.duration_ms,
            'storage_dir': self.storage_dir,
            'file_size': self.file_size,
            'normalization': normalization.to_dict(),
            'error': self.error,
            'regions': self.regions,
            'available_as_rbt': self.available_as_rbt,
            'content_warning': self.content_warning,
            'explicit': self.explicit,
            'preview_duration_ms': self.preview_duration_ms,
            'version': self.version,
            'available_full_without_permission':
            self.available_full_without_permission,
            'remember_position': self.remember_position,
            'substituted': track_without_nested_tracks.to_dict(),
            'matched_track': track_without_nested_tracks.to_dict(),
            'can_publish': self.can_publish,
            'state': self.state,
            'desired_visibility': self.desired_visibility,
            'filename': self.filename,
            'user_info': user.to_dict(),
            'meta_data': meta_data.to_dict(),
            'poetry_lover_matches': [poetry_lover_match.to_dict()],
            'background_video_uri': self.background_video_uri,
            'short_description': self.short_description,
            'is_suitable_for_children': self.is_suitable_for_children,
        }
        track = Track.de_json(json_dict, client)

        assert track.id == self.id
        assert track.title == self.title
        assert track.available == self.available
        assert track.available_for_premium_users == self.available_for_premium_users
        assert track.artists == [artist]
        assert track.albums == [album]
        assert track.lyrics_available == self.lyrics_available
        assert track.poetry_lover_matches == [poetry_lover_match]
        assert track.best == self.best
        assert track.real_id == self.real_id
        assert track.og_image == self.og_image
        assert track.type == self.type
        assert track.cover_uri == self.cover_uri
        assert track.major == major
        assert track.duration_ms == self.duration_ms
        assert track.storage_dir == self.storage_dir
        assert track.file_size == self.file_size
        assert track.substituted == track_without_nested_tracks
        assert track.matched_track == track_without_nested_tracks
        assert track.normalization == normalization
        assert track.error == self.error
        assert track.meta_data == meta_data
        assert track.regions == self.regions
        assert track.available_as_rbt == self.available_as_rbt
        assert track.content_warning == self.content_warning
        assert track.explicit == self.explicit
        assert track.preview_duration_ms == self.preview_duration_ms
        assert track.available_full_without_permission == self.available_full_without_permission
        assert track.version == self.version
        assert track.remember_position == self.remember_position
        assert track.can_publish == self.can_publish
        assert track.state == self.state
        assert track.desired_visibility == self.desired_visibility
        assert track.filename == self.filename
        assert track.user_info == user
        assert track.background_video_uri == self.background_video_uri
        assert track.short_description == self.short_description
        assert track.is_suitable_for_children == self.is_suitable_for_children