def song_to_dict(song, include_hash=False, include_user=False, include_replaygain=False, **options): data = { "id": song.id, "artist": song.artist, "title": song.title, "duration": song.duration, } if include_hash: data["hash"] = song.hash if include_user is not None and song.user is not None and song.user.name: data["uploader_name"] = song.user.name if include_replaygain: data["rg_gain"] = song.rg_gain data["rg_peak"] = song.rg_peak return data def playlist_song_to_dict(playlist_song, **options): user = options.get("user") return { "id": playlist_song.id, "requested_by": "Marietje" if playlist_song.user is None else playlist_song.user.name, "song": song_to_dict(playlist_song.song, **options), "can_move_down": playlist_song.user is not None and playlist_song.user == user, }