mirror of https://github.com/Flinner/dots.git
feat: scrape paul's site
This commit is contained in:
parent
e93258dde1
commit
00e4620c81
|
@ -0,0 +1,48 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
exit_m() {
|
||||
echo "$1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# curl with cache! (in "/tmp")
|
||||
curl_cache(){
|
||||
local cache_path=`echo $1 | sed 's|/|_|g'`
|
||||
local cache_path="/tmp/$cache_path"
|
||||
|
||||
[ -f "$cache_path" ] || curl -s "$1" -o "$cache_path"
|
||||
|
||||
echo "$cache_path"
|
||||
}
|
||||
|
||||
|
||||
domain="https://tutorial.math.lamar.edu/"
|
||||
file=`curl_cache "$1"` # main file, that has all questions
|
||||
q_num=$(( $2 - 1 )) #numbering starts at 1
|
||||
|
||||
# naive method to check for only args!
|
||||
[ -n "$file" ] || exit_m "No Files Given"
|
||||
[ -n "$q_num" ] || exit_m "No Questoin Number Given!"
|
||||
[ ! -n "$3" ] || exit_m "Incorrect number of args :("
|
||||
|
||||
|
||||
# get all practice questions
|
||||
question_text=`cat $file | pup 'body .practice-problems li json{}' |
|
||||
jq ".[${q_num}].text" | tr -d '"'`
|
||||
|
||||
# get all solution *links*
|
||||
solution_path=`cat $file | pup 'body .practice-problems li json{}' |
|
||||
jq -r ".[${q_num}].children[0].href"`
|
||||
solution_url="$domain/$solution_path"
|
||||
|
||||
|
||||
# ==== get solution =========
|
||||
# download if not already downloaded
|
||||
solution_path=`curl_cache "$solution_url"`
|
||||
|
||||
echo "$question_text"
|
||||
echo "\n"
|
||||
cat "$solution_path" | pup 'body .soln-content p text{}'
|
||||
|
||||
|
Loading…
Reference in New Issue