예제 #1
0
        public static MediaItem PopulateMetaData(MediaResource R, FileInfo F)
        {
            MediaItem RetVal;
            MediaBuilder.item Item = null;
            DText parser = new DText();
            parser.ATTRMARK = "-";
            parser.MULTMARK = ".";

            switch(F.Extension.ToUpper())
            {
                case ".MP3":
                    Item = ParseMP3_V1(F);
                    if(Item==null)
                    {
                        parser[0] = F.Name;
                        if(parser.DCOUNT()==2)
                        {
                            Item = new MediaBuilder.musicTrack(parser[2,1].Trim());
                            Item.creator = parser[1].Trim();
                            ((MediaBuilder.musicTrack)Item).artist = new PersonWithRole[1]{new PersonWithRole()};
                            ((MediaBuilder.musicTrack)Item).artist[0].Name = Item.creator;
                            ((MediaBuilder.musicTrack)Item).artist[0].Role = null;
                        }
                    }
                    break;
            }

            if(Item!=null)
            {
                RetVal = MediaBuilder.CreateItem(Item);
                RetVal.AddResource(R);
                return(RetVal);
            }
            else
            {
                // Create a Generic Item
                string fname = F.Name;
                int fnameidx = fname.IndexOf(".");
                if(fnameidx!=-1) fname=fname.Substring(0,fnameidx);
                MediaBuilder.item genericItem = new MediaBuilder.item(fname);
                RetVal = MediaBuilder.CreateItem(genericItem);
                RetVal.AddResource(R);
                return(RetVal);
            }
        }
예제 #2
0
        private static MediaBuilder.item ParseMP3_V1(FileInfo f)
        {
            if (f.Exists == false) return null;

            Stream fileData;
            byte[] buffer = new byte[128];
            char[] CharBuffer = new char[128];
            string StrBuffer = "";

            fileData = f.OpenRead();
            if (fileData.Length <= 128)
            {
                fileData.Close();
                return null;
            }

            fileData.Seek(-128,SeekOrigin.End);
            fileData.Read(buffer,0,128);
            fileData.Close();

            for (int id=0;id<128;++id)
            {
                CharBuffer[id] = Convert.ToChar(buffer[id]);
                if (CharBuffer[id]==0) {CharBuffer[id] = ' ';}
            }
            StrBuffer = new String(CharBuffer,0,128);

            if(StrBuffer.Substring(0,3) != "TAG") return null;

            // This has a valid ID3 Tag
            string SongTitle = StrBuffer.Substring(3,30).Trim();
            string AlbumName = StrBuffer.Substring(63,30).Trim();
            string ArtistName = StrBuffer.Substring(33,30).Trim();

            if(SongTitle=="") return(null);

            MediaBuilder.musicTrack RetVal = new MediaBuilder.musicTrack(SongTitle);
            RetVal.album = new string[1]{AlbumName};
            RetVal.artist = new PersonWithRole[1]{new PersonWithRole()};
            RetVal.artist[0].Name = ArtistName;
            RetVal.artist[0].Role = null;
            RetVal.creator = ArtistName;
            return((MediaBuilder.item)RetVal);
        }