update shebangs and add some music scripts

This commit is contained in:
2025-11-05 00:46:29 +01:00
parent 990e0f93c2
commit dded3a9c66
14 changed files with 9500 additions and 40 deletions

View File

@@ -1,15 +1,31 @@
#!/usr/bin/env bash
PLAYLIST="$1"
COUNT="$2"
set -e
SONGS="$(find $HOME/Music -type f)"
SONG_COUNT="$(echo "$SONGS" | wc -l)"
PLAYLIST_DIR="$HOME/Music/Playlists"
function rand_num() {
cat /dev/urandom | tr -dc '0-9' | head -c 10 | sed -e 's/^0*//'
}
function pick_song() {
num=$(( 1 + $RANDOM % $SONG_COUNT ))
echo "$SONGS" | sed "${num}q;d"
playlist="$1"
playlist_path="$PLAYLIST_DIR/$playlist.pls"
if [[ ! -f "$playlist_path" ]]
then
echo "error: playlist $playlist not found"
exit 1
fi
songs="$(cat "$playlist_path" | grep '^file' | sed -e 's|^[^=]*=\.\./||')"
num=$(( 1 + $(rand_num) % $(echo "$songs" | wc -l) ))
song="$(echo "$songs" | sed "${num}q;d")"
echo "$(dirname "$PLAYLIST_DIR")/$song"
}
function get_flags() {
@@ -24,30 +40,6 @@ function get_flags() {
echo $genre
}
function in_playlist() {
flags="$1"
playlist="$2"
playlists="
ALL:(HE|ME|LE)
HE:HE
MHE:(ME|HE)
ME:ME
LME:(LE|ME)
LE:LE
LOFI:LOFI
LE_LOFI:(LE|LOFI)
"
query="$(echo "$playlists" | grep --ignore-case " ${playlist}:" | sed 's/^.*://')"
if [[ "$(echo "$flags" | grep -E --no-ignore-case "$query")" != "" ]]
then
echo true
else
echo false
fi
}
function get_like_level() {
flags="$1"
@@ -55,17 +47,18 @@ function get_like_level() {
if [[ "$level" == "$(echo "$level" | tr -dc '0-3')" ]]
then
echo $level
else
echo 2 # default like level
fi
}
function shuffle() {
playlist="$1"
song="$(pick_song)"
song="$(pick_song "$playlist")"
flags="$(get_flags "$song")"
in_list=$(in_playlist "$flags" "$playlist")
like=$(get_like_level "$flags")
like_min=$(( 1 + $RANDOM % 3 ))
like_min=$(( 1 + $(rand_num) % 3 ))
if [[ "$in_list" == "false" || "$like" -lt "$like_min" ]]
then
@@ -77,5 +70,22 @@ function shuffle() {
fi
}
echo "$(shuffle $PLAYLIST)"
if [[ -z "$PLAYLIST" ]]
then
PLAYLIST=all
fi
# pick_song "$PLAYLIST"
if [[ -z "$COUNT" ]]
then
echo "add one song to que from $PLAYLIST"
echo "$(shuffle $PLAYLIST)"
else
echo "add $COUNT songs to que from $PLAYLIST"
for i in $(seq 1 $COUNT)
do
echo "$(shuffle $PLAYLIST)"
# echo $i
done
fi