92 lines
2.5 KiB
Python
92 lines
2.5 KiB
Python
"""Serializers for artwork and metadata"""
|
|
from rest_framework import serializers
|
|
from audio.models_artwork import Artwork, MusicMetadata, ArtistInfo
|
|
|
|
|
|
class ArtworkSerializer(serializers.ModelSerializer):
|
|
"""Serializer for Artwork model"""
|
|
|
|
class Meta:
|
|
model = Artwork
|
|
fields = [
|
|
'id',
|
|
'audio',
|
|
'channel',
|
|
'artwork_type',
|
|
'source',
|
|
'url',
|
|
'local_path',
|
|
'width',
|
|
'height',
|
|
'priority',
|
|
'is_primary',
|
|
'created_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at']
|
|
|
|
|
|
class MusicMetadataSerializer(serializers.ModelSerializer):
|
|
"""Serializer for MusicMetadata model"""
|
|
|
|
class Meta:
|
|
model = MusicMetadata
|
|
fields = [
|
|
'id',
|
|
'audio',
|
|
'album_name',
|
|
'album_artist',
|
|
'release_year',
|
|
'track_number',
|
|
'disc_number',
|
|
'genre',
|
|
'tags',
|
|
'lastfm_url',
|
|
'lastfm_mbid',
|
|
'play_count',
|
|
'listeners',
|
|
'fanart_artist_id',
|
|
'fanart_album_id',
|
|
'created_at',
|
|
'updated_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class ArtistInfoSerializer(serializers.ModelSerializer):
|
|
"""Serializer for ArtistInfo model"""
|
|
|
|
class Meta:
|
|
model = ArtistInfo
|
|
fields = [
|
|
'id',
|
|
'channel',
|
|
'bio',
|
|
'bio_summary',
|
|
'lastfm_url',
|
|
'lastfm_mbid',
|
|
'lastfm_listeners',
|
|
'lastfm_playcount',
|
|
'tags',
|
|
'fanart_id',
|
|
'similar_artists',
|
|
'created_at',
|
|
'updated_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class AudioWithArtworkSerializer(serializers.Serializer):
|
|
"""Serializer for audio with artwork"""
|
|
audio_id = serializers.IntegerField()
|
|
audio_title = serializers.CharField()
|
|
artist = serializers.CharField()
|
|
artwork = ArtworkSerializer(many=True)
|
|
metadata = MusicMetadataSerializer(required=False)
|
|
|
|
|
|
class ChannelWithArtworkSerializer(serializers.Serializer):
|
|
"""Serializer for channel with artwork"""
|
|
channel_id = serializers.IntegerField()
|
|
channel_name = serializers.CharField()
|
|
artwork = ArtworkSerializer(many=True)
|
|
artist_info = ArtistInfoSerializer(required=False)
|