#!/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