public static MusicVideoSignature parseMediaMatch(MusicVideoMatch mvMatch)
        {
            lock (loadingLock) {
                if (signatureBuilders == null)
                {
                    signatureBuilders = new List <ISignatureBuilder>();
//                  signatureBuilders.Add(new HashBuilder());
                    signatureBuilders.Add(new LocalBuilder());
//                  signatureBuilders.Add(new BlurayMetaBuilder());
//                  signatureBuilders.Add(new MetaServicesBuilder());
//                  signatureBuilders.Add(new NfoBuilder());
//                  signatureBuilders.Add(new ImdbBuilder());
                }
            }

            MusicVideoSignature mvSignature = new MusicVideoSignature(mvMatch.LocalMedia);

            foreach (ISignatureBuilder builder in signatureBuilders)
            {
                SignatureBuilderResult result = builder.UpdateSignature(mvSignature);
                // if a builder returns CONCLUSIVE it has updated the signature with
                // what is believed to be accurate data and we can exit the loop
                // Currently only the Hash and Imdb builder can return this status
                if (result == SignatureBuilderResult.CONCLUSIVE)
                {
                    break;
                }
            }

            return(mvSignature);
        }
        public static MusicVideoSignature parseMediaMatch(MusicVideoMatch mvMatch)
        {
            lock (loadingLock) {
              if (signatureBuilders == null) {
                  signatureBuilders = new List<ISignatureBuilder>();
            //                  signatureBuilders.Add(new HashBuilder());
                  signatureBuilders.Add(new LocalBuilder());
            //                  signatureBuilders.Add(new BlurayMetaBuilder());
            //                  signatureBuilders.Add(new MetaServicesBuilder());
            //                  signatureBuilders.Add(new NfoBuilder());
            //                  signatureBuilders.Add(new ImdbBuilder());
              }
              }

              MusicVideoSignature mvSignature = new MusicVideoSignature(mvMatch.LocalMedia);
              foreach (ISignatureBuilder builder in signatureBuilders) {
              SignatureBuilderResult result = builder.UpdateSignature(mvSignature);
              // if a builder returns CONCLUSIVE it has updated the signature with
              // what is believed to be accurate data and we can exit the loop
              // Currently only the Hash and Imdb builder can return this status
              if (result == SignatureBuilderResult.CONCLUSIVE)
                  break;
              }

              return mvSignature;
        }
Exemple #3
0
        /// <summary>
        /// Get the track details
        /// </summary>
        /// <param name="mvSignature"></param>
        /// <returns></returns>
        public List <DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
        {
            List <DBTrackInfo> results = new List <DBTrackInfo>();

            if (mvSignature == null)
            {
                return(results);
            }

            lock (lockList)
            {
                DBTrackInfo mv = getMusicVideoTrack(mvSignature.Artist, mvSignature.Album, mvSignature.Track);
                if (mv != null)
                {
                    if (mv.ArtistInfo.Count == 0)
                    {
                        DBArtistInfo d4 = new DBArtistInfo();
                        d4.Artist = mvSignature.Artist;
                        mv.ArtistInfo.Add(d4);
                    }
                    results.Add(mv);
                }
            }

            return(results);
        }
        public SignatureBuilderResult UpdateSignature(MusicVideoSignature signature)
        {
            if (signature.LocalMedia == null)
                return SignatureBuilderResult.INCONCLUSIVE;

            DirectoryInfo dir = new DirectoryInfo(signature.Path);
            string fullPath = signature.LocalMedia[0].FullPath;
            int fileCount = signature.LocalMedia.Count;
            string source = string.Empty;

            if (Utility.isFolderDedicated(dir, fileCount) && (mvCentralCore.Settings.PreferFolderName || fileCount > 1) && signature.Folder.Length > 1 || signature.LocalMedia[0].IsVideoDisc)
            {

                // Use foldername
                source = signature.Folder;

                // If the foldername is a volume use the media label
                if (Utility.IsDriveRoot(source))
                    source = signature.LocalMedia[0].MediaLabel;

            } else {
                // Use filename
                if (fileCount > 1)
                    source = Utility.GetFileNameWithoutExtensionAndStackMarkers(signature.File);
                else
                    source = Path.GetFileNameWithoutExtension(signature.File);
            }

            // Detect IMDB ID in the source string, and put it in the signature on success
            Match match = Regex.Match(source, @"tt\d{7}", RegexOptions.IgnoreCase);
            if (match.Success) signature.MdId = match.Value;

            // Execute configured string replacements
            foreach (KeyValuePair<string, string> replacement in replacements)
                source = Regex.Replace(source, replacement.Key, replacement.Value);

            // Remove noise characters/words
            // todo: combine this into replacements when there's a configurable setting for the user
            source = removeNoise(source);

            // Detect year in a title string
            int year;
            signature.Title = extractYearFromTitle(source, out year);
            signature.Year = year;

            return SignatureBuilderResult.INCONCLUSIVE;
        }
 public List<DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
 {
     throw new NotImplementedException();
 }
Exemple #6
0
        /// <summary>
        /// This will try and get the track and album data. Will first find artist and then check all albums for a matching track
        /// </summary>
        /// <param name="mvSignature"></param>
        /// <returns></returns>
        public List <DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
        {
            List <DBTrackInfo> results = new List <DBTrackInfo>();

            return(results);
        }
Exemple #7
0
 public List <DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
 {
     throw new NotImplementedException();
 }
 /// <summary>
 /// This will try and get the track and album data. Will first find artist and then check all albums for a matching track
 /// </summary>
 /// <param name="mvSignature"></param>
 /// <returns></returns>
 public List<DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
 {
     List<DBTrackInfo> results = new List<DBTrackInfo>();
       return results;
 }
        /// <summary>
        /// Based on the calculated signature retrive data from providers
        /// </summary>
        /// <param name="mvSignature"></param>
        /// <returns></returns>
        public List<DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
        {
            List<DBSourceInfo> trackSources;
              lock (trackDetailSources) trackSources = new List<DBSourceInfo>(trackDetailSources);

              List<DBSourceInfo> artistSources;
              lock (artistDetailSources) artistSources = new List<DBSourceInfo>(artistDetailSources);

              // Try each datasource (ordered by their priority) to get results
              List<DBTrackInfo> results = new List<DBTrackInfo>();
              foreach (DBSourceInfo currSource in trackSources)
              {
            if (currSource.IsDisabled(DataType.TRACKDETAIL))
              continue;

            // if we have reached the minimum number of possible matches required, we are done
            if (results.Count >= mvCentralCore.Settings.MinimumMatches && mvCentralCore.Settings.MinimumMatches != 0)
            {
              logger.Debug("We have reached the minimum number of possible matches required, we are done.");
              break;
            }

            // search with the current provider
            List<DBTrackInfo> newResults = currSource.Provider.GetTrackDetail(mvSignature);

            // tag the results with the current source
            foreach (DBTrackInfo currMusicVideo in newResults)
            {
              currMusicVideo.PrimarySource = currSource;

              // ****************** Additional Artist Info Processing ******************
              // Check and update Artist details from additional providers
              DBArtistInfo artInfo = new DBArtistInfo();
              artInfo = currMusicVideo.ArtistInfo[0];

              foreach (DBSourceInfo artistExtraInfo in artistDetailSources)
              {
            if (artistExtraInfo != currSource)
            {
              logger.Debug("Searching for additional Artist infomation from Provider: " + artistExtraInfo.Provider.Name);
              artInfo = artistExtraInfo.Provider.GetArtistDetail(currMusicVideo).ArtistInfo[0];
            }
              }
              artInfo.DisallowBackgroundUpdate = true;
              currMusicVideo.ArtistInfo[0] = artInfo;

              // If album support disabled or no associated album then skip album processing
              if (mvCentralCore.Settings.DisableAlbumSupport || currMusicVideo.AlbumInfo.Count == 0)
            continue;

              // ****************** Additional Album Info Processing ******************
              // Check and update Album details from additional providers
              DBAlbumInfo albumInfo = new DBAlbumInfo();
              albumInfo = currMusicVideo.AlbumInfo[0];

              foreach (DBSourceInfo albumExtraInfo in albumDetailSources)
              {
            if (albumExtraInfo != currSource)
            {
              logger.Debug("Searching for additional Album infomation from Provider: " + albumExtraInfo.Provider.Name);
              albumInfo = albumExtraInfo.Provider.GetAlbumDetail(currMusicVideo).AlbumInfo[0];
            }
              }
              albumInfo.DisallowBackgroundUpdate = true;
              currMusicVideo.AlbumInfo[0] = albumInfo;
            }

            // add results to our total result list and log what we found
            results.AddRange(newResults);
              }
              return results;
        }
 /// <summary>
 /// Get the track details
 /// </summary>
 /// <param name="mvSignature"></param>
 /// <returns></returns>
 public List<DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
 {
     return null;
 }
        /// <summary>
        /// Based on the calculated signature retrive data from providers
        /// </summary>
        /// <param name="mvSignature"></param>
        /// <returns></returns>
        public List <DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
        {
            List <DBSourceInfo> trackSources;

            lock (trackDetailSources) trackSources = new List <DBSourceInfo>(trackDetailSources);

            List <DBSourceInfo> artistSources;

            lock (artistDetailSources) artistSources = new List <DBSourceInfo>(artistDetailSources);


            // Try each datasource (ordered by their priority) to get results
            List <DBTrackInfo> results = new List <DBTrackInfo>();

            foreach (DBSourceInfo currSource in trackSources)
            {
                if (currSource.IsDisabled(DataType.TRACKDETAIL))
                {
                    continue;
                }

                // if we have reached the minimum number of possible matches required, we are done
                if (results.Count >= mvCentralCore.Settings.MinimumMatches && mvCentralCore.Settings.MinimumMatches != 0)
                {
                    logger.Debug("We have reached the minimum number of possible matches required, we are done.");
                    break;
                }

                // search with the current provider
                List <DBTrackInfo> newResults = currSource.Provider.GetTrackDetail(mvSignature);

                // tag the results with the current source
                foreach (DBTrackInfo currMusicVideo in newResults)
                {
                    currMusicVideo.PrimarySource = currSource;

                    // ****************** Additional Artist Info Processing ******************
                    // Check and update Artist details from additional providers
                    DBArtistInfo artInfo = new DBArtistInfo();
                    artInfo = currMusicVideo.ArtistInfo[0];

                    foreach (DBSourceInfo artistExtraInfo in artistDetailSources)
                    {
                        if (artistExtraInfo != currSource)
                        {
                            logger.Debug("Searching for additional Artist infomation from Provider: " + artistExtraInfo.Provider.Name);
                            artInfo = artistExtraInfo.Provider.GetArtistDetail(currMusicVideo).ArtistInfo[0];
                        }
                    }
                    artInfo.DisallowBackgroundUpdate = true;
                    currMusicVideo.ArtistInfo[0]     = artInfo;

                    // If album support disabled or no associated album then skip album processing
                    if (mvCentralCore.Settings.DisableAlbumSupport || currMusicVideo.AlbumInfo.Count == 0)
                    {
                        continue;
                    }

                    // ****************** Additional Album Info Processing ******************
                    // Check and update Album details from additional providers
                    DBAlbumInfo albumInfo = new DBAlbumInfo();
                    albumInfo = currMusicVideo.AlbumInfo[0];

                    foreach (DBSourceInfo albumExtraInfo in albumDetailSources)
                    {
                        if (albumExtraInfo != currSource)
                        {
                            logger.Debug("Searching for additional Album infomation from Provider: " + albumExtraInfo.Provider.Name);
                            albumInfo = albumExtraInfo.Provider.GetAlbumDetail(currMusicVideo).AlbumInfo[0];
                        }
                    }
                    albumInfo.DisallowBackgroundUpdate = true;
                    currMusicVideo.AlbumInfo[0]        = albumInfo;
                }

                // add results to our total result list and log what we found
                results.AddRange(newResults);
            }
            return(results);
        }
Exemple #12
0
        public List <DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
        {
            // Switch off album support
            if (mvCentralCore.Settings.DisableAlbumSupport)
            {
                mvSignature.Album = null;
            }

            List <DBTrackInfo> results = new List <DBTrackInfo>();

            if (mvSignature == null)
            {
                return(results);
            }

            logger.Debug("In Method: GetTrackDetail(MusicVideoSignature mvSignature)");
            logger.Debug("*** Artist: " + mvSignature.Artist + " - " + mvSignature.ArtistMdId);
            logger.Debug("*** Album: " + mvSignature.Album + " - " + mvSignature.AlbumMdId);
            logger.Debug("*** Other: " + mvSignature.Title + " - " + mvSignature.MdId);
            lock (lockObj)
            {
                DBTrackInfo mvTrackData = null;
                // Artist/Album handling, if the track and artist dont match and the track contains the artist name this would indicate the that track is in the format /<artist>/<album>/<atrist - track>.<ext>
                // This will throw out the parseing so remove the artist name from the track.
                // This is not the best fix, need to add code so I know whch expression produced the result or better still have a ignore folder structure when pasring option.
                if (mvSignature.Track != null && mvSignature.Artist != null)
                {
                    if ((mvSignature.Track.ToLower().Trim() != mvSignature.Artist.ToLower().Trim()) && mvSignature.Track.ToLower().Contains(mvSignature.Artist.ToLower().Trim()))
                    {
                        mvTrackData = getMusicVideoTrack(mvSignature.Artist, Regex.Replace(mvSignature.Track, mvSignature.Artist, string.Empty, RegexOptions.IgnoreCase));
                    }
                    else
                    {
                        mvTrackData = getMusicVideoTrack(mvSignature.Artist, mvSignature.Track);
                    }
                }
                else
                {
                    mvTrackData = getMusicVideoTrack(mvSignature.Artist, mvSignature.Track);
                }

                if (mvTrackData != null)
                {
                    if (mvTrackData.ArtistInfo.Count == 0)
                    {
                        DBArtistInfo artistInfo = new DBArtistInfo();
                        artistInfo.Artist = mvSignature.Artist;
                        mvTrackData.ArtistInfo.Add(artistInfo);
                    }

                    if (mvSignature.Album != null && mvSignature.Artist != null)
                    {
                        if (!mvCentralCore.Settings.UseMDAlbum)
                        {
                            DBAlbumInfo albumInfo = new DBAlbumInfo();
                            albumInfo.Album = mvSignature.Album;
                            setMusicVideoAlbum(ref albumInfo, mvSignature.Artist, mvSignature.Album, null);
                            mvTrackData.AlbumInfo.Clear();
                            mvTrackData.AlbumInfo.Add(albumInfo);
                        }
                    }
                    else if (mvTrackData.AlbumInfo.Count > 0 && mvCentralCore.Settings.SetAlbumFromTrackData)
                    {
                        logger.Debug("There are {0} Albums found for Artist: {1} / {2}", mvTrackData.AlbumInfo.Count.ToString(), mvSignature.Artist, mvSignature.Title);
                        DBAlbumInfo albumInfo = new DBAlbumInfo();
                        albumInfo.Album = mvTrackData.AlbumInfo[0].Album;
                        setMusicVideoAlbum(ref albumInfo, mvSignature.Artist, mvTrackData.AlbumInfo[0].Album, null);
                        mvTrackData.AlbumInfo.Clear();
                        mvTrackData.ArtistInfo[0].Artist = mvSignature.Artist;
                        mvTrackData.AlbumInfo.Add(albumInfo);
                    }
                    else
                    {
                        mvTrackData.AlbumInfo.Clear();
                    }

                    results.Add(mvTrackData);
                }
            }
            return(results);
        }
Exemple #13
0
 /// <summary>
 /// Get the track details
 /// </summary>
 /// <param name="mvSignature"></param>
 /// <returns></returns>
 public List <DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
 {
     return(null);
 }
    /// <summary>
    /// Get the track details
    /// </summary>
    /// <param name="mvSignature"></param>
    /// <returns></returns>
    public List<DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
    {
      logger.Debug("In Method: GetTrackDetail(MusicVideoSignature mvSignature)");
      List<DBTrackInfo> results = new List<DBTrackInfo>();
      if (mvSignature == null)
        return results;  

      lock (lockList)
      {
        DBTrackInfo mv = getMusicVideoTrack(mvSignature.Artist, mvSignature.Album, mvSignature.Track);
        if (mv != null)
        {
          if (mv.ArtistInfo.Count == 0)
          {
            DBArtistInfo d4 = new DBArtistInfo();
            d4.Artist = mvSignature.Artist;
            mv.ArtistInfo.Add(d4);
          }
          results.Add(mv);
        }
      }
      return results;
    }
        public List<DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature)
        {
            // Switch off album support
              if (mvCentralCore.Settings.DisableAlbumSupport)
            mvSignature.Album = null;

              List<DBTrackInfo> results = new List<DBTrackInfo>();
              if (mvSignature == null)
            return results;

              logger.Debug("In Method: GetTrackDetail(MusicVideoSignature mvSignature)");
              logger.Debug("*** Artist: " + mvSignature.Artist + " - " + mvSignature.ArtistMdId);
              logger.Debug("*** Album: " + mvSignature.Album + " - " + mvSignature.AlbumMdId);
              logger.Debug("*** Other: " + mvSignature.Title + " - " + mvSignature.MdId);
              lock (lockObj)
              {
            DBTrackInfo mvTrackData = null;
            // Artist/Album handling, if the track and artist dont match and the track contains the artist name this would indicate the that track is in the format /<artist>/<album>/<atrist - track>.<ext>
            // This will throw out the parseing so remove the artist name from the track.
            // This is not the best fix, need to add code so I know whch expression produced the result or better still have a ignore folder structure when pasring option.
            if (mvSignature.Track != null && mvSignature.Artist != null)
            {
              if ((mvSignature.Track.ToLower().Trim() != mvSignature.Artist.ToLower().Trim()) && mvSignature.Track.ToLower().Contains(mvSignature.Artist.ToLower().Trim()))
            mvTrackData = getMusicVideoTrack(mvSignature.Artist, Regex.Replace(mvSignature.Track, mvSignature.Artist, string.Empty, RegexOptions.IgnoreCase));
              else
            mvTrackData = getMusicVideoTrack(mvSignature.Artist, mvSignature.Track);
            }
            else
              mvTrackData = getMusicVideoTrack(mvSignature.Artist, mvSignature.Track);

            if (mvTrackData != null)
            {
              if (mvTrackData.ArtistInfo.Count == 0)
              {
            DBArtistInfo artistInfo = new DBArtistInfo();
            artistInfo.Artist = mvSignature.Artist;
            mvTrackData.ArtistInfo.Add(artistInfo);
              }

              if (mvSignature.Album != null && mvSignature.Artist != null)
              {
            if (!mvCentralCore.Settings.UseMDAlbum)
            {
              DBAlbumInfo albumInfo = new DBAlbumInfo();
              albumInfo.Album = mvSignature.Album;
              setMusicVideoAlbum(ref albumInfo, mvSignature.Artist, mvSignature.Album, null);
              mvTrackData.AlbumInfo.Clear();
              mvTrackData.AlbumInfo.Add(albumInfo);
            }
              }
              else if (mvTrackData.AlbumInfo.Count > 0 && mvCentralCore.Settings.SetAlbumFromTrackData)
              {
            logger.Debug("There are {0} Albums found for Artist: {1} / {2}", mvTrackData.AlbumInfo.Count.ToString(), mvSignature.Artist, mvSignature.Title);
            DBAlbumInfo albumInfo = new DBAlbumInfo();
            albumInfo.Album = mvTrackData.AlbumInfo[0].Album;
            setMusicVideoAlbum(ref albumInfo, mvSignature.Artist, mvTrackData.AlbumInfo[0].Album, null);
            mvTrackData.AlbumInfo.Clear();
            mvTrackData.ArtistInfo[0].Artist = mvSignature.Artist;
            mvTrackData.AlbumInfo.Add(albumInfo);
              }
              else
            mvTrackData.AlbumInfo.Clear();

              results.Add(mvTrackData);
            }
              }
              return results;
        }