Как мне узнать, является ли плейлист музыкальным плейлистом в C#?
Я уже приложил свой код, моя проблема в том, что все плейлисты возвращают "auto" или "wpl" для своего типа. (Это все с использованием ссылки WMPLib)
mediaplayer = new WindowsMediaPlayer();
// Init. Playlists
IWMPPlaylistCollection plcollection = mediaplayer.playlistCollection;
plarray = plcollection.getAll();
int i = 0, count = plarray.count;
string[] t = new string[count];
// Here is where I want to sort out non-music playlists
// And add them to the ListBox
for (i = 0; i < count - 1; i++)
t[i] = plarray.Item(i).getItemInfo("PlaylistType");
for (i = 0; i < count; i++ )
PlaylistBox.Items.Add("" + plarray.Item(i).name);
Не имеет значения, но если вы знаете, как прикреплять списки воспроизведения в виде данных, а не строк, это тоже будет полезно:)
1 ответ
Решение
Я предполагаю, что вы можете перебирать элементы списка воспроизведения, и если атрибут MediaType элемента равен " audio ", этот список будет считаться списком, содержащим аудиофайлы. Что-то вроде этого:
private bool ListHasAudio(IWMPPlaylist playList)
{
if (playList != null && playList.count > 0)
{
for (int n = 0; n < playList.count; n++)
{
IWMPMedia media = playList.get_Item(n);
string mediaType = media.getItemInfo("MediaType");
if (mediaType != null && mediaType.Equals("audio", StringComparison.CurrentCultureIgnoreCase))
return true;
}
}
return false;
}
вот как вы можете использовать это:
var mediaplayer = new WindowsMediaPlayer();
// Init. Playlists
IWMPPlaylistCollection plcollection = mediaplayer.playlistCollection;
var plarray = plcollection.getAll();
// Load list box items
for (int i = 0; i < plarray.count; i++)
{
IWMPPlaylist playList = plarray.Item(i);
if (ListHasAudio(playList))
PlaylistBox.Items.Add(playList.name);
}
надеюсь, что это помогает, привет