shibao
e77854b6b5
add bashrc ignore xauthority add autounlocking keepass desktop entry add fonts for waybar add alacritty config move scripts location and adjust bashrc use materia theme sway and lockscreen add list packages script add ranger desktop item add mpd config add indicator ring to swaylock remove mpd password add global asdf tool versions add mako config update keys add swaylock theme add suspend to lock config move ssh commands to aliases tweak mpd section in waybar add kanshi config for work update bashrc
69 lines
2.0 KiB
Bash
Executable File
69 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
set -ou pipefail
|
|
|
|
# Generates playlists for all mp3 and flac files in a directory, ignoring itself in the "parent" folder
|
|
|
|
PLAYLIST_FOLDER="/home/default/Music/playlists/mpd" # Playlist folder for mpd
|
|
PREFIX="music/playlists" # relative links to add to playlists, based on mpd virtual file structure
|
|
EXTENSIONS=("mp3" "opus" "flac" "m4a" "mkv" "webm")
|
|
|
|
# Disable nullglob and set pattern matching to fix spaces
|
|
shopt -s nullglob
|
|
SAVEIFS=$IFS
|
|
IFS=$(echo -en "\n\b")
|
|
|
|
cd $PLAYLIST_FOLDER || { echo "Could not cd into PLAYLIST_FOLDER"; exit 1; }
|
|
parent=`basename $PWD`
|
|
|
|
# Delete old generated playlists
|
|
if [[ -f "*.gen.m3u" ]]; then
|
|
rm *.gen.m3u
|
|
fi
|
|
if [[ -f ".trackNames" ]]; then
|
|
rm .trackNames
|
|
fi
|
|
|
|
# For all playlist directories to generate
|
|
for playlistDir in ../*; do
|
|
if [[ -d "$playlistDir" ]] && [[ "$playlistDir" != "../$parent" ]]; then
|
|
# playlist filename needed for mpd
|
|
playlist=`echo "$playlistDir" | sed "s/^\.\.\///g"`
|
|
# escaped version of filename needed for bash
|
|
escaped=`printf '%q\n' "$playlist"`
|
|
|
|
# echo "playlist=$playlist"
|
|
# echo "escaped=$escaped"
|
|
|
|
# touch file
|
|
> "$playlist.gen.m3u"
|
|
|
|
# write all files with newlines
|
|
> .track-names
|
|
|
|
for EXT in ${EXTENSIONS[@]}; do
|
|
# echo `find "../$playlist" -mindepth 1 -type f -name "*.$EXT" -printf x | wc -c`
|
|
if [[ `find "../$playlist" -mindepth 1 -type f -name "*.$EXT" -printf x | wc -c` != 0 ]]; then
|
|
ls -1 ../$escaped/*.$EXT >> .track-names 2> /dev/null
|
|
# echo `ls -1 ../$playlist/*.$EXT >> 2> /dev/null`
|
|
fi
|
|
done
|
|
|
|
# echo `cat .track-names`
|
|
cat .track-names | while IFS="" read -r song || [ -n "$song" ] ; do
|
|
unprefixed=`echo "$song" | sed "s/^\.\.\///g"`
|
|
# echo "$PREFIX/$unprefixed"
|
|
echo "$PREFIX/$unprefixed" >> "$playlist.gen.m3u"
|
|
done < .track-names
|
|
|
|
if [[ -f ".track-names" ]]; then
|
|
rm .track-names
|
|
fi
|
|
fi
|
|
done
|
|
|
|
|
|
# Use mpc to update mpd database
|
|
update-mpd > /dev/null
|
|
restart-music
|
|
IFS=$SAVEIFS
|