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