Added tools to browse the database, and make new times in the acceptable format, created from apr to late may of 2023
This commit is contained in:
parent
e776c27136
commit
d8f5c79ed9
57
convert-time.js
Normal file
57
convert-time.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
const input_time = process.argv[2];
|
||||||
|
|
||||||
|
|
||||||
|
//console.log("input_time")
|
||||||
|
//console.log(input_time)
|
||||||
|
/*function convertToSeconds(time) {
|
||||||
|
var parts = time.split(":");
|
||||||
|
var seconds = 0;
|
||||||
|
for (var i = 0; i < parts.length; i++) {
|
||||||
|
var value = parseFloat(parts[i]);
|
||||||
|
console.log(`Parsing ${i}: ${value}`)
|
||||||
|
if (i === 0) {
|
||||||
|
console.log("as day");
|
||||||
|
seconds += value * 86400;
|
||||||
|
} else if (i === 1) {
|
||||||
|
console.log("as hour");
|
||||||
|
seconds += value * 3600;
|
||||||
|
} else if (i === 2) {
|
||||||
|
console.log("as minutes");
|
||||||
|
seconds += value * 60;
|
||||||
|
} else if (i === 3) {
|
||||||
|
console.log("as seconds");
|
||||||
|
seconds += value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(seconds);
|
||||||
|
return seconds;
|
||||||
|
}*/
|
||||||
|
function convertToSeconds(time) {
|
||||||
|
var parts = time.split(":");
|
||||||
|
var seconds = 0;
|
||||||
|
if(parts.length==1) {
|
||||||
|
var secs = parseFloat(parts[0]);
|
||||||
|
seconds += secs;
|
||||||
|
}
|
||||||
|
else if(parts.length==2) {
|
||||||
|
var minutes = parseFloat(parts[0]);
|
||||||
|
var secs = parseFloat(parts[1]);
|
||||||
|
seconds += minutes * 60 + secs;
|
||||||
|
}
|
||||||
|
else if(parts.length==3) {
|
||||||
|
var hours = parseFloat(parts[0]);
|
||||||
|
var minutes = parseFloat(parts[1]);
|
||||||
|
var secs = parseFloat(parts[2]);
|
||||||
|
seconds += hours * 3600 + minutes * 60 + secs;
|
||||||
|
}
|
||||||
|
else if(parts.length==4) {
|
||||||
|
var days = parseFloat(parts[0]);
|
||||||
|
var hours = parseFloat(parts[1]);
|
||||||
|
var minutes = parseFloat(parts[2]);
|
||||||
|
var secs = parseFloat(parts[3]);
|
||||||
|
seconds += days * 86400 + hours * 3600 + minutes * 60 + secs;
|
||||||
|
}
|
||||||
|
return seconds;
|
||||||
|
}
|
||||||
|
console.log(convertToSeconds(input_time));
|
6
get-curtime.js
Normal file
6
get-curtime.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
var currentTime = Date.now() / 1000;
|
||||||
|
console.log(currentTime);
|
||||||
|
// to reverse
|
||||||
|
/*var seconds = 1673721347.942;
|
||||||
|
var date = new Date(seconds * 1000);
|
||||||
|
console.log(date.toLocaleDateString()); console.log(date.toLocaleTimeString());*/
|
66
get-time.sh
Executable file
66
get-time.sh
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "usage $0 <MAP_NAME> <SOLDIER/DEMOMAN(s/d)>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check that a map name was provided
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Error: No map name provided"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
WANTED_MAP="$1"
|
||||||
|
WANTED_CLASS="$2"
|
||||||
|
case "$WANTED_CLASS" in
|
||||||
|
s*)
|
||||||
|
WANTED_CLASS="soldier"
|
||||||
|
;;
|
||||||
|
S*)
|
||||||
|
WANTED_CLASS="soldier"
|
||||||
|
;;
|
||||||
|
d*)
|
||||||
|
WANTED_CLASS="demoman"
|
||||||
|
;;
|
||||||
|
D*)
|
||||||
|
WANTED_CLASS="demoman"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Invalid class. Must be either SOLDIER or DEMOMAN"
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
FILE_LOC="personal/completed.$WANTED_CLASS/"
|
||||||
|
files="$(ls "$FILE_LOC/$WANTED_MAP"*.json | sed 's/.json//' | sed 's/.*\///')"
|
||||||
|
count="$(echo "$files" | wc -l)"
|
||||||
|
if [ "$count" -gt 1 ]; then
|
||||||
|
if [ -e "$FILE_LOC/$WANTED_MAP.json" ]; then
|
||||||
|
files="$WANTED_MAP"
|
||||||
|
else
|
||||||
|
if [ "$(echo "$files" | head -l)" ]; then
|
||||||
|
echo "There are too many maps that match your request: \"$WANTED_MAP\""
|
||||||
|
if [ "$count" -lt 5 ]; then
|
||||||
|
echo "The following maps match your request."
|
||||||
|
echo "$files"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the duration for the map
|
||||||
|
duration=$(jq '.duration' $FILE_LOC/$files.json)
|
||||||
|
|
||||||
|
# Convert the duration to a human-readable format
|
||||||
|
human_readable=$(awk -v t=$duration 'BEGIN{
|
||||||
|
h=int(t/3600);
|
||||||
|
t-=h*3600;
|
||||||
|
m=int(t/60);
|
||||||
|
t-=m*60;
|
||||||
|
s=t
|
||||||
|
printf "%dh %dm %ds\n",h,m,s
|
||||||
|
}')
|
||||||
|
|
||||||
|
echo "Run time for $files: $human_readable"
|
42
list-completed-tiers.sh
Executable file
42
list-completed-tiers.sh
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check that a class was provided
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Error: No class provided"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Normalize the class argument to uppercase
|
||||||
|
class=$(echo $1 | tr '[:lower:]' '[:upper:]')
|
||||||
|
|
||||||
|
# Check that the class is either SOLDIER or DEMOMAN
|
||||||
|
case "$class" in
|
||||||
|
s*)
|
||||||
|
class="SOLDIER"
|
||||||
|
;;
|
||||||
|
S*)
|
||||||
|
class="SOLDIER"
|
||||||
|
;;
|
||||||
|
d*)
|
||||||
|
class="DEMOMAN"
|
||||||
|
;;
|
||||||
|
D*)
|
||||||
|
class="DEMOMAN"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Invalid class. Must be either SOLDIER or DEMOMAN"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Get a list of maps
|
||||||
|
maps=$(ls personal/completed.soldier/)
|
||||||
|
|
||||||
|
# Iterate over the list of maps
|
||||||
|
for map in $maps; do
|
||||||
|
# Strip the .json extension from the map name
|
||||||
|
map_name=$(echo $map | sed 's/.json//')
|
||||||
|
|
||||||
|
# Call the list-tier.sh script with the map name and class as arguments
|
||||||
|
./list-tier.sh $map_name $class
|
||||||
|
done
|
2
list-random-midtier.sh
Normal file
2
list-random-midtier.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
sh list-tiers.sh s | grep -E '(T3|T4)' | shuf | head -n 6
|
2
list-random.sh
Normal file
2
list-random.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
sh list-tiers.sh s | grep -vE '(T5|T6|T0|Tnull)' | shuf | head -n6
|
58
list-tier.sh
Executable file
58
list-tier.sh
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "usage list-tier <MAP_NAME> <SOLDIER/DEMOMAN(s/d)>"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -lt 2 ]; then
|
||||||
|
echo "Error: At least two arguments is required"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
WANTED_MAP="$1"
|
||||||
|
WANTED_CLASS="$2"
|
||||||
|
case "$WANTED_CLASS" in
|
||||||
|
s*)
|
||||||
|
WANTED_CLASS="soldier"
|
||||||
|
;;
|
||||||
|
S*)
|
||||||
|
WANTED_CLASS="soldier"
|
||||||
|
;;
|
||||||
|
d*)
|
||||||
|
WANTED_CLASS="demoman"
|
||||||
|
;;
|
||||||
|
D*)
|
||||||
|
WANTED_CLASS="demoman"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Invalid class. Must be either SOLDIER or DEMOMAN"
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
FILE_LOC="database/map_info/"
|
||||||
|
files="$(ls $FILE_LOC/$WANTED_MAP*.json | sed 's/.json//' | sed 's/.*\///')"
|
||||||
|
count="$(echo "$files" | wc -l)"
|
||||||
|
if [ "$count" -gt 1 ]; then
|
||||||
|
if [ -e "$FILE_LOC/$WANTED_MAP.json" ]; then
|
||||||
|
files="$WANTED_MAP"
|
||||||
|
else
|
||||||
|
if [ "$(echo "$files" | head -l)" ]; then
|
||||||
|
echo "There are too many maps that match your request: \"$WANTED_MAP\""
|
||||||
|
if [ "$count" -lt 5 ]; then
|
||||||
|
echo "The following maps match your request."
|
||||||
|
echo "$files"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
JSON_FILEPATH="$FILE_LOC/$files.json"
|
||||||
|
FOUND_MAP_TIER="$(jq .tiers."$WANTED_CLASS" "$JSON_FILEPATH")"
|
||||||
|
FOUND_MAP_NAME="$(jq .name "$JSON_FILEPATH" | tr -d '"')"
|
||||||
|
echo "$FOUND_MAP_NAME: T$FOUND_MAP_TIER"
|
||||||
|
|
||||||
|
|
41
list-tiers.sh
Executable file
41
list-tiers.sh
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "usage list-tiers <SOLDIER/DEMOMAN(s/d)>"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
echo "Error: At least one argument is required"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
WANTED_CLASS="$1"
|
||||||
|
case "$WANTED_CLASS" in
|
||||||
|
s*)
|
||||||
|
WANTED_CLASS="soldier"
|
||||||
|
;;
|
||||||
|
S*)
|
||||||
|
WANTED_CLASS="soldier"
|
||||||
|
;;
|
||||||
|
d*)
|
||||||
|
WANTED_CLASS="demoman"
|
||||||
|
;;
|
||||||
|
D*)
|
||||||
|
WANTED_CLASS="demoman"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown class: $1"
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
for i in database/map_info/*.json; do
|
||||||
|
# Strip the .json extension from the map name
|
||||||
|
map_name=$(echo $i | sed 's/.json//' | sed 's/.*\///')
|
||||||
|
|
||||||
|
# Call the list-tier.sh script with the map name and class as arguments
|
||||||
|
./list-tier.sh $map_name $WANTED_CLASS
|
||||||
|
done
|
||||||
|
|
2
list-uncompleted-random-midtier.sh
Normal file
2
list-uncompleted-random-midtier.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
sh list-uncompleted-tiers.sh s | grep -E '(T3|T4)' | shuf | head
|
2
list-uncompleted-random.sh
Normal file
2
list-uncompleted-random.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
sh list-uncompleted-tiers.sh s | grep -vE '(T4|T5|T6|T0|Tnull)' | shuf | head
|
41
list-uncompleted-tiers.sh
Executable file
41
list-uncompleted-tiers.sh
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check that a class was provided
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Error: No class provided"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Normalize the class argument to uppercase
|
||||||
|
class=$(echo $1 | tr '[:lower:]' '[:upper:]')
|
||||||
|
|
||||||
|
# Check that the class is either SOLDIER or DEMOMAN
|
||||||
|
case "$class" in
|
||||||
|
s*)
|
||||||
|
class="soldier"
|
||||||
|
;;
|
||||||
|
S*)
|
||||||
|
class="soldier"
|
||||||
|
;;
|
||||||
|
d*)
|
||||||
|
class="demoman"
|
||||||
|
;;
|
||||||
|
D*)
|
||||||
|
class="demoman"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Invalid class. Must be either SOLDIER or DEMOMAN"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Get a list of maps
|
||||||
|
completed_maps=$(ls personal/completed.$class/ | sed 's/.json//')
|
||||||
|
|
||||||
|
for i in database/map_info/*.json; do
|
||||||
|
# Strip the .json extension from the map name
|
||||||
|
map_name=$(echo $i | sed 's/.json//' | sed 's/.*\///')
|
||||||
|
|
||||||
|
# Call the list-tier.sh script with the map name and class as arguments
|
||||||
|
[ "$(echo "$map_name" | grep -v "$completed_maps")" == "$mapname" ] || ./list-tier.sh $map_name $class
|
||||||
|
done
|
Loading…
x
Reference in New Issue
Block a user