public PlayableItem Create(Video video) { PlayableItem playable = null; if (PlayableExternal.CanPlay(video.Path)) { playable = new PlayableExternal(video.Path); } else if (PlayableVideoFile.CanPlay(video)) { playable = new PlayableVideoFile(video); } else if (PlayableIso.CanPlay(video)) { playable = new PlayableIso(video); } else if (PlayableMultiFileVideo.CanPlay(video)) { playable = new PlayableMultiFileVideo(video); } else if (PlayableDvd.CanPlay(video)) { playable = new PlayableDvd(video); } foreach (var controller in Kernel.Instance.PlaybackControllers) { if (controller.CanPlay(playable.Filename)) { playable.PlaybackController = controller; } } return(playable); }
public override void Prepare(bool resume) { musicFiles = music.MusicFiles.ToList(); if (musicFiles.Count == 1) { playListFile = musicFiles[0]; if (PlayableExternal.CanPlay(playListFile)) { this.playableExternal = new PlayableExternal(playListFile); } } else { musicFiles.Sort(); int pos = 0; if (resume) { pos = PlayState.PlaylistPosition; } if (PlayableExternal.CanPlay(musicFiles[0])) { playListFile = Path.Combine(ApplicationPaths.AutoPlaylistPath, music.Name + ".pls"); StringBuilder contents = new StringBuilder("[playlist]\n"); int x = 1; foreach (string file in musicFiles) { if (pos > 0) { pos--; } else { contents.Append("File" + x + "=" + file + "\n"); contents.Append("Title" + x + "=Part " + x + "\n\n"); } x++; } contents.Append("Version=2\n"); System.IO.File.WriteAllText(playListFile, contents.ToString()); this.playableExternal = new PlayableExternal(playListFile); } else { playListFile = CreateWPLPlaylist(music.Name, musicFiles.Skip(pos)); } } }