Ejemplo n.º 1
0
        private static MediaItem GetMp3Info(FileInfo pFile)
        {
            Id3Read   reader = new Id3Read(pFile.FullName);
            MediaItem item   = new MediaItem();

            if (string.IsNullOrEmpty(reader.Title) && string.IsNullOrEmpty(reader.Artist))
            {
                FilenameInfo fileParser = new FilenameInfo();
                fileParser.Parse(pFile.Name);

                item.Track  = fileParser.Track;
                item.Artist = fileParser.Artist;
                item.Title  = fileParser.Title;
            }
            else
            {
                item.Album  = reader.Album;
                item.Artist = reader.Artist;
                item.Title  = reader.Title;
            }
            item.FileName = pFile.Name;
            item.Path     = pFile.FullName;
            item.Track    = reader.Track;
            item.Genre    = reader.Genre;
            item.Kbps     = reader.BitRate;

            // Clean up item records
            if (string.IsNullOrEmpty(item.Album))
            {
                item.Album = "NoAlbum";
            }
            if (string.IsNullOrEmpty(item.Artist))
            {
                item.Artist = "NoArtist";
            }
            if (string.IsNullOrEmpty(item.Title))
            {
                item.Title = "Untitled";
            }

            //item.Album = reader.A
            return(item);
        }
Ejemplo n.º 2
0
        private FilenameInfo ParseName(string filename)
        {
            FilenameInfo filenameInfo = new FilenameInfo();
            var          nameOnly     = Path.GetFileName(filename);

            // Check if valid filename
            if (string.IsNullOrWhiteSpace(nameOnly))
            {
                return(filenameInfo);
            }

            var match = Regex.Match(nameOnly, @"IMG_(\d{8})_(\d+)(.*)", RegexOptions.IgnoreCase);

            if (match.Success)
            {
                var dateFromNameString = match.Groups[1].Value;
                try
                {
                    //try parse matched expression as date
                    filenameInfo.Date = DateTime.ParseExact(dateFromNameString, "yyyyMMdd", CultureInfo.InvariantCulture);
                }
                catch
                {
                    filenameInfo.Date = null;
                }
            }
            else
            {
                filenameInfo.Date = null;
            }

            // Some sanity checks on date

            if (filenameInfo.Date.Value.Year < 2000 || filenameInfo.Date > DateTime.Now + TimeSpan.FromDays(1))
            {
                filenameInfo.Date = null;
            }

            if (match.Groups.Count > 2)
            {
                var fileNumber = match.Groups[2].Value;
                //try parse matched expression as date
                var result = int.TryParse(fileNumber, NumberStyles.Any, CultureInfo.InvariantCulture,
                                          out filenameInfo.FileNumber);
                if (!result)
                {
                    filenameInfo.FileNumber = -1;
                }

                if (match.Groups.Count > 3)
                {
                    var remainder         = match.Groups[3].Value;
                    var followNumbermatch = Regex.Match(remainder, @"^_(\d+).*", RegexOptions.IgnoreCase);
                    if (followNumbermatch.Success)
                    {
                        var followNumber = followNumbermatch.Groups[1].Value;
                        //try parse matched expression as date
                        result = int.TryParse(followNumber, NumberStyles.Any, CultureInfo.InvariantCulture, out filenameInfo.FollowNumber);
                        if (!result)
                        {
                            filenameInfo.FollowNumber = -1;
                        }
                    }
                }
            }
            return(filenameInfo);
        }