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); }
public bool WriteTags(AudioMetaData metaData, FileInfo fileInfo) { if (Configuration.Processing.DoSaveEditsToTags) { return(ID3TagsHelper.WriteTags(metaData, fileInfo.FullName)); } return(false); }
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); }
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); }
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); }
public bool WriteTags(AudioMetaData metaData, FileInfo fileInfo) { return(this.ID3TagsHelper.WriteTags(metaData, fileInfo.FullName)); }