Skip to content

Commit a91cb81

Browse files
committed
chore: add new scripts for easily querying the dataset via jq
1 parent 2672c9d commit a91cb81

File tree

9 files changed

+147
-0
lines changed

9 files changed

+147
-0
lines changed

scripts/bash-colors.sh

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env bash
2+
3+
# Source this into scripts to use colored output without having to type the ANSI escape codes every time.
4+
5+
# Reset color
6+
export COL_RESET='\e[0m'
7+
8+
# Regular colors
9+
export FG_BLACK='\e[0;30m'
10+
export FG_RED='\e[0;31m'
11+
export FG_GREEN='\e[0;32m'
12+
export FG_YELLOW='\e[0;33m'
13+
export FG_BLUE='\e[0;34m'
14+
export FG_PURPLE='\e[0;35m'
15+
export FG_CYAN='\e[0;36m'
16+
export FG_GRAY='\e[0;37m'
17+
18+
# Bold colors
19+
export B_BLACK='\e[1;30m'
20+
export B_RED='\e[1;31m'
21+
export B_GREEN='\e[1;32m'
22+
export B_YELLOW='\e[1;33m'
23+
export B_BLUE='\e[1;34m'
24+
export B_PURPLE='\e[1;35m'
25+
export B_CYAN='\e[1;36m'
26+
export B_GRAY='\e[1;37m'
27+
28+
# Italic colors
29+
export I_BLACK='\e[3;30m'
30+
export I_RED='\e[3;31m'
31+
export I_GREEN='\e[3;32m'
32+
export I_YELLOW='\e[3;33m'
33+
export I_BLUE='\e[3;34m'
34+
export I_PURPLE='\e[3;35m'
35+
export I_CYAN='\e[3;36m'
36+
export I_GRAY='\e[3;37m'
37+
38+
# Background colors
39+
export BG_BLACK='\e[40m'
40+
export BG_RED='\e[41m'
41+
export BG_GREEN='\e[42m'
42+
export BG_YELLOW='\e[43m'
43+
export BG_BLUE='\e[44m'
44+
export BG_PURPLE='\e[45m'
45+
export BG_CYAN='\e[46m'
46+
export BG_GRAY='\e[47m'

scripts/jq/card-previewer.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
card_identifier=$1
4+
images_dir=$2
5+
6+
pack_id=$(echo "$card_identifier" | cut -d'@' -f1)
7+
card_id=$(echo "$card_identifier" | cut -d'@' -f2)
8+
9+
bash "$SCRIPTS/fzf-preview.sh" "$images_dir/$pack_id/$card_id.png"

scripts/jq/jq-all-cards.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
3+
packs_file=$(bash scripts/jq/locate-pack-json.sh)
4+
lang_sub_dir=$(dirname "$packs_file")
5+
jq --compact-output --slurp 'add' "$lang_sub_dir"/cards_*.json

scripts/jq/jq-all-packs.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
3+
packs_file=$(bash scripts/jq/locate-pack-json.sh)
4+
lang_sub_dir=$(dirname "$packs_file")
5+
jq --compact-output '.' "$lang_sub_dir/packs.json"

scripts/jq/jq-rarities-per-pack.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env bash
2+
3+
all_cards=$(bash scripts/jq/jq-all-cards.sh)
4+
echo "$all_cards" | jq -r '
5+
[
6+
group_by(.pack_id)[] |
7+
{
8+
pack_id: .[0].pack_id,
9+
rarity_counts: (group_by(.rarity) |
10+
map({
11+
rarity: .[0].rarity,
12+
count: length
13+
})
14+
)
15+
}
16+
]
17+
'

scripts/jq/locate-pack-json.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
3+
# Locate packs.json
4+
packs_file=$(fd packs.json --no-ignore-vcs --type file --max-depth 5 | head -n 1)
5+
if [ ! -f "$packs_file" ]; then
6+
packs_file=$(fd . --no-ignore-vcs --type f --max-depth 5 | fzf)
7+
if [ ! -f "$packs_file" ]; then
8+
echo "no suitable packs file"
9+
exit 1
10+
fi
11+
fi
12+
13+
echo "$packs_file"

scripts/jq/ls-cards-rarities.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env bash
2+
3+
bash scripts/jq/jq-all-cards.sh \
4+
| jq -r '.[].rarity' \
5+
| sort \
6+
| uniq -c \
7+
| sort -n
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env bash
2+
3+
all_cards=$(bash scripts/jq/jq-all-cards.sh)
4+
all_rarities=$(echo "$all_cards" | jq -r '.[].rarity' | sort | uniq -c | sort -n)
5+
rarity_pick=$(echo -e "$all_rarities" | fzf)
6+
rarity=$(echo "$rarity_pick" | awk '{print $2}')
7+
8+
matched=$(echo -e "$all_cards" | jq -r --arg rarity "$rarity" '.[] | select(.rarity == $rarity) | "\(.pack_id)@\(.id)"')
9+
10+
packs_file=$(bash scripts/jq/locate-pack-json.sh)
11+
lang_sub_dir=$(dirname "$packs_file")
12+
images_dir="$lang_sub_dir/images"
13+
14+
echo "$matched" | fzf --preview="scripts/jq/card-previewer.sh {} $images_dir" --height 80%
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/usr/bin/env bash
2+
3+
source "scripts/bash-colors.sh"
4+
5+
bash scripts/jq/jq-rarities-per-pack.sh \
6+
| jq -c 'sort_by(
7+
[
8+
(.rarity_counts[] | select(.rarity=="SecretRare") | .count) // 0,
9+
(.rarity_counts[] | select(.rarity=="TreasureRare") | .count) // 0,
10+
(.rarity_counts[] | select(.rarity=="SuperRare") | .count) // 0,
11+
(.rarity_counts[] | select(.rarity=="Special") | .count) // 0
12+
]
13+
) | reverse[]' | while read -r pack; do
14+
pack_id=$(echo "$pack" | jq -r '.pack_id')
15+
pack_name=$(bash scripts/jq/jq-all-packs.sh \
16+
| jq --arg id "$pack_id" -r '.[] | select(.id == $id) | .raw_title')
17+
18+
secret_rare=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "SecretRare") | .count' || echo 0)
19+
treasure_rare=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "TreasureRare") | .count' || echo 0)
20+
super_rare=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "SuperRare") | .count' || echo 0)
21+
special=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "Special") | .count' || echo 0)
22+
leader=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "Leader") | .count' || echo 0)
23+
rare=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "Rare") | .count' || echo 0)
24+
uncommon=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "Uncommon") | .count' || echo 0)
25+
common=$(echo "$pack" | jq '.rarity_counts[] | select(.rarity == "Common") | .count' || echo 0)
26+
27+
gold_sum="${FG_YELLOW}${secret_rare:-0} 🌟 ${treasure_rare:-0}${COL_RESET}"
28+
purple_sum="${FG_PURPLE}${super_rare:-0}${special:-0}${COL_RESET}"
29+
30+
echo -e "(${FG_RED}$pack_id${COL_RESET}) $gold_sum / $purple_sum ${COL_RESET}${FG_BLUE}$pack_name${COL_RESET}"
31+
done;

0 commit comments

Comments
 (0)