public async Task MergeFromMetaDataAsync(IFullAlbumDescriptor iad, IMergeStrategy Strategy) { await Task.Run( () => MergeFromMetaData(iad, Strategy)); }
public void MergeFromMetaData(IFullAlbumDescriptor iad, IMergeStrategy Strategy) { if (Strategy.AlbumMetaData != IndividualMergeStategy.Never) { if ((Year == 0) || Strategy.AlbumMetaData == IndividualMergeStategy.Always) Year = iad.Year; if (string.IsNullOrEmpty(Name) || Strategy.AlbumMetaData == IndividualMergeStategy.Always) Name = iad.Name; if ((_Artists.MofifiableCollection.Count == 0) || (Strategy.AlbumMetaData == IndividualMergeStategy.Always)) { _Artists.MofifiableCollection.Clear(); _Artists.MofifiableCollection.AddCollection(this._IT.GetArtistFromName(iad.Artist)); } if ((string.IsNullOrEmpty(Genre)) || (Strategy.AlbumMetaData == IndividualMergeStategy.Always)) Genre = iad.Genre; } if ((Strategy.InjectAlbumImage == IndividualMergeStategy.Always) || ((Strategy.InjectAlbumImage == IndividualMergeStategy.IfDummyValue) && Images.Count == 0)) { int i = 0; if (iad.Images != null) { foreach (IIMageInfo Im in iad.Images) { if (AddImage(AlbumImage.GetFromBuffer(_AM, Im.ImageBuffer), i) != null) i++; } } } if (Strategy.TrackMetaData == IndividualMergeStategy.Never) return; //var OrderedTracksInput = (from r in iad.TrackDescriptors orderby r.Duration.TotalMilliseconds ascending select r).ToList(); //var OrderedTracks = (from r in Tracks orderby r.Duration.TotalMilliseconds ascending select r).ToList(); var OrderedTracksInput = iad.TrackDescriptors.OrderBy(r => r.DiscNumber).ThenBy(r=>r.TrackNumber).ToList(); var OrderedTracks = Tracks.OrderBy(r => r.DiscNumber).ThenBy(r=>r.TrackNumber).ToList(); if (OrderedTracksInput.Count != OrderedTracks.Count) return; int j = 0; foreach (IModifiableTrack INT in OrderedTracks) { ITrackMetaDataDescriptor Tr = OrderedTracksInput[j++]; if ((Strategy.TrackMetaData == IndividualMergeStategy.Always) || (new StringTrackParser(INT.Name, false).IsDummy)) INT.Name = Tr.Name; if ((Strategy.TrackMetaData == IndividualMergeStategy.Always) || string.IsNullOrEmpty(INT.Artist)) INT.Artist = Tr.Artist; if ((Strategy.TrackMetaData == IndividualMergeStategy.Always) || (INT.TrackNumber == 0)) INT.TrackNumber = Tr.TrackNumber; TimeSpan delta = (Tr.Duration - INT.Duration); Trace.WriteLine(delta); } }
public AmbigueousCDInformationArgs(IList<WebMatch<IFullAlbumDescriptor>> iCDInfos, IFullAlbumDescriptor ifad) { CDInfos = iCDInfos; SelectedInfo = null; Continue = false; Default = ifad; }
private void ImportImageFromDescriptor(IFullAlbumDescriptor iad) { if ((iad == null) || (iad.Images==null) || (iad.Images.Count==0)) return; PersistentImages = new List<AlbumImage>(); foreach (IIMageInfo im in iad.Images) { if (im.ImageBuffer.IsOK) { AlbumImage ai = AlbumImage.GetFromBuffer(this, im.ImageBuffer); PersistentImages.Add(ai); ai.Rank = im.ID; } } }
private IFullEditableAlbumDescriptor FromIFullAlbumDescriptor(IFullAlbumDescriptor entry) { IFullEditableAlbumDescriptor res = entry.GetEditable(); if (res.TrackDescriptors.Count == 0) return res; uint dc = res.TrackDescriptors[0].DiscNumber; res.EditableTrackDescriptors.Apply(tr => tr.DiscNumber = dc); return res; }
public IFullAlbumDescriptorWrapper(IFullAlbumDescriptor desc) { _Desc = desc as LoadingAlbumDescriptor; }
internal ICDInfosHelperAdpt(IFullAlbumDescriptor ICI) { _ICI = ICI; }