used gpt script
This commit is contained in:
parent
94aeca6c92
commit
787b76192e
1 changed files with 57 additions and 0 deletions
57
modules/steam_workshop/bin/workshop_scrape.sh
Executable file
57
modules/steam_workshop/bin/workshop_scrape.sh
Executable file
|
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [[ $# -lt 2 ]]; then
|
||||
echo "Usage: $0 <appid> <query> [page] [limit]" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
appid="$1"
|
||||
query="$2"
|
||||
page="${3:-1}"
|
||||
limit="${4:-0}"
|
||||
|
||||
if ! [[ "$appid" =~ ^[0-9]+$ ]]; then
|
||||
echo "AppID must be numeric." >&2
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if ! [[ "$page" =~ ^[0-9]+$ ]]; then
|
||||
page=1
|
||||
fi
|
||||
|
||||
if ! [[ "$limit" =~ ^[0-9]+$ ]]; then
|
||||
limit=0
|
||||
fi
|
||||
|
||||
user_agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36'
|
||||
|
||||
curl -s --compressed -A "$user_agent" \
|
||||
--get "https://steamcommunity.com/workshop/browse/" \
|
||||
--data-urlencode "appid=${appid}" \
|
||||
--data-urlencode "browsesort=textsearch" \
|
||||
--data-urlencode "section=readytouseitems" \
|
||||
--data-urlencode "searchtext=${query}" \
|
||||
--data-urlencode "p=${page}" \
|
||||
| grep -oE 'sharedfiles/filedetails/\?id=[0-9]+' \
|
||||
| sed -E 's/.*id=//' \
|
||||
| sort -u \
|
||||
| {
|
||||
count=0
|
||||
while IFS= read -r id; do
|
||||
[[ -z "$id" ]] && continue
|
||||
((count++))
|
||||
if [[ "$limit" -gt 0 && "$count" -gt "$limit" ]]; then
|
||||
break
|
||||
fi
|
||||
title=$(curl -s --compressed -A "$user_agent" "https://steamcommunity.com/sharedfiles/filedetails/?id=${id}" \
|
||||
| tr '\n' ' ' \
|
||||
| sed -nE 's/.*<title>([^<]+)<\/title>.*/\1/p' \
|
||||
| sed -E 's/ - Steam (Community|Workshop).*//' \
|
||||
| sed -E 's/^\s+|\s+$//g')
|
||||
if [[ -z "$title" ]]; then
|
||||
title="(title parse failed)"
|
||||
fi
|
||||
printf '%s\t%s\n' "$id" "$title"
|
||||
done
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue