#!/bin/bash # Scrape all 58 scales from minke8.cn # Usage: bash scrape_scales.sh set -e BASE="https://minke8.cn" OUT="/www/Project/digital-psychology/scales_data.json" TMP="/tmp/scales_tmp" mkdir -p "$TMP" echo '[' > "$OUT" first=true count=0 # Full list of scales declare -A CATS=( ["xl1"]="心理测试综合" ["xl10"]="心理测试综合" ["xl11"]="心理测试综合" ["xl2"]="心理测试综合" ["xl4"]="心理测试综合" ["xl7"]="心理测试综合" ["xl12"]="心理测试综合" ["xl14"]="心理测试综合" ["mbti"]="人格测试" ["jxrg"]="人格测试" ["xl3"]="人格测试" ["xl6"]="人格测试" ["xl5"]="人格测试" ["xl16"]="人格测试" ["gd7"]="人格测试" ["yyzcs"]="抑郁症测试" ["yyz"]="抑郁症测试" ["yy9"]="抑郁症测试" ["yy4"]="抑郁症测试" ["yy6"]="抑郁症测试" ["yy7"]="抑郁症测试" ["yy8"]="抑郁症测试" ["yy10"]="抑郁症测试" ["yy11"]="抑郁症测试" ["yy12"]="抑郁症测试" ["yy13"]="抑郁症测试" ["jlz"]="焦虑症测试" ["jl1"]="焦虑症测试" ["jl2"]="焦虑症测试" ["jl3"]="焦虑症测试" ["jl5"]="焦虑症测试" ["jl6"]="焦虑症测试" ["jl8"]="焦虑症测试" ["qp1"]="强迫症测试" ["qp3"]="强迫症测试" ["qp4"]="强迫症测试" ["zk1"]="躁狂症测试" ["zk2"]="躁狂症测试" ["zk3"]="躁狂症测试" ["sx1"]="双向情感障碍" ["sx2"]="双向情感障碍" ["sk3"]="恐惧症测试" ["sk4"]="恐惧症测试" ["sk5"]="恐惧症测试" ["sk6"]="恐惧症测试" ["iq2"]="智商测试" ["iq3"]="智商测试" ["eq1"]="情商测试" ["eq2"]="情商测试" ["sm2"]="其它测试" ["sm1"]="其它测试" ["qt1"]="其它测试" ["gd6"]="其它测试" ["xl13"]="其它测试" ["gd4"]="其它测试" ["gd1"]="其它测试" ["gd2"]="其它测试" ["gd3"]="其它测试" ) declare -A NAMES=( ["xl1"]="症状自评量表(SCL-90)" ["xl10"]="中学生心理健康量表(MSSMHS)" ["xl11"]="小学生心理健康评定量表(MHRSP)" ["xl2"]="明尼苏达多项人格测验(MMPI)" ["xl4"]="艾森克情绪稳定性测验(EES)" ["xl7"]="康奈尔医学指数(CMI)" ["xl12"]="青少年焦虑障碍筛查量表(SCARED)" ["xl14"]="简明精神病评定量表(BPRS)" ["mbti"]="人格测试(MBTI)" ["jxrg"]="九型人格测试" ["xl3"]="艾森克人格问卷(EPQ)" ["xl6"]="卡特尔十六型人格测试(16PF)" ["xl5"]="人格障碍诊断问卷(PDQ4+)" ["xl16"]="大五人格测试(NEO-FFI)" ["gd7"]="霍兰德职业兴趣测试(SDS)" ["yyzcs"]="抑郁自评量表(SDS)" ["yyz"]="贝克抑郁量表(BDI-II)" ["yy9"]="中学生抑郁自评量表" ["yy4"]="流调用抑郁量表(CES-D)" ["yy6"]="抑郁症筛查量表(PHQ-9)" ["yy7"]="儿童青少年抑郁量表(CDI)" ["yy8"]="儿童抑郁障碍自评量表(DSRSC)" ["yy10"]="老年抑郁量表(GDS)" ["yy11"]="爱丁堡产后抑郁量表(EPDS)" ["yy12"]="焦虑抑郁量表(HAD)" ["yy13"]="汉密尔顿抑郁量表(HAMD)" ["jlz"]="贝克焦虑测试量表(BAI)" ["jl1"]="焦虑自评量表(SAS)" ["jl2"]="汉密尔顿焦虑量表(HAMA)" ["jl3"]="状态-特质焦虑问卷(STAI)" ["jl5"]="焦虑症筛查量表(GAD-7)" ["jl6"]="考试焦虑量表(TAS)" ["jl8"]="中学生焦虑自评量表" ["qp1"]="耶鲁布朗强迫标准量表(YBOCS)" ["qp3"]="强迫信念问卷(OBQ-44)" ["qp4"]="强迫量表修订版(OCI-R)" ["zk1"]="贝克-拉范森躁狂量表(BRMS)" ["zk2"]="轻躁狂自评量表(HCL-32)" ["zk3"]="杨氏躁狂评定量表(YMRS)" ["sx1"]="心境障碍问卷(MDQ)" ["sx2"]="双相情感障碍自评量表(BSQ)" ["sk3"]="交往焦虑量表(IAS)" ["sk4"]="社交回避及苦恼量表(SAD)" ["sk5"]="社交焦虑量表(SIAS)" ["sk6"]="社交恐惧量表(SPS)" ["iq2"]="瑞文智商测试(60题)" ["iq3"]="智力测试(增强版)" ["eq1"]="情商测试量表(BARON)" ["eq2"]="情绪智力量表(EIS)" ["sm2"]="匹兹堡睡眠质量指数(PSQI)" ["sm1"]="阿森斯失眠量表(AIS)" ["qt1"]="躯体化症状自评量表(SSS)" ["gd6"]="创伤后应激障碍量表(PCL-C)" ["xl13"]="防御方式自评量表(DSQ)" ["gd4"]="家庭环境量表(FES)" ["gd1"]="婚姻质量问卷(ENRICH)" ["gd2"]="爱情态度测试(LAS)" ["gd3"]="心理压力测试(PSTR)" ) for slug in "${!NAMES[@]}"; do name="${NAMES[$slug]}" cat="${CATS[$slug]}" url="${BASE}/${slug}.html" echo ">> [$slug] $name ($cat)" # First question to learn count resp0=$(curl -sL -X POST "$url" -d 'action=process&index=0' 2>/dev/null) qcount=$(echo "$resp0" | python3 -c "import json,sys; print(json.load(sys.stdin).get('length',0))" 2>/dev/null || echo 0) if [ "$qcount" -eq 0 ] 2>/dev/null; then echo " SKIP (0 questions or error)" continue fi # Build questions+options arrays as JSON qjson='[' ojson='[' for i in $(seq 0 $((qcount-1))); do resp=$(curl -sL -X POST "$url" -d "action=process&index=$i" 2>/dev/null) q=$(echo "$resp" | python3 -c " import json,sys d=json.load(sys.stdin) print(json.dumps(d.get('tm',''), ensure_ascii=False)) " 2>/dev/null) o=$(echo "$resp" | python3 -c " import json,sys d=json.load(sys.stdin) xx=d.get('xx',[]) print(json.dumps(xx, ensure_ascii=False)) " 2>/dev/null) if [ $i -gt 0 ]; then qjson+=',' ojson+=',' fi qjson+="$q" ojson+="$o" if [ $((i % 20)) -eq 19 ]; then echo -n "." fi done qjson+=']' ojson+=']' # Description from HTML (fast, just first 30 lines) desc=$(curl -sL "$url" 2>/dev/null | head -30 | grep -oP '(?<=