Musikverwaltung mit MOC

Kurz zur Erinnerung … ich verwende moc um meiner Musik zu lauschen, lade mir hier und dort öfters mal legale Musik herunter und möchte die dann beim Durchhören entsprechend einsortieren ohne moc zu verlassen.

Dieses Script wird über die moc Konfiguration mit verschiedenen Argumenten aufgerufen und kennt folgende Möglichkeiten:

  • F1 – Verschiebe Datei/Verzeichnis nach Free/Classic
  • F2 – Verschiebe Datei/Verzeichnis nach Free/Electro
  • F3 – Verschiebe Datei/Verzeichnis nach Free/Rest
  • F5 – Verschiebe Datei/Verzeichnis nach Unfree/Classic
  • F6 – Verschiebe Datei/Verzeichnis nach Unfree/Electro
  • F7 – Verschiebe Datei/Verzeichnis nach Unfree/Rest
  • F8 – Datei/Verzeichnis in den Ordner für schlechte Musik verschieben (wird regelmäßig manuell geleert).
  • F9 – Datei/Verzeichnis in konfiguriertes ZIP-Archiv komprimieren (wenn das Archiv existiert, wird es hinzugefügt).
  • F10 – Hilfe

Hier die kleine Hilfe:

Ich habe das Script komplett überarbeitet, übersichtlicher gestaltet und bereinigt.

Dazu gekommen ist: F9, um gewählte Dateien in ein definiertes neu zu erstellendes Zip-Archiv zu packen.

Von dort aus kann ich dann die Musik direkt verschicken :)

Und zur Bestätigung, dass das Archiv erstellt wurde, gibt es einen kleinen Hinweis:

MOC Konfigurationsdatei

Die moc Konfigurationsdatei (~/.moc/config) muss entsprechend so aussehen:

ExecCommand1 = "/home/user/.moc/moc_move.sh %f free Classic"
ExecCommand2 = "/home/user/.moc/moc_move.sh %f free Electro"
ExecCommand3 = "/home/user/.moc/moc_move.sh %f free Rest"

ExecCommand5 = "/home/user/.moc/moc_move.sh %f unfree Classic"
ExecCommand6 = "/home/user/.moc/moc_move.sh %f unfree Electro"
ExecCommand7 = "/home/user/.moc/moc_move.sh %f unfree Rest"
ExecCommand8 = "/home/user/.moc/moc_move.sh %f delete"
ExecCommand9 = "/home/user/.moc/moc_move.sh %f addtoarch"
ExecCommand10 = "/home/user/.moc/moc_move.sh %f help"

Beim letzten Aufruf ist das %f eigentlich unnötig, aber dafuer muss ich das Script wieder etwas ändern; quick and dirty halt :P

Das Script

#!/bin/bash
AUTHOR="Natenom"
EMAIL="natenom"
VERSION="0.1.3"
LASTEDIT="2010-02-01"

# Use it like this:
$0 PATH_TO_FILE WHAT_TO_DO [SUBTARGET]
# SUBTARGET it not necessary.

MUSIC_BASE="/home/neu/Multimedia/Music"
MUSIC_FREE="${MUSIC_BASE}/Music_Free"
MUSIC_UNFREE="${MUSIC_BASE}/Music_Unfree"
M_DST_DELETE="/home/user/stack/todel/badmusic"
M_SENDTOARCH_ARCHIVE="/home/user/Desktop/Music.zip"
NOTIFY_GNOME="notify-send"
#NOTIFY_KDE="kdialog"

#####################################
#### DO NOT EDIT BELOW THIS LINE ####
#####################################

#By default files are being moved
FILEOP="mv"

#PATH_TO_FILE
M_FILE=${1}

#SUBTARGET
# Not necessary for every case.
SUBTARGET=${3}

#WHAT_TO_DO
case ${2} in
 addtoarch)
 #Add the current file to default Music.zip archive.
 #Wir gehen erst ins Verzeichnis rein und nehmen den Dateinamen ohne Pfad,
 # damit am Ende nicht der volle Pfad der Datei im Archiv steht; todo, dafuer gibt es mit Sicherheit eine Option.
 M_SENDTOARCH_FILE=$(basename "${M_FILE}")
 M_SENDTOARCH_PATH=$(dirname "${M_FILE}")
 cd "${M_SENDTOARCH_PATH}" && zip -o "${M_SENDTOARCH_ARCHIVE}" -r "${M_SENDTOARCH_FILE}"
 TITLE="Music On Console - SendToArch"
 kdialog --title "${TITLE}" --passivepopup "Added \"${M_SENDTOARCH_FILE}\" to SendToArch" 5
 exit 0
 ;;
 delete)
 #delete (internally move to badmusic directory)
 DST_FOLD="${M_DST_DELETE}"
 ;;
 free)
 #move to Free Music Directory
 DST_FOLD="${MUSIC_FREE}"
 ;;
 unfree)
 #move to Unfree Music Directory
 DST_FOLD="${MUSIC_UNFREE}"
 ;;
 help)
 TITLE="Music On Console - Moving - Help"
 MESSAGE="<b>F1</b> - Free/Classic | <b>F2</b> - Free/Electro | <b>F3</b> - Free/Rest<br /><br /><b>F5</b> - Unfree/Classic | <b>F6</b> - Unfree/Electro | <b>F7</b> - Unfree/Rest<br /><br /><b>F8</b> - Move to Trash<br /><br /><b>F9</b> - AddToSendArch<br /><b>F10</b> - This Help<br /><br />Version: ${VERSION} | ${LASTEDIT} by ${AUTHOR} - ${EMAIL}"
 [ "$KDE_FULL_SESSION" == true ] && kdialog --title "${TITLE}" --passivepopup "${MESSAGE}" 5 || $NOTIFY_GNOME -i sound -t 5000 "${TITLE}" "${MESSAGE}"
 exit 0
 ;;
esac

DEST="${DST_FOLD}/${SUBTARGET}"
M_FILENAME=$(basename "${M_FILE}")

#Move/Copy the file.
${FILEOP} "${M_FILE}" "${DEST}"
if [ $? == 0 ];
then
 #Exitlevel 0, so file operation was successfull
 if [ ${FILEOP} == "mv" ]; then
 MESSAGE="<b>${M_FILENAME}</b> moved successfully to <b>${2}/${3}</b>"
 else
 MESSAGE="<b>${M_FILENAME}</b> copied successfully to <b>${2}/${3}</b>"
 fi
 TITLE="Music On Console - Moving"
 [ "$KDE_FULL_SESSION" == true ] && kdialog --title "${TITLE}" --passivepopup "${MESSAGE}" 5 || $NOTIFY_GNOME -i sound -t 5000 "${TITLE}" "${MESSAGE}"
else
 TITLE="Music On Console - ERROR"
 MESSAGE="File operation failed - ${M_FILENAME}"
 [ "$KDE_FULL_SESSION" == true ] && kdialog --title "${TITLE}" --passivepopup "${MESSAGE}" 5 || $NOTIFY_GNOME -i sound -t 5000 "${TITLE}" "${MESSAGE}"
fi
#Bye
Zuletzt geändert: 2023-10-28 11:58:12 +0200 CEST: remove import status