]> gitweb.fluxo.info Git - playlister.git/commitdiff
Adds playlist-orphans
authorSilvio Rhatto <rhatto@riseup.net>
Fri, 6 Sep 2024 19:34:56 +0000 (16:34 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Fri, 6 Sep 2024 19:34:56 +0000 (16:34 -0300)
README.md
playlist-orphans [new file with mode: 0755]

index a486f526f924cd2ad22abb440d89aaef50a8b460..797bf99aca6bccc13d2e8bd454d32f2c75dade17 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
-Playlister
-==========
+# Playlister
 
 Playlister is a simple music playlist manager based on git-annex to share audio
 files between devices.
diff --git a/playlist-orphans b/playlist-orphans
new file mode 100755 (executable)
index 0000000..c66bd93
--- /dev/null
@@ -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