Source code for pylav.extension.red.ui.selectors.options.playlist

from __future__ import annotations

from pathlib import Path

import discord
from redbot.core.i18n import Translator

from pylav.helpers.format.strings import shorten_string
from pylav.storage.models.playlist import Playlist
from pylav.type_hints.bot import DISCORD_BOT_TYPE

_ = Translator("PyLav", Path(__file__))


[docs] class PlaylistOption(discord.SelectOption):
[docs] @classmethod async def from_playlist(cls, playlist: Playlist, bot: DISCORD_BOT_TYPE, index: int): return cls( label=shorten_string(max_length=100, string=f"{index + 1}. {await playlist.fetch_name()}"), description=shorten_string( max_length=100, string=_( "Tracks: {playlist_size_variable_do_not_translate} || {playlist_author_name_variable_do_not_translate} || {playlist_scope_variable_do_not_translate}" ).format( playlist_size_variable_do_not_translate=await playlist.size(), playlist_author_name_variable_do_not_translate=await playlist.get_author_name(bot, mention=False), playlist_scope_variable_do_not_translate=await playlist.get_scope_name(bot, mention=False), ), ), value=f"{playlist.id}", )