Пример #1
0
        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));
        }
Пример #2
0
            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();
                }
            }
Пример #3
0
        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
        }