update shebangs and add some music scripts
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user