parent
d2145d42c4
commit
38cbc2bfae
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Edit the first line with the path to your Beat Saber folder
|
||||||
|
beatsaberroot='/mnt/a/SteamLibrary/steamapps/common/Beat Saber'
|
||||||
|
# Leave this one be
|
||||||
|
customsongpath='Beat Saber_Data/CustomLevels'
|
||||||
|
|
||||||
|
# These characters are not allowed in filenames (per Windows)
|
||||||
|
# and I also removed spaces to make it friendlier to work with
|
||||||
|
# (this is also a cheat to pull the strings from json without quotes)
|
||||||
|
badchars='" ,\\\/\:\*\?<>\|'
|
||||||
|
|
||||||
|
# Folder name = 40 hexadecimal characters
|
||||||
|
# ${#foldername} -eq 40
|
||||||
|
|
||||||
|
# Not a perfect looping function as it'll loop over the permissions separately but it works
|
||||||
|
for line in `ls -l "${beatsaberroot}/${customsongpath}"`; do
|
||||||
|
if [[ ${#line} -eq 40 ]]; then
|
||||||
|
folder="$line"
|
||||||
|
fulldir="${beatsaberroot}/${customsongpath}/${folder}"
|
||||||
|
|
||||||
|
# Some of my info.dat files are one big json string and my logic below dumps
|
||||||
|
# 2.0.0_songName-2.0.0_songName-2.0.0_songName insead of the actual info...
|
||||||
|
infolen=`wc -l "$fulldir/Info.dat" | cut -d' ' -f1`
|
||||||
|
# Set our variables outside the if so they're usable at the end
|
||||||
|
song='';artist='';mapper=''
|
||||||
|
if [[ $infolen -gt 0 ]]; then
|
||||||
|
# For the easy info.dat files just grab their information
|
||||||
|
song=`grep _songName "$fulldir/Info.dat" | cut -d: -f2 | sed "s/[$badchars]//g"`
|
||||||
|
artist=`grep _songAuthorName "$fulldir/Info.dat" | cut -d: -f2 | sed "s/[$badchars]//g"`
|
||||||
|
mapper=`grep _levelAuthorName "$fulldir/Info.dat" | cut -d: -f2 | sed "s/[$badchars]//g"`
|
||||||
|
|
||||||
|
#mv "${beatsaberroot}/${customsongpath}/${folder}" "$song-$artist-$mapper"
|
||||||
|
else
|
||||||
|
#tput setaf 1
|
||||||
|
# -f2 = Song name
|
||||||
|
# -f4 = Artist
|
||||||
|
# -f5 = Mapper
|
||||||
|
song=`cat "$fulldir/info.dat" | cut -d, -f2 | cut -d: -f2 | sed "s/[$badchars]//g"`
|
||||||
|
artist=`cat "$fulldir/info.dat" | cut -d, -f4 | cut -d: -f2 | sed "s/[$badchars]//g"`
|
||||||
|
mapper=`cat "$fulldir/info.dat" | cut -d, -f5 | cut -d: -f2 | sed "s/[$badchars]//g"`
|
||||||
|
fi
|
||||||
|
mv "$fulldir" "${beatsaberroot}/${customsongpath}/$song-$artist-$mapper" 2>/dev/null
|
||||||
|
[ $? -eq 0 ] && tput setaf 2 || tput setaf 1
|
||||||
|
echo "${folder} is really $song-$artist-$mapper"
|
||||||
|
tput sgr0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "\nRed means the folder could not be renamed (destination name already exists?) and green means everything should be good!"
|
Loading…
Reference in new issue