From b99e56674492cde24483f9415bfd2e66bd0acce7 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Fri, 6 Sep 2024 16:34:56 -0300 Subject: Adds playlist-orphans --- playlist-orphans | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 playlist-orphans (limited to 'playlist-orphans') diff --git a/playlist-orphans b/playlist-orphans new file mode 100755 index 0000000..c66bd93 --- /dev/null +++ b/playlist-orphans @@ -0,0 +1,74 @@ +#!/bin/bash +# +# Check for files not on any playlist. +# +# This script lists music files that aren't on any playlist (useful for +# removing dangling files etc). +# + +# Parameters +BASENAME="`basename $0`" +ITEM="$1" +MEDIA="/var/cache/media/noise" +PLAYLISTS="$MEDIA/playlists" + +# Check orphaned files +function playlist_orphan { + local file="`echo "$*" | sed -e 's|^./||' -e "s|^$MEDIA/||"`" + + # Ignore playlist files + if [ "`basename "$file"`" != "`basename "$file" .m3u`" ]; then + return + fi + + # Check if a file is not in any playlist + if ! grep -q "$file" $PLAYLISTS/*m3u; then + #echo "Orphan: $file" + echo "$file" + #else + # echo "Not orphan: $file" + fi +} + +# Process a path +function playlist_orphans { + local cwd="`pwd`" + + cd $MEDIA + + if [ ! -z "$FILE" ]; then + playlist_orphan $FILE + else + # We're not keeping a list of specific file extensions to search, because + # it would need to be maintained, which we can't do right now. + find $FOLDER -not -type d | while read entry; do + playlist_orphan $entry + done + fi + + cd $cwd +} + +# Basic syntax check +if [ "$ITEM" == "--help" ]; then + echo "Usage: $BASENAME [file|folder]" + + exit 1 +fi + +# Determine items +if [ ! -z "$ITEM" ]; then + if [ -d "$MEDIA/$ITEM" ]; then + FOLDER="$MEDIA/$ITEM" + elif [ -e "$MEDIA/$ITEM" ] || [ -L "$MEDIA/$ITEM" ]; then + FILE="$MEDIA/$ITEM" + else + echo "$BASENAME: error: item not found: $MEDIA/$ITEM" + exit 1 + fi +else + FOLDER="." +fi + +# Dispatch +playlist_orphans -- cgit v1.2.3