protected override async Task OnCompleted() { await base.OnCompleted().ConfigureAwait(false); //We don't need a lock for this so not performing in OnRun(). var names = new HashSet <string>(StringComparer.OrdinalIgnoreCase); names.AddRange(PlaylistTaskBase.UpdateLibraryCache(this.LibraryCache, this.PlaylistItems, null)); names.AddRange(PlaylistTaskBase.UpdatePlaylistCache(this.PlaylistCache, this.PlaylistItems, null)); await this.SignalEmitter.Send(new Signal(this, CommonSignals.MetaDataUpdated, names)).ConfigureAwait(false); }
protected virtual Task Schedule(PlaylistItem playlistItem) { playlistItem.Flags |= PlaylistItemFlags.Export; if (playlistItem.LibraryItem_Id.HasValue) { return(LibraryTaskBase.UpdateLibraryItem( this.Database, playlistItem.LibraryItem_Id.Value, libraryItem => libraryItem.Flags |= LibraryItemFlags.Export )); } return(PlaylistTaskBase.UpdatePlaylistItem(this.Database, playlistItem)); }
protected override async Task OnStarted() { if (this.Visible) { this.Name = "Saving meta data"; this.Position = 0; this.Count = this.PlaylistItems.Count(); } await base.OnStarted().ConfigureAwait(false); //We don't need a lock for this so not waiting for OnRun(). var names = new HashSet <string>(StringComparer.OrdinalIgnoreCase); names.AddRange(PlaylistTaskBase.UpdateLibraryCache(this.LibraryCache, this.PlaylistItems, this.Names)); names.AddRange(PlaylistTaskBase.UpdatePlaylistCache(this.PlaylistCache, this.PlaylistItems, this.Names)); }
protected virtual async Task Deschedule(PlaylistItem playlistItem) { playlistItem.Flags &= ~PlaylistItemFlags.Export; if (playlistItem.LibraryItem_Id.HasValue) { await LibraryTaskBase.UpdateLibraryItem( this.Database, playlistItem.LibraryItem_Id.Value, libraryItem => { libraryItem.ImportDate = DateTimeHelper.ToString(DateTime.UtcNow.AddSeconds(30)); libraryItem.Flags &= ~LibraryItemFlags.Export; } ).ConfigureAwait(false); } await PlaylistTaskBase.UpdatePlaylistItem(this.Database, playlistItem).ConfigureAwait(false); }
public void InitializeDatabase(IDatabaseComponent database, DatabaseInitializeType type) { //IMPORTANT: When editing this function remember to change the checksum. if (!type.HasFlag(DatabaseInitializeType.Playlist)) { return; } var scriptingRuntime = ComponentRegistry.Instance.GetComponent <IScriptingRuntime>(); if (scriptingRuntime == null) { return; } using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel)) { { var set = database.Set <Playlist>(transaction); foreach (var playlist in set) { //TODO: Bad .Wait() PlaylistTaskBase.RemovePlaylistItems(database, playlist.Id, PlaylistItemStatus.None, transaction).Wait(); } set.Clear(); set.Add(new Playlist() { Name = "Default", Type = PlaylistType.None, Enabled = true }); } { var set = database.Set <PlaylistColumn>(transaction); set.Clear(); set.Add(new PlaylistColumn() { Name = "Artist / album", Type = PlaylistColumnType.Script, Sequence = 1, Script = scriptingRuntime.CoreScripts.Artist_Album, Width = PlaylistColumn.WIDTH_LARGE, Enabled = true }); set.Add(new PlaylistColumn() { Name = "Track no", Type = PlaylistColumnType.Script, Sequence = 2, Script = scriptingRuntime.CoreScripts.Track, Enabled = true }); set.Add(new PlaylistColumn() { Name = "Title / track artist", Type = PlaylistColumnType.Script, Sequence = 3, Script = scriptingRuntime.CoreScripts.Title_Performer, Width = PlaylistColumn.WIDTH_LARGE, Enabled = true }); set.Add(new PlaylistColumn() { Name = "Duration", Type = PlaylistColumnType.Tag, Sequence = 4, Tag = CommonProperties.Duration, Format = CommonFormats.TimeSpan, Enabled = true }); set.Add(new PlaylistColumn() { Name = "Codec", Type = PlaylistColumnType.Script, Sequence = 5, Script = scriptingRuntime.CoreScripts.Codec, Enabled = true }); set.Add(new PlaylistColumn() { Name = "BPM", Type = PlaylistColumnType.Tag, Sequence = 6, Tag = CommonMetaData.BeatsPerMinute, Enabled = false }); set.Add(new PlaylistColumn() { Name = "Album gain", Type = PlaylistColumnType.Script, Sequence = 7, Script = scriptingRuntime.CoreScripts.ReplayGainAlbumGain, Enabled = false }); set.Add(new PlaylistColumn() { Name = "Album peak", Type = PlaylistColumnType.Script, Sequence = 8, Script = scriptingRuntime.CoreScripts.ReplayGainAlbumPeak, Enabled = false }); set.Add(new PlaylistColumn() { Name = "Track gain", Type = PlaylistColumnType.Script, Sequence = 9, Script = scriptingRuntime.CoreScripts.ReplayGainTrackGain, Enabled = false }); set.Add(new PlaylistColumn() { Name = "Track peak", Type = PlaylistColumnType.Script, Sequence = 10, Script = scriptingRuntime.CoreScripts.ReplayGainTrackPeak, Enabled = false }); set.Add(new PlaylistColumn() { Name = "Play count", Type = PlaylistColumnType.Script, Sequence = 11, Script = scriptingRuntime.CoreScripts.PlayCount, Enabled = false }); set.Add(new PlaylistColumn() { Name = "Last played", Type = PlaylistColumnType.Script, Sequence = 12, Script = scriptingRuntime.CoreScripts.LastPlayed, Enabled = false }); set.Add(new PlaylistColumn() { Name = "Initial key", Type = PlaylistColumnType.Tag, Sequence = 13, Tag = CommonMetaData.InitialKey, Enabled = false }); } transaction.Commit(); } }