Exemplo n.º 1
0
        void ParseMetadata(string data)
        {
            int tagStart = data.IndexOf("APETAGEX");
            if (tagStart == -1)
            {
                return;
            }
            data = data.Substring(tagStart);
            BinaryReader br = new BinaryReader(new MemoryStream(Encoding.ASCII.GetBytes(data)), Encoding.ASCII);
            br.ReadBytes(8 + 4);

            int tagSize = br.ReadInt32();
            int itemCount = br.ReadInt32();
            ApeFlags flags = new ApeFlags(br);
            ulong reserved = br.ReadUInt64();

            int i = 0;
            while (i < itemCount)
            {
                ApeMetadataItem metadataItem = new ApeMetadataItem(br);
                metadata_.Add(metadataItem);
                i++;
            }
        }
Exemplo n.º 2
0
            public ApeMetadataItem(BinaryReader reader)
            {
                itemValueLength_ = reader.ReadInt32();
                flags_ = new ApeFlags(reader);

                while (reader.PeekChar() != 0)
                {
                    key_ += reader.ReadChar();
                };
                reader.ReadByte();
                if (flags_.IsString)
                {
                    value_ = Encoding.UTF8.GetString(reader.ReadBytes(itemValueLength_));
                }
                else
                {
                    reader.ReadBytes(itemValueLength_);
                }
            }