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); } }
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); }