Exemplo n.º 1
0
        private async Task <AudioMetaData> GetFromLastFmIntegration(AudioMetaData metaData)
        {
            var artistName  = metaData.Artist;
            var ReleaseName = metaData.Release;

            if (DoParseFromLastFM)
            {
                if (string.IsNullOrEmpty(artistName) && string.IsNullOrEmpty(ReleaseName))
                {
                    return(metaData);
                }
                var lastFmReleaseTracks = await LastFmHelper.TracksForRelease(artistName, ReleaseName);

                if (lastFmReleaseTracks != null)
                {
                    var lastFmReleaseTrack = lastFmReleaseTracks.FirstOrDefault(x =>
                                                                                x.TrackNumber == metaData.TrackNumber || x.Title.Equals(metaData.Title,
                                                                                                                                        StringComparison.InvariantCultureIgnoreCase));
                    if (lastFmReleaseTrack != null)
                    {
                        return(MergeAudioData(Configuration, metaData, lastFmReleaseTrack));
                    }
                }
            }

            return(metaData);
        }
Exemplo n.º 2
0
 public bool WriteTags(AudioMetaData metaData, FileInfo fileInfo)
 {
     if (Configuration.Processing.DoSaveEditsToTags)
     {
         return(ID3TagsHelper.WriteTags(metaData, fileInfo.FullName));
     }
     return(false);
 }
Exemplo n.º 3
0
        private async Task <AudioMetaData> ParseFromMusicBrainz(AudioMetaData metaData)
        {
            if (this.DoParseFromMusicBrainz)
            {
                var musicBrainzReleaseTracks = await this.MusicBrainzProvider.MusicBrainzReleaseTracks(metaData.Artist, metaData.Release);

                if (musicBrainzReleaseTracks != null)
                {
                    var musicBrainzReleaseTrack = musicBrainzReleaseTracks.FirstOrDefault(x => x.TrackNumber == metaData.TrackNumber || x.Title.Equals(metaData.Title, StringComparison.InvariantCultureIgnoreCase));
                    if (musicBrainzReleaseTrack != null)
                    {
                        return(MergeAudioData(this.Configuration, metaData, musicBrainzReleaseTrack));
                    }
                }
            }
            return(metaData);
        }
Exemplo n.º 4
0
        private static AudioMetaData MergeAudioData(IRoadieSettings settings, AudioMetaData left, AudioMetaData right)
        {
            var result = new AudioMetaData();

            if (left == null)
            {
                return(right);
            }
            if (right == null)
            {
                return(left);
            }
            result.Release = left.Release.Or(right.Release).SafeReplace("_").SafeReplace("~", ",")
                             .CleanString(settings);
            result.ArtistRaw         = left.ArtistRaw.Or(right.ArtistRaw);
            result.TrackArtistRaw    = left.TrackArtistRaw.Or(right.TrackArtistRaw);
            result.Artist            = left.Artist.Or(right.Artist).SafeReplace("_").SafeReplace("~", ",").CleanString(settings);
            result.Title             = left.Title.Or(right.Title).SafeReplace("_").SafeReplace("~", ",").CleanString(settings);
            result.Year              = left.Year.Or(right.Year);
            result.TrackNumber       = left.TrackNumber.Or(right.TrackNumber);
            result.TotalTrackNumbers = left.TotalTrackNumbers.Or(right.TotalTrackNumbers);
            result.Disc              = left.Disc.Or(right.Disc);
            result.Time              = left.Time ?? right.Time;
            result.AudioBitrate      = left.AudioBitrate.Or(right.AudioBitrate);
            result.AudioChannels     = left.AudioChannels.Or(right.AudioChannels);
            result.AudioSampleRate   = left.AudioSampleRate.Or(right.AudioSampleRate);
            if (left.Images != null && right.Images == null)
            {
                result.Images = left.Images;
            }
            else if (left.Images == null && right.Images != null)
            {
                result.Images = right.Images;
            }
            else if (left.Images != null && right.Images != null)
            {
                result.Images = left.Images.Union(right.Images);
            }
            return(result);
        }
Exemplo n.º 5
0
 private AudioMetaData ParseFromFilename(AudioMetaData metaData, FileInfo fileInfo)
 {
     if (this.DoParseFromFileName)
     {
         var filename       = fileInfo.Name.Replace(fileInfo.Extension, "");
         var mdFromFilename = this.FileNameHelper.MetaDataFromFilename(filename);
         if (mdFromFilename.ValidWeight < 32)
         {
             var mdFromFileInfo = FileNameHelper.MetaDataFromFileInfo(fileInfo);
             if (mdFromFileInfo.ValidWeight > mdFromFilename.ValidWeight)
             {
                 mdFromFilename = mdFromFileInfo;
             }
         }
         if ((mdFromFilename.Year ?? 0) < 1)
         {
             mdFromFilename.Year = SafeParser.ToYear(fileInfo.Directory.Name.Substring(0, 4));
         }
         return(MergeAudioData(this.Configuration, metaData, mdFromFilename));
     }
     return(metaData);
 }
Exemplo n.º 6
0
 public bool WriteTags(AudioMetaData metaData, FileInfo fileInfo)
 {
     return(this.ID3TagsHelper.WriteTags(metaData, fileInfo.FullName));
 }