Exemplo n.º 1
0
        public void RequestPlaying(string filename)
        {
            TagModel model = DocNode.Create <TagModel>();

            model.FileNameFull = filename;

            try
            {
                int tagSize = TagUtils.TagSizeV2(new FileInfo(filename));
                using (Stream stream = VirtualDrive.OpenInStream(filename))
                {
                    stream.Seek(tagSize, SeekOrigin.Begin);
                    model.Bitrate.Value = ID3MediaFileHeader.MP3Header.ReadBitrate(
                        stream, VirtualDrive.FileLength(filename));
                }
            }
            catch (Exception)
            {
            }

            FileInfo fileInfo = new FileInfo(filename);

            FileTreeModel.ExpandAndSelect(fileInfo.DirectoryName, true);

            RequestPlaying(model);
        }
Exemplo n.º 2
0
        public void Load(string fileName)
        {
            Tag tag = TagUtils.ReadTag(new FileInfo(fileName));

            int bitrate = -1;

            if (!Object.ReferenceEquals(tag, null))
            {
                try
                {
                    int tagSize = TagUtils.TagSizeV2(new FileInfo(fileName));
                    using (Stream stream = VirtualDrive.OpenInStream(fileName))
                    {
                        stream.Seek(tagSize, SeekOrigin.Begin);
                        bitrate = ID3MediaFileHeader.MP3Header.ReadBitrate(
                            stream, VirtualDrive.FileLength(fileName));
                    }
                }
                catch (Exception)
                {
                    bitrate = -1;
                }
            }

            Init(fileName, tag, bitrate);
        }
Exemplo n.º 3
0
            public void Run()
            {
                foreach (string fileName in FileNames)
                {
                    if (Abort)
                    {
                        return;
                    }

                    Tag tag = TagUtils.ReadTag(new FileInfo(fileName));

                    fileToTagMap[fileName] = tag;

                    if (!Object.ReferenceEquals(tag, null))
                    {
                        try
                        {
                            int tagSize = TagUtils.TagSizeV2(new FileInfo(fileName));
                            using (Stream stream = VirtualDrive.OpenInStream(fileName))
                            {
                                stream.Seek(tagSize, SeekOrigin.Begin);
                                fileToBitrate[tag] = ID3MediaFileHeader.MP3Header.ReadBitrate(
                                    stream, VirtualDrive.FileLength(fileName));
                            }
                        }
                        catch (Exception)
                        {
                            fileToBitrate[tag] = -1;
                        }
                    }
                }
            }
Exemplo n.º 4
0
        public void Open(string fileName)
        {
            Close();

            Reader   = new StreamReader(VirtualDrive.OpenInStream(fileName));
            Filename = fileName;
        }
Exemplo n.º 5
0
        public Reader(FileInfo file)
        {
            Filename = file.FullName;
            stream   = VirtualDrive.OpenInStream(file.FullName);
            length   = stream.Length;

            SetupReader();
        }
Exemplo n.º 6
0
        public static long OffsetToMpegHeader(FileInfo file)
        {
            long tagSize = TagUtils.TagSizeV2(file);

            using (Stream s = VirtualDrive.OpenInStream(file.FullName))
            {
                s.Seek(tagSize, SeekOrigin.Begin);
                return(tagSize + TagUtils.OffsetToFirstMpegHeader(s));
            }
        }
Exemplo n.º 7
0
        private void ProcessFileForAdd(string fileName, HashSet <string> filenamesCaseInsensitive)
        {
            if (filenamesCaseInsensitive.Contains(fileName))
            {
                return;
            }

            try
            {
                ID3.Tag tag = ID3.TagUtils.ReadTag(new FileInfo(fileName));

                if (!Object.ReferenceEquals(tag, null))
                {
                    ID3.TagEditor editor = new ID3.TagEditor(tag);

                    int bitrate = -1;
                    if (!Object.ReferenceEquals(tag, null))
                    {
                        try
                        {
                            int tagSize = TagUtils.TagSizeV2(new FileInfo(fileName));
                            using (Stream stream = VirtualDrive.OpenInStream(fileName))
                            {
                                stream.Seek(tagSize, SeekOrigin.Begin);
                                bitrate = ID3MediaFileHeader.MP3Header.ReadBitrate(
                                    stream, VirtualDrive.FileLength(fileName));
                            }
                        }
                        catch (Exception)
                        {
                            bitrate = -1;
                        }
                    }

                    var track = new Tracks();

                    track.ID          = Guid.NewGuid();
                    track.Artist      = ShrinkText(editor.Artist, 64);
                    track.Title       = ShrinkText(editor.Title, 64);
                    track.Album       = ShrinkText(editor.Album, 64);
                    track.Filename    = ShrinkText(fileName, 1024);
                    track.ReleaseYear = ShrinkText(editor.ReleaseYear, 10);
                    track.TrackNumber = ShrinkText(editor.TrackNumber, 10);
                    track.PartOfSet   = ShrinkText(editor.PartOfSet, 10);
                    track.ContentType = ShrinkText(editor.ContentType, 64);
                    track.FullText    = ShrinkText(track.Artist + track.Title + track.Album + track.ContentType, 256);
                    track.Bitrate     = ShrinkText(bitrate.ToString(), 10);

                    databaseChanger.AddTrack(track);
                }
            }
            catch (Exception)
            {
            }
        }
Exemplo n.º 8
0
        public static byte[] LoadFileBinary(string filename)
        {
            long length = VirtualDrive.FileLength(filename);

            byte[] result = new byte[length];

            using (Stream stream = VirtualDrive.OpenInStream(filename))
            {
                stream.Read(result, 0, (int)length);
                return(result);
            }
        }
Exemplo n.º 9
0
        public static long OffsetTagToMpegHeader(FileInfo file)
        {
            long tagSize = TagUtils.TagSizeV2(file);

            using (Stream s = VirtualDrive.OpenInStream(file.FullName))
            {
                s.Seek(tagSize, SeekOrigin.Begin);

                long offset = TagUtils.OffsetToFirstMpegHeader(s);

                if (offset > 0)
                {
                    Logger.WriteLine(Tokens.Warning, "Tag V2 has wrong size. Offset to MPEG header: " + offset
                                     + " in file " + file.FullName);
                }

                return(offset);
            }
        }
Exemplo n.º 10
0
        public static int LoadFileLengthFromMp3(string file, MpegDataSize sizeProvider, MpegSkipBytes skipBytes)
        {
            using (Stream stream = VirtualDrive.OpenInStream(file))
            {
                MP3Header mp3hdr   = new MP3Header();
                FileInfo  fileInfo = new FileInfo(file);

                stream.Seek(skipBytes(fileInfo), SeekOrigin.Current);

                bool boolIsMP3 = mp3hdr.Read(stream, sizeProvider(fileInfo));
                if (boolIsMP3)
                {
                    return((int)Math.Round(mp3hdr.LengthInSeconds));
                }
                else
                {
                    return(0);
                }
            }
        }
Exemplo n.º 11
0
        private static void TestTagUtilsRewrite()
        {
            byte[] data     = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
            string fileName = VirtualDrive.VirtualFileName("TestID3TagUtilsRewrite\\t0.mp3");

            Id3FileUtils.SaveFileBinary(fileName, data);

            TagUtils.Rewrite(new FileInfo(fileName), 4, 3, 2, 1);

            Stream s = VirtualDrive.OpenInStream(fileName);

            UnitTest.Test(s.ReadByte() == 0);
            UnitTest.Test(s.ReadByte() == 0);
            UnitTest.Test(s.ReadByte() == 4);
            UnitTest.Test(s.ReadByte() == 5);
            UnitTest.Test(s.ReadByte() == 6);
            UnitTest.Test(s.ReadByte() == 7);
            UnitTest.Test(s.ReadByte() == 8);
            UnitTest.Test(s.ReadByte() == 0);
            UnitTest.Test(s.ReadByte() == -1);
            s.Close();
        }
Exemplo n.º 12
0
 public static Stream OpenInStream(FileInfo file)
 {
     return(VirtualDrive.OpenInStream(file.FullName));
 }
Exemplo n.º 13
0
 public static BinaryReader OpenReader(FileInfo file)
 {
     return(new BinaryReader(
                VirtualDrive.OpenInStream(file.FullName),
                System.Text.Encoding.BigEndianUnicode));
 }