-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget_warships.sh
executable file
·38 lines (28 loc) · 1.39 KB
/
get_warships.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
set -eo pipefail
get_page_meta() {
curl -s "https://api.worldofwarships.eu/wows/encyclopedia/ships/?application_id=80aa6f7e1d5df049c79d9141dd0826ae&limit=100" | jq '.meta'
}
get_page() {
curl -s "https://api.worldofwarships.eu/wows/encyclopedia/ships/?application_id=80aa6f7e1d5df049c79d9141dd0826ae&fields=name,nation,ship_id,type,tier,images.small&limit=100&page_no=${1}" | jq '.data | to_entries | map(.value)'
}
max_page="$(get_page_meta | jq '.page_total')"
ships_tmpfile="$(mktemp)"
echo "[]" > "${ships_tmpfile}"
ships_tmpfile2="$(mktemp)"
for p in $(seq 1 "${max_page}"); do
current_page="$(get_page "$p")"
jq -rnc --slurpfile current "${ships_tmpfile}" --argjson new "${current_page}" '$current[] + $new' > "${ships_tmpfile2}"
cp "${ships_tmpfile2}" "${ships_tmpfile}"
done
set -x
# rename ship_id to id
jq -rnc --slurpfile ships "${ships_tmpfile}" '$ships[] | map(. + {id: .ship_id}) | map(del(.ship_id))' > "${ships_tmpfile2}"
cp "${ships_tmpfile2}" "${ships_tmpfile}"
# flatten images.small to image
jq -rnc --slurpfile ships "${ships_tmpfile}" '$ships[] | map(. + {image: .images.small}) | map(del(.images))' > "${ships_tmpfile2}"
cp "${ships_tmpfile2}" "${ships_tmpfile}"
# wrap ship data in object with data property
jq -rnc --slurpfile ships "${ships_tmpfile}" '{"data": $ships[]}' > "${ships_tmpfile2}"
cp "${ships_tmpfile2}" "${ships_tmpfile}"
mv "${ships_tmpfile}" warships.json