protected virtual bool GetDrive(out int drive) { var outputStream = this.PlaybackManager.CurrentStream; if (outputStream == null) { drive = default(int); return(false); } var id = default(string); var track = default(int); return(BassCdStreamProvider.ParseUrl(outputStream.FileName, out drive, out id, out track)); }
private async Task AddPlaylistItems() { await this.SetName("Getting track list").ConfigureAwait(false); await this.SetIsIndeterminate(true).ConfigureAwait(false); var info = default(CDInfo); BassUtils.OK(BassCd.GetInfo(this.Drive, out info)); var id = BassCd.GetID(this.Drive, CDID.CDPlayer); var directoryName = string.Format("{0}:\\", info.DriveLetter); using (var transaction = this.Database.BeginTransaction(this.Database.PreferredIsolationLevel)) { using (var writer = new PlaylistWriter(this.Database, transaction)) { for (int a = 0, b = BassCd.GetTracks(this.Drive); a < b; a++) { if (BassCd.GetTrackLength(this.Drive, a) == -1) { //Not a music track. continue; } var fileName = BassCdStreamProvider.CreateUrl(this.Drive, id, a); fileName += string.Format("/{0}", await this.GetFileName(fileName, a)); Logger.Write(this, LogLevel.Debug, "Adding file to playlist: {0}", fileName); var playlistItem = new PlaylistItem() { DirectoryName = directoryName, FileName = fileName, Sequence = this.Sequence + a }; await writer.Write(playlistItem).ConfigureAwait(false); this.Offset++; } } transaction.Commit(); } }
public Task <IEnumerable <MetaDataItem> > GetMetaData(string fileName) { var drive = default(int); var id = default(string); var track = default(int); if (!BassCdStreamProvider.ParseUrl(fileName, out drive, out id, out track)) { //TODO: Warn. #if NET40 return(TaskEx.FromResult(Enumerable.Empty <MetaDataItem>())); #else return(Task.FromResult(Enumerable.Empty <MetaDataItem>())); #endif } var metaData = new List <MetaDataItem>(); metaData.AddRange(this.Strategy.GetMetaDatas(track)); metaData.AddRange(this.Strategy.GetProperties(track)); #if NET40 return(TaskEx.FromResult <IEnumerable <MetaDataItem> >(metaData)); #else return(Task.FromResult <IEnumerable <MetaDataItem> >(metaData)); #endif }