Fix #777: Added a prune_library management command to remove obsolete metadata

This commit is contained in:
Eliot Berriot 2019-03-27 17:04:10 +01:00
parent 96010917fb
commit 5916a1ba99
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
8 changed files with 388 additions and 0 deletions

View file

@ -568,3 +568,31 @@ def clean_transcoding_cache():
.order_by("id")
)
return candidates.delete()
def get_prunable_tracks(
exclude_favorites=True, exclude_playlists=True, exclude_listenings=True
):
"""
Returns a list of tracks with no associated uploads,
excluding the one that were listened/favorited/included in playlists.
"""
queryset = models.Track.objects.all()
queryset = queryset.filter(uploads__isnull=True)
if exclude_favorites:
queryset = queryset.filter(track_favorites__isnull=True)
if exclude_playlists:
queryset = queryset.filter(playlist_tracks__isnull=True)
if exclude_listenings:
queryset = queryset.filter(listenings__isnull=True)
return queryset
def get_prunable_albums():
return models.Album.objects.filter(tracks__isnull=True)
def get_prunable_artists():
return models.Artist.objects.filter(tracks__isnull=True, albums__isnull=True)