diff --git a/SharedSources/MediaLibraryModel/ArtistModel.swift b/SharedSources/MediaLibraryModel/ArtistModel.swift
index 3b1b905d1f89ef719df36b446f0ab85e52ef8746..cc2df61f63ae2828557c54d86ee0e486e8985881 100644
--- a/SharedSources/MediaLibraryModel/ArtistModel.swift
+++ b/SharedSources/MediaLibraryModel/ArtistModel.swift
@@ -33,6 +33,33 @@ class ArtistModel: AudioCollectionModel {
     func append(_ item: VLCMLArtist) {
         files.append(item)
     }
+
+    private func addNewArtists(_ artists: [VLCMLArtist]) {
+        let newArtists = artists.filter() {
+            for artist in files {
+                if artist.identifier() == $0.identifier() {
+                    return false
+                }
+            }
+            return true
+        }
+
+        for artist in newArtists {
+            if !files.contains(where: { $0.identifier() == artist.identifier() }) {
+                files.append(artist)
+            }
+        }
+    }
+
+    private func filterGeneratedArtists() {
+        for (index, artist) in files.enumerated() {
+            if artist.identifier() == UnknownArtistID || artist.identifier() == VariousArtistID {
+                if artist.tracksCount() == 0 {
+                    files.remove(at: index)
+                }
+            }
+        }
+    }
 }
 
 // MARK: - Sort
@@ -62,9 +89,11 @@ extension ArtistModel: MediaLibraryObserver {
 
     func medialibrary(_ medialibrary: MediaLibraryService,
                       didModifyArtistsWithIds artistsIds: [NSNumber]) {
+
+        let uniqueArtistsIds = Array(Set(artistsIds))
         var artists = [VLCMLArtist]()
 
-        artistsIds.forEach() {
+        uniqueArtistsIds.forEach() {
             guard let safeArtist = medialibrary.medialib.artist(withIdentifier: $0.int64Value)
                 else {
                     return
@@ -73,6 +102,8 @@ extension ArtistModel: MediaLibraryObserver {
         }
 
         files = swapModels(with: artists)
+        addNewArtists(artists)
+        filterGeneratedArtists()
         updateView?()
     }