diff --git a/README.md b/README.md index a54e32e..2b1d12e 100644 --- a/README.md +++ b/README.md @@ -71,24 +71,7 @@ $ ./ai.zsh t ### docker -`@ /did` - ```sh $ docker run -it syui/aios ai $ docker run -it -d syui/aios zsh -c "ai login -p && ai bot" ---- -$ docker ps -1234567 syui/aios - -$ docker stop 1234567 -``` - -`Dockerfile` - -```sh -$ cp -rf ~/.config/ai ./config/ -$ docker build -t syui/aios . -$ docker run -it syui/aios ai bot ---- -$ docker stop `docker ps -a -q` ``` diff --git a/ai.zsh b/ai.zsh index 1a904ed..ac112b3 100755 --- a/ai.zsh +++ b/ai.zsh @@ -7,7 +7,7 @@ case $OSTYPE in alias date="/opt/homebrew/bin/gdate" ;; esac -d=${0:a:h}/scpt +d=${0:a:h}/test source $d/env source $d/refresh.zsh source $d/token.zsh diff --git a/docs/wiki.md b/docs/wiki.md new file mode 100644 index 0000000..ba38a01 --- /dev/null +++ b/docs/wiki.md @@ -0,0 +1 @@ +## diff --git a/scpt/api_card.zsh b/scpt/api_card.zsh new file mode 100755 index 0000000..a710227 --- /dev/null +++ b/scpt/api_card.zsh @@ -0,0 +1,1623 @@ +#!/bin/zsh + +# raid-boss-admin +cfg=$HOME/.config/atr/scpt/card_config.json +cfg_ai=$HOME/.config/atr/scpt/card_config_ai.json +# { +# "raid_admin":"yui.bsky.social", +# "raid_time": "", +# "raid_card": "" +# } + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +# 1=handle, 2=did, 3=opt, 4=sub +fav_com=$HOME/.config/atr/scpt/api_fav.zsh + +function user_data(){ + u=`echo $data|jq -r .username` + id=`echo $data|jq -r .id` + did=`echo $data|jq -r .did` + next=`echo $data|jq -r .next` + aiten=`echo $data|jq -r .aiten` + model_mode=`echo $data|jq -r .model_mode` + model_limit=`echo $data|jq -r .model_limit` + ten_su=`echo $data|jq -r .ten_su` + fav=`echo $data|jq -r .fav` + d=`date +"%Y%m%d"` + updated_at=`echo $data|jq -r .updated_at` + updated_at=`date -d "$updated_at" +"%Y-%m-%d"` + next_at=`date -d "$next -1 day" +"%Y-%m-%d"` + echo "user : $u" + echo "id : $id" + echo "$did" + echo "card : $next_at" + echo "battle : $updated_at" + #echo "boss : $raid_cp" + echo "aiten : $aiten" + echo "ten : $ten_su" +} + +function ascii_moji_a() { +echo " +⠀⠈⠀⠀⠀⠀⠈⠀⠀⠀⠁⠀⣠⠈⠀⠀⠀⠁⠀⠀⠈⠀⠀⠀⠁⠀ +⠈⠀⠀⠂⠁⠀⠀⠄⠀⠠⠀⣰⡯⣷⡀⠀⢀⠀⢀⠠⠀⠀⡀⠄⠀⠀ +⠀⠄⠀⢀⠀⠀⠄⠀⣠⢴⣼⣳⣟⣗⡷⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⢀ +⢀⠀⠀⠀⠀⠀⣠⢾⣽⣻⡺⠷⠳⠯⢯⣗⣯⣟⣦⠀⠀⠐⠀⠀⠄⠀ +⠀⠀⠀⠁⠀⣸⢽⣻⡺⠊⠀⢀⠀⠀⠀⠈⢳⣗⣯⢷⠀⠀⠄⠀⠀⠀ +⠐⠈⠀⠀⠀⣿⢽⣳⠁⡀⠄⠀⠀⠀⠂⠀⠀⣳⢯⣟⡇⠀⠀⠀⠈⠀ +⠀⠀⢀⠀⠈⣯⣟⣾⡀⠀⠀⠀⠐⠀⠀⠄⠀⣺⡽⣞⡇⠀⠀⠁⠀⠀ +⠈⠀⠀⠀⢠⣟⣞⣷⣳⣀⠀⠂⠀⠀⠄⢀⡴⣯⢯⣟⣆⠀⠀⠂⠀⠂ +⠠⠀⠐⢀⣟⣞⣷⣳⣻⣞⡷⡦⣦⢦⡶⡯⡿⣽⢽⢾⢽⣆⠀⠠⠀⠀ +⠀⠀⠀⠚⠉⠉⠁⠉⠑⠳⢯⡿⣽⣽⡽⠽⠛⠉⠉⠉⠙⠙⠀⠀⠀⡀ +⠀⠁⠀⠀⠄⠈⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⢀⠠⠀⠈⠀⠀ +" +} + +function ascii_moji_b() { +echo " +⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠ +⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣷⡀ +⠀⠀⠀⠀⠀⣠⢴⣼⣿⣿⣿⣿⣦⣄⡀ +⠀⠀⠀⣠⢾⣿⣿⡺⠷⠳⠯⢯⣿⣿⣿⣦ +⠀⠀⣸⣿⣿⡺⠊⠀⠀⠀⠀⠀⠈⢳⣿⣿⢷ +⠀⠀⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⡇ +⠀⠀⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⣺⣿⣿⡇ +⠀⢠⣿⣿⣿⣳⣀⠀⠀⠀⠀⠀⠀⡴⣿⣿⣿⣆ +⠀⣿⣿⣿⣿⣿⣿⡷⡦⣦⢦⡶⣿⣿⣿⣿⣿⣿⣆ +⠚⠉⠉⠁⠉⠑⠳⢯⣿⣿⣿⡽⠽⠛⠉⠉⠉⠙⠙" +} + +function study_card() { + card=$1 + cp=$2 + s=normal + skill=study + author=$username + count=1 + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -n "$card_check" ];then + echo "you already have" + exit + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\",\"author\":\"$author\",\"count\":$count}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "count : $count" + echo "author : ${author}" +} + +function field_card() { + card=73 + cp=0 + s=field + skill=field + + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card and .cp == $cp and .skill == \"field\")"` + if [ -z "$card_check" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + echo "skill : ${skill}" + fi + + cp=$1 + + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card and .cp == $cp and .skill == \"field\")"` + if [ -z "$card_check" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + echo "skill : ${skill}" + else + echo "you already have" + exit + fi +} + +function card_add_origin() { + card=$1 + cp=$2 + s=$3 + skill=$3 + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)|select(.skill == \"$skill\")"` + if [ -z "$card_check" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + #ascii_moji_b + echo "---" + echo "[card] ✨" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + echo "skill : ${skill}" + fi +} + +function yui_card_add() { + card=$1 + cp=$2 + s=yui + skill=yui + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -z "$card_check" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + #ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + echo "skill : ${skill}" + fi +} + +function card_add_kyoku() { + cp=$1 + card=90 + s=kyoku + skill=yui + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + card_check_tenkuu=`echo $data_uu|jq -r ".[]|select(.card == 89)"` + if [ -n "$card_check" ];then + echo "you already have [id:90]" + exit + fi + if [ -z "$card_check_tenkuu" ];then + echo "need a card with [id:89]" + exit + fi + if [ -z "$card_check" ] && [ -n "$card_check_tenkuu" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + echo "skill : ${skill}" + fi +} + +function yui_card() { + card=$1 + cp=$2 + s=yui + skill=yui + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -n "$card_check" ];then + echo "you already have" + exit + fi + card_check=`echo $data_uu|jq -r ".[]|select(.card == 36)"` + if [ -z "$card_check" ] && [ $card -eq 47 ];then + echo "no yui card" + exit + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + echo "skill : ${skill}" +} + +function moji_mode_card() { + card=$1 + cp=$2 + skills=$3 + s=$4 + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -n "$card_check" ];then + echo "you already have" + exit + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + echo "skill : ${skill}" + sleep 1 +} + +function egg_card() { + card=39 + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -n "$card_check" ];then + echo "you already have, dragon" + exit + fi + + card=40 + cp=0 + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -n "$card_check" ];then + echo "you already have, egg" + exit + fi + + card=42 + cp=0 + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -n "$card_check" ];then + echo "you already have, nyan" + exit + fi + + #if [ "$book" != true ];then + # echo no book + # exit + #fi + + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"cp\":$cp,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + ascii_moji_b + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" +} + +function user_card(){ + id=$1 + data=`curl -sL "$url/users/$id"` + u=`echo $data|jq -r .username` + data_u=`curl -sL "$url/users/$id/card?itemsPerPage=2000"` + cp_i=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[0].cp"` + cp_ii=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[1].cp"` + cp_iii=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[2].cp"` + data_u_card=`curl -sL "https://api.syui.ai/users/$id/card?itemsPerPage=3000"` + boss_l=`echo $data_u_card|jq ".[]|.cp"|sed 's/^0$/10000/g'|tr "\n" "+"` + boss_cp=$((${boss_l/%?/})) + page_card=`curl -sL card.syui.ai/json/card.json` + owner=`echo $page_card|jq -r ".[]|select(.owner == \"$u\")|.id,.h"|tr -d '\n'` + pay_card=`echo $page_card|jq -r ".[]|select(.ten_skill == true)?|.id"` + pay_card_n=`echo $pay_card|wc -l` + for ((i=1;i<=$pay_card_n;i++)) + do + t=`echo $pay_card|awk "NR==$i"` + ten_card=`echo $data_u_card|jq ".[]|select(.card == $t)"` + if [ -z "$ten_card" ];then + out=${out}${t}, + fi + done + pay_card=`echo $page_card|jq -r ".[]|select(.ten_skill == true)?|.id,.h"|xargs -n2|tr '\n' ,` + if [ "$u" = "null" ];then + echo no id + exit + fi + #echo "user : $u" + echo "[card]" + echo "cp : $cp_i" + echo "cp : $cp_ii" + echo "cp : $cp_iii" + echo "[boss]" + echo "cp : $boss_cp" + if [ -n "$owner" ];then + echo "owner : $owner" + fi + #echo "pay : $pay_card" + echo "pay_no : $out" +} + +function battle_raid(){ + f_raid_user=$HOME/.config/atr/txt/card_raid_user.txt + f_raid_start_cp=$HOME/.config/atr/txt/card_raid_start_cp.txt + f_raid_start_time=$HOME/.config/atr/txt/card_raid_start_time.txt + boss_cp=150000 + + if [ `date +%u` -ge 6 ];then + boss_cp=$(($RANDOM % 150000 + boss_cp)) + else + boss_cp=$(($RANDOM % 50000 + boss_cp)) + fi + + if [ -n "$raid_boss_admin" ] && [ "$raid_run" = "true" ];then + boss_user=`echo $raid_boss_admin | cut -d . -f 1` + boss_user_bsky=$raid_boss_admin + boss_cp=100000 + boss_id=$raid_boss_id + boss_card=23 + boss_card_win=24 + fi + + if [ -n "$raid_boss_admin" ] && [ ! -f $f_raid ] && [ "$raid_run" = "true" ];then + boss_l=`curl -sL "https://api.syui.ai/users/${boss_id}/card?itemsPerPage=2550"|jq ".[]|.cp"|sed 's/^0$/10000/g'|tr "\n" "+"` + boss_cp=$((${boss_l/%?/})) + fi + + if [ -f "$cfg_ai" ];then + boss_user_ai=ai + boss_id=2 + boss_l=`curl -sL "https://api.syui.ai/users/${boss_id}/card?itemsPerPage=2550"|jq ".[]|.cp"|sed 's/^0$/10000/g'|tr "\n" "+"` + boss_cp=$((${boss_l/%?/})) + fi + + if [ ! -f $f_raid ];then + raid_start=`date +"%H:%M"` + echo "$boss_cp" >! $f_raid + echo "$boss_cp" >! $f_raid_start_cp + echo "$raid_start" >! $f_raid_start_time + fi + + if [ -f $f_raid_start_time ];then + raid_start=`cat $f_raid_start_time` + raid_time=`date -d "$raid_start 3 min" +"%H:%M"` + fi + + if [ -f $f_raid_start_cp ];then + raid_start_cp=`cat $f_raid_start_cp` + fi + + if [ `cat $f_raid` -eq 1 ];then + echo "[boss]${boss_user}" + echo "win" + exit + fi + + if [ `cat $f_raid` -eq 0 ];then + echo "[boss]" + echo "shutdown" + exit + fi + + # time attack + rr=`date +"%H:%M"` + if [ -n "$raid_boss_admin" ] && [ "$boss_user" = "$boss_user_time" ] && [ "$raid_run" = "true" ];then + echo "time : $rr ---> $raid_time" + fi + + if [ "$raid_time" = "$rr" ] && [ -n "$raid_boss_admin" ] && [ "$boss_user" = "$boss_user_time" ] && [ "$raid_run" = "true" ];then + echo "boss win!" + cp_b=`cat $f_raid` + echo "cp : $cp_b" + echo 1 >! $f_raid + body=`echo "\n[card]\nid : $boss_card_win\ncp : 0"` + sleep 3 + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$boss_id,\"card\":$boss_card_win,\"status\":\"super\",\"cp\":0,\"password\":\"$pass\"}" -s $url/cards` + tmp=`$HOME/.cargo/bin/atr @ ${boss_user_bsky} -p "$body"` + fi + + if [ $raid_at -ge $d ];then + echo "limit battle" + else + data_u=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` + cp_i=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[0].cp"` + cid=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[0].id"` + skill=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[0].skill"` + ss=$(($RANDOM % 4)) + sss=$(($RANDOM % 3)) + ss_post=$(($RANDOM % 2)) + if [ "$skill" = "critical" ] && [ $ss -eq 1 ];then + cp_i=$((cp_i + cp_i)) + fi + if [ "$skill" = "dragon" ] && [ $sss -eq 1 ];then + cp_i=$((cp_i + cp_i + cp_i)) + fi + if [ "$skill" = "yui" ] && [ $ss -eq 1 ];then + cp_i=$((cp_i + ten_su)) + fi + + if [[ "$cp_i" =~ ^[0-9]+$ ]]; then + else + echo error + exit + fi + cp_b=`cat $f_raid` + cp_bb=`expr $cp_b - $cp_i` + echo "[raid battle]" + if [ -f "$cfg_ai" ];then + echo "@ai\nhttps://card.syui.ai/${boss_user_ai}\nhttps://vrm.syui.ai" + fi + if [ -n "$boss_user_bsky" ];then + echo "@${boss_user_bsky}\nhttps://card.syui.ai/${boss_user}" + fi + if [ "$skill" = "critical" ] && [ $ss -eq 1 ];then + echo "⚡ $cp_i vs $cp_b ---> $cp_bb" + elif [ "$skill" = "post" ] && [ $sss -eq 1 ];then + cp_post=`$HOME/.cargo/bin/atr pro $1 -p` + cp_i=$((cp_i + cp_post)) + cp_bb=$((cp_bb - cp_post)) + echo "🔥 $cp_i vs $cp_b ---> $cp_bb" + elif [ "$skill" = "luck" ] && [ $ss_post -eq 1 ];then + echo "✨ $cp_i vs $cp_b ---> $cp_bb" + elif [ "$skill" = "dragon" ] && [ $sss -eq 1 ];then + echo "🐉 $cp_i vs $cp_b ---> $cp_bb" + elif [ "$skill" = "yui" ] && [ $ss -eq 1 ];then + if [ $cid -eq $fav ];then + echo "🔅 $cp_i vs $cp_b •*¨*•.¸¸✧ $cp_bb" + else + echo "🔅 $cp_i vs $cp_b ---> $cp_bb" + fi + else + echo "$cp_i vs $cp_b ---> $cp_bb" + fi + + if [ `cat $f_raid` -eq 0 ];then + echo shutdown boss + exit + fi + + s=normal + ss=`echo $(($RANDOM % 10))` + if [ $ss -eq 1 ];then + card=`echo $(($RANDOM % 15))` + else + card=0 + fi + + if [ 0 -ge $cp_bb ];then + echo "win!" + echo 0 >! $f_raid + card=`echo $(($RANDOM % 15))` + if [ -n "$raid_boss_admin" ];then + body=`echo "\n[card]\nid : $boss_card\ncp : 0"` + sleep 1 + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$boss_id,\"card\":$boss_card,\"status\":\"super\",\"cp\":0,\"password\":\"$pass\"}" -s $url/cards` + tmp=`$HOME/.cargo/bin/atr @ ${boss_user_bsky} -p "$body"` + raid_end=`date +"%H:%M"` + raid_body=`echo "[raid status]\n${boss_user_bsky}\ncp : $raid_start_cp\nstart/$raid_start\nend/$raid_end\nlast : $raid_last"` + tmp=`$HOME/.cargo/bin/atr p "$raid_body"` + if [ "$raid_run" = "true" ];then + rm $cfg + fi + if [ -f "$cfg_ai" ];then + rm $cfg_ai + fi + else + raid_end=`date +"%H:%M"` + raid_body=`echo "[raid status]\ncp : $raid_start_cp\nstart/$raid_start\nend/$raid_end\nlast : $raid_last"` + tmp=`$HOME/.cargo/bin/atr p "$raid_body"` + fi + else + echo $cp_bb >! $f_raid + echo $uid >> $f_raid_user + fi + + if [ $card -eq 0 ];then + cp=`echo $(($RANDOM % 100 + 50))` + else + cp=`echo $(($RANDOM % 500 + 200))` + s=`echo $(($RANDOM % 2))` + if [ $s -eq 1 ];then + s=super + plus=$(($RANDOM % 500 + 300)) + cp=$((cp + plus)) + fi + fi + + #if [ -n "$raid_boss_admin" ] && [ "$raid_run" = "true" ];then + # data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` + # card_check=`echo $data_uu|jq -r ".[]|select(.card == $raid_sp_card)"` + #fi + + if [ -n "$raid_boss_admin" ] && [ -z "$card_check" ] && [ "$raid_run" = "true" ];then + ss=`echo $(($RANDOM % 10))` + if [ $ss -eq 1 ];then + s=super + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$raid_sp_card,\"status\":\"$s\",\"cp\":0,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "status : ${s}" + fi + + if [ `date +%u` -ge 6 ];then + ran_s=`echo $((RANDOM % 3))` + else + ran_s=`echo $((RANDOM % 30))` + fi + + # happy new year ! + if [ `date +%m%d` -eq 1231 ];then + thd=87 + count=1 + author=ai + skill=yui + card_t=$thd + card_check=`curl -sL "https://api.syui.ai/users/$uid/card?itemsPerPage=3000"|jq -r ".[]|select(.card == $card_t)|select(.skill == \"$skill\")"` + card=$card_t + cp=`echo $(($RANDOM % $(date +%Y) * 2))` + st=yui + + if [ -z "$card_check" ];then + echo "[happy new year] ✨" + echo "id : $card_t" + echo "cp : $cp" + echo "status : $st" + echo "skill : $skill" + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$st\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\",\"author\":\"$author\", \"count\":$count}" -sL $url/cards` + + # model true + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"model_mode\":$(($model_mode + 1)), \"model\":true, \"model_at\":\"$raid_at_n\",\"token\":\"$token\"}" -s $url/users/$uid` + fi + fi + + if [ $ran_s -eq 0 ];then + thd=2 + #thd=`echo $((RANDOM % 11 + 1))` + skill=model + card_t=$thd + card_check=`curl -sL "https://api.syui.ai/users/$uid/card?itemsPerPage=3000"|jq -r ".[]|select(.card == $card_t)|select(.skill == \"$skill\")"` + card=$card_t + cp=`echo $(($RANDOM % 1000 + 400))` + st=yui + + if [ -z "$card_check" ];then + echo "[new] ✨" + echo "id : $card_t" + echo "cp : $cp" + echo "status : $st" + echo "skill : $skill" + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$st\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -sL $url/cards` + + # model true + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"model_mode\":$(($model_mode + 1)), \"model\":true, \"model_at\":\"$raid_at_n\",\"token\":\"$token\"}" -s $url/users/$uid` + fi + + #if [ -n "$card_check" ];then + # card=68 + # card_t=$card + # skill=normal + # st=super + # cp=0 + # echo "[new]" + # echo "id : $card_t" + # echo "cp : $cp" + # echo "status : $st" + # echo "skill : $skill" + # tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$st\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -sL $url/cards` + #fi + + fi + + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + if [ "$s" = "critical" ] || [ "$s" = "luck" ] || [ "$s" = "post" ];then + echo "skill : ${s}" + fi + + if [ "$skill" = "luck" ] && [ $ss_post -eq 1 ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + echo "---" + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + if [ "$s" = "critical" ] || [ "$s" = "luck" ] || [ "$s" = "post" ];then + echo "skill : ${s}" + fi + fi + + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"raid_at\":\"$raid_at_n\",\"token\":\"$token\"}" -s $url/users/$uid` + fi + exit +} + +function battle_server(){ + rr=`date +"%H%M"` + a_team=bluesky + b_team=mastodon + f_server_prezent=$HOME/.config/atr/txt/card_server_prezent.txt + f_server=$HOME/.config/atr/txt/card_server.txt + f_server_user_at=$HOME/.config/atr/txt/card_server_user_at.txt + f_server_user_ap=$HOME/.config/atr/txt/card_server_user_ap.txt + f_server_ap=$HOME/.config/atr/txt/card_server_ap.txt + f_server_at=$HOME/.config/atr/txt/card_server_at.txt + f_server_start_time=$HOME/.config/atr/txt/card_server_start_time.txt + + at_endpoint=`curl -sL https://plc.directory/$did|jq -r ".service.[].serviceEndpoint"|cut -d . -f 1-2|cut -d / -f 3` + at_endpoint_f=$HOME/.config/atr/txt/at_endpoint_${at_endpoint}_.txt + touch $at_endpoint_f + a_team=$at_endpoint + f_server_at=$at_endpoint_f + echo $username >> ${at_endpoint_f}.commit + + if [ `cat $f_server` -eq 1 ];then + echo shutdown server battle + exit + fi + + if [ ! -f $f_server_start_time ];then + server_start=`date +"%H%M"` + echo "$server_start" >! $f_server_start_time + echo 0 >! $f_server_at + echo 0 >! $f_server_ap + fi + + cp_ap=`cat $f_server_ap` + cp_at=`cat $f_server_at` + + if [ -f $f_server_start_time ];then + server_start=`cat $f_server_start_time` + server_time=`date -d "$server_start 30 min" +"%H%M"` + fi + + #echo "time:`date -d "$server_time" +"%H:%M"`" + + if [ $server_at -ge $d ];then + echo "limit battle" + exit + fi + + data_u=`curl -sL "$url/users/$uid/card?itemsPerPage=4000"` + fav_card=`echo $data_u|jq -r ".[]|select(.id == $fav)"` + cid=$fav + + if [ -z "$fav_card" ];then + echo "/fav " + echo https://card.syui.ai/pr + exit + fi + + if [ ! -f $f_server_user_at ];then + echo start >> $f_server_user_at + fi + if [ ! -f $f_server_user_ap ];then + echo start >> $f_server_user_ap + fi + commit_user_at=`cat $f_server_user_at|tail -n 1` + commit_user_ap=`cat $f_server_user_ap|tail -n 1` + echo $username >> $f_server_user_at + + cp_i=`echo $fav_card|jq -r ".cp"` + cid=`echo $fav_card|jq -r ".id"` + cp_ii=$cp_i + card_name=`echo $fav_card|jq -r ".card"` + card_status=`echo $fav_card|jq -r ".status"` + card_skill=`echo $fav_card|jq -r ".skill"` + skill=$card_skill + + if [ "$skill" = "critical" ];then + cp_i=$((cp_i + cp_i)) + fi + if [ "$skill" = "dragon" ];then + cp_i=$((cp_i * 3)) + fi + if [ "$skill" = "yui" ];then + cp_i=$((cp_i + ten_su)) + fi + + if [ ! -f $f_server_prezent ];then + cp_all=$((cp_i + cp_at)) + else + cp_all=$((cp_at - cp_i)) + fi + + if [ "$skill" = "critical" ];then + echo "⚡ $cp_i ---> $cp_at" + elif [ "$skill" = "post" ];then + cp_post=`$HOME/.cargo/bin/atr pro $1 -p` + cp_i=$((cp_i + cp_post)) + cp_all=$((cp_i + cp_at)) + echo "🔥 $cp_i ---> $cp_at" + elif [ "$skill" = "luck" ];then + echo "✨ $cp_i ---> $cp_at" + elif [ "$skill" = "dragon" ];then + echo "🐉 $cp_i ---> $cp_at" + elif [ "$skill" = "yui" ];then + if [ $cid -eq $fav ];then + echo "🔅 $cp_i •*¨*•.¸¸✧ $cp_at" + else + echo "🔅 $cp_i ---> $cp_at" + fi + else + echo "${cp_i} ---> $cp_at" + fi + + echo $cp_all >! $f_server_at + echo + echo "[${a_team}] ${cp_all}" + echo "┗ @${username}" + #echo "┣ @${username}" + #echo "┗ @${commit_user_at}" + # + #mastodon + #echo + #echo "┏━ vs ━┛" + #echo + #echo "[${b_team}] ${cp_ap}" + #echo "┗ @${commit_user_ap}" + #echo "----" + #mastodon + at_end_t=`ls $HOME/.config/atr/txt/at_endpoint_*.txt` + at_end_n=`echo "$at_end_t"|wc -l` + for ((ati=1;ati<=$at_end_n;ati++)) + do + t=`echo "$at_end_t"|awk "NR==$ati"` + tt=`echo $t|cut -d _ -f 3|cut -d . -f 1` + cp_end=`cat $t` + commit_user_end=`cat ${t}.commit|tail -n 1` + if [ "$tt" != "`echo $a_team|cut -d . -f 1`" ];then + echo "${tt} ${cp_end}" + echo "┗ @${commit_user_end}" + fi + done + + #echo "[log]" + #echo "${commit_user_at} --> ${cp_at}/$a_team" + #echo "${cp_ap}/$b_team <-- ${commit_user_ap}" + #echo "${username} --> $cp_all/$a_team" + + if [ $rr -gt $server_time ];then + echo "----" + echo "time up!" + body="${cp_all}/${a_team} vs ${cp_ap}/${b_team}" + tmp=`$HOME/.cargo/bin/atr p "$body"` + echo 1 >! $f_server + rm $f_server_start_time + rm $f_server_at + rm $f_server_ap + mv $f_server_user_at $f_server_user_at.back + mv $f_server_user_ap $f_server_user_ap.back + fi + + echo "----" + + if [ ! -f $f_server_prezent ];then + cp_plus=$(($RANDOM % 30 + 1)) + cp=$((cp_ii + cp_plus)) + body="level up!" + echo "${body} ✧${cp}(+${cp_plus})" + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"cp\":$cp,\"token\":\"$token\"}" $url/cards/$fav` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"server_at\":\"$server_at_n\",\"token\":\"$token\"}" -s $url/users/$uid` + else + aiten_plus=$((aiten + cp_i)) + #echo "aiten : ${aiten}" + echo "aiten +${cp_i}" + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"aiten\":${aiten_plus}, \"server_at\":\"$server_at_n\",\"token\":\"$token\"}" -s $url/users/$uid` + fi + + ran_s=`echo $((RANDOM % 5))` + if [ $ran_s -eq 0 ];then + echo "----" + thd=13 + #thd=`echo $((RANDOM % 11 + 1))` + skill=3d + card_t=$thd + card_check=`curl -sL "https://api.syui.ai/users/$uid/card?itemsPerPage=3000"|jq -r ".[]|select(.card == $card_t)|select(.skill == \"$skill\")"` + card=$card_t + cp=`echo $(($RANDOM % 1000 + 400))` + st=3d + + if [ -z "$card_check" ];then + echo "[new]" + echo "id : $card_t" + echo "cp : $cp" + echo "status : $st" + echo "skill : $skill" + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$st\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -sL $url/cards` + fi + fi + + exit +} + + +function l_cards() { + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"aiten\":$old_aiten,\"token\":\"$token\"}" -s $url/users/$uid` + data_card=`curl -sL "$url/users/$old_id/card?itemsPerPage=2000"` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"delete\":true,\"token\":\"$token\"}" -s $url/users/$old_id` + nn=`echo $data_card|jq length` + nn=$((nn - 1)) + for ((ii=0;ii<=$nn;ii++)) + do + card=`echo $data_card|jq -r ".[$ii].card"` + s=`echo $data_card|jq -r ".[$ii].status"` + cp=`echo $data_card|jq -r ".[$ii].cp"` + skill=`echo $data_card|jq -r ".[$ii].skill"` + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -sL $url/cards` + done +} + +url=https://api.syui.ai +cfg=$HOME/.config/atr/scpt/card_config.json +if [ -f $cfg ];then + raid_run=`cat $cfg|jq -r .raid_run` + raid_boss_admin=`cat $cfg|jq -r .raid_admin` + boss_user_time=`cat $cfg|jq -r .raid_time | cut -d . -f 1` + boss_user=`echo $raid_boss_admin | cut -d . -f 1` + raid_boss_id=`curl -sL "$url/users?itemsPerPage=2000"|jq ".[]|select(.username == \"$boss_user\")"|jq -r .id` + raid_sp_card=`cat $cfg|jq -r .raid_card` +fi + +f_raid=$HOME/.config/atr/txt/card_raid.txt +raid_cp=`cat $f_raid` +d=`date +"%Y%m%d"` +nd=`date +"%Y%m%d" -d '1 day'` +username=`echo $1|cut -d . -f 1` +handle=$1 +url_user_all="$url/users?itemsPerPage=2000" +f=$HOME/.config/atr/scpt/t.webp +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` +if [ -z "$1" ];then + exit +fi +data_tmp=`curl -sL $url_user_all` +data=`echo "$data_tmp"|jq ".[]|select(.username == \"$username\")"` +data_did_check=`echo $data|jq -r .did` +data_did=`echo "$data_tmp"|jq ".[]|select(.did == \"$2\")"` +data_did_check_b=`echo $data_did|jq -r .did` +raid_last=$1 +uid=`echo $data|jq -r ".id"|tail -n 1` + +# user create (did) +if [ -n "$data" ] && [ -z "$data_did" ];then + username=`echo $handle|tr '.' '-'` + data=`curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"$username\",\"password\":\"$pass\",\"did\":\"$2\",\"handle\": true}" -s "$url/users"` + handle_change=true + if [ -n "$data_did" ];then + uid=`echo $data|jq -r ".id"|tail -n 1` + l_cards + fi +fi +next=`echo $data|jq -r .next` +fav=`echo $data|jq -r .fav` +aiten=`echo $data|jq -r .aiten` +ten_su=`echo $data|jq -r .ten_su` +if [ "$next" = "null" ];then + echo null error + exit +fi + +## user create api2(did) +#if [ -n "$data" ] && [ -z "$data_did" ];then +# data=`curl -X PATCH -H "Content-Type: application/json" -d "{\"did\":\"$did\",\"token\":\"$token\",\"room\":0}" -s $url/users/$uid` +#fi +#next=`echo $data|jq -r .next` +#fav=`echo $data|jq -r .fav` +#aiten=`echo $data|jq -r .aiten` +#ten_su=`echo $data|jq -r .ten_su` +#if [ "$next" = "null" ];then +# echo null error +# exit +#fi + +# user create +if [ -z "$data" ];then + if [ -n "$data_did" ];then + old_user=`echo $data_did|jq -r .username` + old_id=`echo $data_did|jq -r .id` + old_aiten=`echo $data_did|jq -r .aiten` + echo https://card.syui.ai/$old_user + fi + data=`curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"$username\",\"password\":\"$pass\",\"did\":\"$2\"}" -s "$url/users"` + echo $data|jq -r .username + if [ -n "$data_did" ];then + uid=`echo $data|jq -r ".id"|tail -n 1` + l_cards + fi +fi +next=`echo $data|jq -r .next` +if [ "$next" = "null" ];then + echo null error + exit +fi + +uid=`echo $data|jq -r ".id"` +delete=`echo $data|jq -r ".delete"` +did=`echo $data|jq -r ".did"` +handle_change=`echo $data|jq -r ".handle"` + +# check did +if [ "$data_did_check" != "$2" ] && [ "$data_did_check_b" = "$2" ] && [ "$handle_change" = "true" ];then + data=$data_did + new_handle=`echo $data|jq -r .username` + echo "handle : $username -> $new_handle" + username=$new_handle +fi + +if [ "$delete" = "true" ];then + echo change account $did + did_all=`curl -sL "$url/users?itemsPerPage=3000"|jq ".[]|select(.did == \"$did\")"|jq -r .id` + did_n=`echo $did_all|wc -l` + for ((i=1;i<=$did_n;i++)) + do + tid=`echo "$did_all"|awk "NR==$i"` + if [ "$uid" = "$tid" ];then + ds=false + else + ds=true + fi + curl -X PATCH -H "Content-Type: application/json" -d "{\"delete\":$ds,\"token\":\"$token\"}" -s $url/users/$tid + done + exit +fi + +# battle +updated_at=`echo $data|jq -r .updated_at` +updated_at_m=`date -d "$updated_at" +"%H%M"` +updated_at_n=`date --iso-8601=seconds` +updated_at=`date -d "$updated_at" +"%Y%m%d"` +raid_at=`echo $data|jq -r .raid_at` +raid_at=`date -d "$raid_at" +"%Y%m%d"` +raid_at_n=`date --iso-8601=seconds` +server_at=`echo $data|jq -r .server_at` +server_at=`date -d "$server_at" +"%Y%m%d"` +server_at_n=`date --iso-8601=seconds` +day_m=`date +"%H%M"` +day_mm=`date +"%H%M" -d "-1 min"` +day_mmm=`date +"%H%M" -d "-2 min"` +f_raid=$HOME/.config/atr/txt/card_raid.txt + +# luck +luck=`echo $data|jq -r .luck` +luck_at=`echo $data|jq -r .luck_at` +luck_at=`date -d "$luck_at" +"%Y%m%d"` +fav_cid=`echo $data|jq -r .fav` + +# member +member=`echo $data|jq -r .member` +manga=`echo $data|jq -r .manga` +book=`echo $data|jq -r .book` +badge=`echo $data|jq -r .badge` + +if [ "$3" = "-raidstart" ] || [ "$3" = "raidstart" ] || [ "$3" = "raid-start" ];then + if [ "$raid_boss_admin" = "$1" ] || [ "syui.ai" = "$1" ];then + rm $f_raid + echo "admin : $raid_boss_admin" + echo "raid start!" + cat $cfg|jq ".|= .+{\"raid_run\":true}" >! $cfg.b + mv $cfg.b $cfg + else + echo no raid admin + fi + exit +fi + +if [ "$3" = "-raidstop" ] || [ "$3" = "raidstop" ] || [ "$3" = "raid-stop" ];then + if [ "syui.ai" = "$1" ];then + echo 0 >! $f_raid + echo "admin : $raid_boss_admin" + echo "raid stop!" + else + echo no raid admin + fi + exit +fi + +if [ "ap" = "`echo $3|cut -d = -f 1`" ];then + echo activitypub mode + b=`echo $3|cut -d = -f 2` + case $b in + true|false) + data=`curl -X PATCH -H "Content-Type: application/json" -d "{\"token\":\"$token\",\"mastodon\":$b}" -sL "$url/users/$uid"` + echo ok + echo $data|jq -r .mastodon + exit + ;; + *) + echo true,false + exit + ;; + esac +fi + +if [ "atp" = "`echo $3|cut -d = -f 1`" ];then + echo atproto mode + b=`echo $3|cut -d = -f 2` + case $b in + true|false) + data=`curl -X PATCH -H "Content-Type: application/json" -d "{\"token\":\"$token\",\"bsky\":$b}" -sL "$url/users/$uid"` + echo ok + echo $data|jq -r .bsky + exit + ;; + *) + echo true,false + exit + ;; + esac +fi + +if [ "server_battle_mode" = "$3" ];then + f_server_prezent=$HOME/.config/atr/txt/card_server_prezent.txt + if [ "syui.ai" != "$1" ];then + no admin + exit + fi + echo "aiten reduction mode : " + if [ -f $f_server_prezent ];then + echo "[disable]" + rm $f_server_prezent + else + echo "[enable]" + touch $f_server_prezent + fi + exit +fi + +if [ "admin" = "`echo $3|cut -d = -f 1`" ];then + if [ "`echo $3|cut -d = -f 1`" = "ai" ] && [ "syui.ai" = "$1" ];then + touch $cfg_ai + registration boss + exit + fi + + if [ "syui.ai" = "$1" ] || [ "ai" = "$1" ];then + echo " + { + \"raid_admin\":\"`echo $3|cut -d = -f 2`\", + \"raid_time\": null, + \"raid_card\": 23 + }" | jq . >! $cfg + cat $cfg + echo please : /card raid-start + else + echo no admin + fi + exit +fi + +if [ "room" = "`echo $3|cut -d = -f 1`" ];then + room=`echo $3|cut -d = -f 2` + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=3000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card >= 1 and .card <= 14).card"|sort|uniq|wc -l` + + if [ $room -ge 123 ] && [ $room -le 123 ];then + if [ $card_check -ne 14 ];then + echo "card 1-14 key is required" + exit + fi + fi + + if { [ $room -ge 123 ] && [ $room -le 123 ] && [ $card_check -eq 14 ] } || [ $room -eq 0 ] || { [ $room -ge 1 ] && [ $room -le 3 ] } || [ $room -eq 124 ]; then + if [ $room -ge 123 ] && [ $room -le 123 ];then + echo "welcome to secret room !" + else + echo "welcome to room" + fi + + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"room\": $room,\"token\":\"$token\"}" -s $url/users/$uid` + + if [ $room -ge 123 ] && [ $room -le 123 ];then + card=65 + cp=0 + s=super + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + if [ -n "$card_check" ];then + echo "you already have" + else + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + fi + fi + + exit + + fi +fi + +if [ "$3" = "-raid" ] || [ "$3" = "-r" ] || [ "$3" = "r" ];then + battle_raid $1 $2 +fi + +if [ "$3" = "-server" ] || [ "$3" = "-s" ] || [ "$3" = "s" ] || [ "$3" = "server" ];then + battle_server $1 $2 +fi + +if [ "$3" = "-u" ] || [ "$3" = "u" ];then + user_data + echo "---" + user_card $uid + exit +fi + +if [[ "$3" =~ ^[0-9]+$ ]];then + user_card $3 + exit +fi + +if [ "$3" = "-a" ] || [ "$3" = "a" ];then + ascii_moji_a + exit +fi + +if [ "$3" = "-aa" ] || [ "$3" = "aa" ];then + ascii_moji_b + exit +fi + +if [ "$3" = "yui" ] || [ "$3" = "-yui" ];then + cp=$(($RANDOM % 2000 + 500)) + yui_card 47 $cp + exit +fi + +if [ "$3" = "kyoku" ] || [ "$3" = "-kyoku" ];then + cp=$(($RANDOM % 4000 + 1500)) + card_add_kyoku $cp + exit +fi + +if [ "$3" = "chou" ] || [ "$3" = "-chou" ];then + cp=$(($RANDOM % 1500 + 500)) + yui_card 60 $cp + exit +fi + +if [ "$3" = "study" ] || [ "$3" = "-study" ];then + cp=0 + if [ `echo $(($RANDOM % 2))` -eq 1 ];then + study_card 61 $cp + else + study_card 62 $cp + fi + exit +fi + +if [ "$3" = "-egg" ] || [ "$3" = "egg" ];then + egg_card + exit +fi + +if [ "$3" = "moji" ] || [ "$3" = "-moji" ];then + echo "not open" + exit + card=27 + plus=$(($RANDOM % 1000 + 400)) + cp=$((cp + plus)) + + skill=$(($RANDOM % 2)) + if [ $skill -eq 1 ];then + skill=critical + plus=$(($RANDOM % 400)) + cp=$((cp + plus)) + else + skill=normal + fi + + skill=$(($RANDOM % 10)) + if [ $skill -eq 1 ];then + skill=post + plus=$(($RANDOM % 400)) + cp=$((cp + plus)) + else + skill=normal + fi + + s=super + moji_mode_card $card $cp $skill $s + + exit +fi + +if [ "$3" = "bingo" ] || [ "$3" = "-bingo" ];then + card=35 + bingo=`curl -sL https://bingo.b35.jp/bonus.csv` + bingo_data=`echo $bingo|grep $1|tail -n 1` + bingo_d=`echo $bingo_data|cut -d , -f 1` + bingo_w=`echo $bingo_data|cut -d , -f 2` + + if [ -z "$bingo_data" ] || [ -z "$bingo_d" ];then + echo no bingo + exit + fi + if [ $bingo_w -eq 2 ];then + s=super + else + s=normal + fi + if [ "$bingo_d" = "20230630" ] || [ "$bingo_d" = "20230629" ];then + cp=0 + skill=normal + moji_mode_card $card $cp $skill $s + exit + else + echo no bingo day + exit + fi +fi + +if [ "$3" = "wa" ] || [ "$3" = "-wa" ];then + echo "not open" + exit + plus=$(($RANDOM % 800 + 400)) + cp=$((cp + plus)) + + skill=$(($RANDOM % 2)) + if [ $skill -eq 1 ];then + skill=critical + plus=$(($RANDOM % 500)) + cp=$((cp + plus)) + else + skill=normal + fi + + skill=$(($RANDOM % 10)) + if [ $skill -eq 1 ];then + skill=post + plus=$(($RANDOM % 500)) + cp=$((cp + plus)) + else + skill=normal + fi + + s=super + moji_mode_card 28 $cp $skill $s + + exit +fi + +if [ "$3" = "zen" ] || [ "$3" = "-zen" ];then + yui_card 20 123 + exit +fi + +if [ "$3" = "field" ] || [ "$3" = "-field" ];then + field_card $(($RANDOM % 9 + 1)) + exit +fi + +if [ "$3" = "g15" ] || [ "$3" = "-g15" ];then + cp=0 + st=super + skill=book + moji_mode_card 71 $cp $skill $st + exit +fi + +if [ "$3" = "-b" ] || [ "$3" = "b" ];then + if [ $updated_at -ge $d ];then + if [ "$updated_at" = "$d" ] && { [ "$updated_at_m" = "$day_m" ] || [ "$updated_at_m" = "$day_mm" ] || [ "$updated_at_m" = "$day_mmm" ] };then + echo "limit battle" + exit + else + echo "limit battle" + fi + else + id_all=`curl -sL "https://api.syui.ai/users?itemsPerPage=2000"|jq ".[]|.id"` + id_n=`echo "$id_all"|wc -l` + id_nr=$(($RANDOM % $id_n)) + r=`echo "$id_all"| awk "NR==$id_nr"` + + if [ "$id_all" = "null" ];then + r=2 + fi + + if [ 0 -eq $id_n ] || [ 0 -eq $r ];then + r=2 + fi + if [ -z "$id_n" ] || [ -z "$r" ];then + r=2 + fi + + data_uu=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` + data_u=`curl -sL "$url/users/$r/card?itemsPerPage=2000"` + # 革命前 + tt=`echo $data_uu|jq ".[].cp"|sort -n -r` + ttt=`echo $data_u|jq ".[].cp"|sort -n -r` + # 革命後 + #tt=`echo $data_uu|jq ".[].cp"|sort -n` + #ttt=`echo $data_u|jq ".[].cp"|sort -n` + + #echo $data_u|jq ".[].cp" + nl=`echo $data_uu|jq length` + if [ $nl -ge 3 ];then + rs=$(($RANDOM % 3 + 1)) + else + rs=$(($RANDOM % $nl + 1)) + fi + + #echo $data_u|jq ".[].cp" + nll=`echo $data_u|jq length` + rss=$(($RANDOM % $nll)) + if [ $nll -ge 3 ];then + rss=$(($RANDOM % 3 + 1)) + else + rss=$(($RANDOM % $nll + 1)) + fi + cp_i=`echo $tt |awk "NR==$rs"` + cp_b=`echo $ttt |awk "NR==$rss"` + if [ -z "$cp_i" ];then + echo "null error" + exit + fi + if [ -z "$cp_b" ];then + echo "null error" + exit + fi + + if [ -n "$fav_cid" ] && [ $fav_cid -ne 0 ];then + fav_card=`echo $data_uu|jq -r ".[]|select(.id == $fav_cid)"` + fav_card_id=`echo $fav_card|jq -r ".id"` + fav_card_cp=`echo $fav_card|jq -r ".cp"` + fav_card_name=`echo $fav_card|jq -r ".card"` + fav_card_status=`echo $fav_card|jq -r ".status"` + fav_card_skill=`echo $fav_card|jq -r ".skill"` + fav_card_ran=$(($RANDOM % 4)) + if [ $fav_card_ran -eq 0 ];then + cp_i=$fav_card_cp + fi + fi + + echo $tt | sed -n 1,3p + if [ -n "$fav_cid" ] && [ $fav_cid -ne 0 ];then + echo "$fav_card_cp ✧" + fi + echo "---" + echo id : $r + echo $ttt | sed -n 1,3p + echo "---" + echo $cp_i vs $cp_b + + if [ -n "$fav_card_id" ] && [ $fav_card_ran -eq 0 ];then + $fav_com $username $did b $cp_b + exit + fi + + # 革命前 + if [ $cp_i -gt $cp_b ];then + # 革命後 + #if [ $cp_b -gt $cp_i ];then + echo "win!" + else + echo loss + fi + + # 革命前 + if [ $cp_i -gt $cp_b ];then + # 革命後 + #if [ $cp_b -gt $cp_i ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + if [ -z "$card" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + fi + echo "[card]" + echo id : $card + echo cp : $cp + t=`echo $tmp|jq -r .card` + + # ai vs i + if [ $r -eq $uid ];then + echo "$username vs $username" + card=`echo $(($RANDOM % 15))` + cp=`echo $(($RANDOM % 300 + 200))` + s=$(($RANDOM % 2)) + if [ $s -eq 1 ];then + s=super + plus=$(($RANDOM % 500 + 500)) + cp=$((cp + plus)) + else + s=normal + fi + if [ $card -eq 13 ];then + plus=$(($RANDOM % 1200 + 800)) + cp=$((cp + plus)) + fi + sleep 5 + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + fi + fi + + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"updated_at\":\"$updated_at_n\",\"token\":\"$token\"}" -s $url/users/$uid` + + fi + exit +fi + +if [ "$3" = "ai" ] || [ "$3" = "-ai" ];then + data=`echo "$data_tmp"|jq ".[]|select(.username == \"ai\")"` + if [ -z "$data" ];then + exit + fi + + next=`echo $data|jq -r .next` + if [ "$next" = "null" ];then + echo "null error" + exit + fi + d=`date +"%Y%m%d"` + if [ $next -gt $d ];then + exit + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":2,\"password\":\"$pass\"}" -s $url/cards` + ## ai card plus + #tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $(($RANDOM % 15))` + cp=`echo $(($RANDOM % 300 + 200))` + s=$(($RANDOM % 2)) + if [ $s -eq 1 ];then + s=super + plus=$(($RANDOM % 200 + 500)) + cp=$((cp + plus)) + else + s=normal + fi + + skill=$(($RANDOM % 2)) + if [ $skill -eq 1 ];then + skill=critical + plus=$(($RANDOM % 400)) + cp=$((cp + plus)) + else + skill=normal + fi + + skill=$(($RANDOM % 10)) + if [ $skill -eq 1 ];then + skill=post + plus=$(($RANDOM % 400)) + cp=$((cp + plus)) + else + skill=normal + fi + + if [ $card -eq 13 ];then + plus=$(($RANDOM % 500 + 800)) + cp=$((cp + plus)) + fi + sleep 5 + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $url/cards` + + ## ai card plus + ascii_moji_b + echo "\n[card]" + echo "id : $card" + echo "cp : $cp" + if [ "$skill" = "critical" ] || [ "$skill" = "post" ] || [ "$skill" = "luck" ];then + echo "skill : $skill" + fi + + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + t=`echo $tmp|jq -r .card` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"next\":\"$nd\",\"token\":\"$token\"}" -s $url/users/2` + exit +fi + +if [ $next -gt $d ];then + if [ "$updated_at" = "$d" ] && { [ "$updated_at_m" = "$day_m" ] || [ "$updated_at_m" = "$day_mm" ] || [ "$updated_at_m" = "$day_mmm" ] };then + echo limit 1 day + exit + else + echo limit 1 day + echo "next : $nd" + exit + fi +fi + +tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $url/cards` +card=`echo $tmp|jq -r .card` +card_url=`echo $tmp|jq -r .url` +cp=`echo $tmp|jq -r .cp` +skill=`echo $tmp|jq -r .skill` +if [ -z "$card" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + skill=`echo $tmp|jq -r .skill` +fi + +echo "[card]" +echo id : $card +echo cp : $cp +if [ "$skill" != "normal" ];then + echo skill : $skill +fi +t=`echo $tmp|jq -r .card` +tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"next\":\"$nd\",\"token\":\"$token\",\"room\":0}" -s $url/users/$uid` + +## new card +card=86 +skill=ten +if [ $(($RANDOM % 130)) -eq 0 ];then + cp=$(($RANDOM % 4400 + 1000)) + card_add_origin $card $cp $skill + #ここにmodelをtrueする処理を入れなければいけない + exit +fi + +card=89 +skill=ten +if [ $(($RANDOM % 120)) -eq 0 ];then + cp=$(($RANDOM % 4400 + 1000)) + card_add_origin $card $cp $skill + #ここにmodelをtrueする処理を入れなければいけない + exit +fi + +s=`echo $(($RANDOM % 3))` +luck_at_d=`date +"%Y%m%d"` +# luck day +if [ $luck -eq 7 ] && [ "$luck_at" = "$luck_at_d" ] && [ $s -eq 1 ];then + skill=luck + card=`echo $(($RANDOM % 15))` + cp=`echo $(($RANDOM % 300 + 200))` + s=$(($RANDOM % 2)) + if [ $s -eq 1 ];then + s=super + plus=$(($RANDOM % 500 + 500)) + cp=$((cp + plus)) + else + s=normal + fi + if [ $card -eq 13 ];then + plus=$(($RANDOM % 1200 + 800)) + cp=$((cp + plus)) + fi + cp=$((cp + 100)) + sleep 2 + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\", \"skill\": \"$skill\"}" -s $url/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" + echo "skill : ${skill}" +fi diff --git a/scpt/api_card_raid_win.zsh b/scpt/api_card_raid_win.zsh new file mode 100755 index 0000000..74fa2e0 --- /dev/null +++ b/scpt/api_card_raid_win.zsh @@ -0,0 +1,46 @@ +#!/bin/zsh + +url=https://api.syui.ai +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +f_reid_user=$HOME/.config/atr/txt/card_reid_user.txt +n=`cat $f_reid_user|wc -l` + +for ((i=1;i<=$n;i++)) +do + uid=`cat $f_reid_user|awk "NR==$i"` + r=`echo $(($RANDOM % 10))` + if [ $r -eq 1 ];then + card=`echo $(($RANDOM % 15))` + cp=`echo $(($RANDOM % 300 + 50))` + else + card=0 + cp=`echo $(($RANDOM % 100 + 1))` + fi + + ss=$(($RANDOM % 10)) + if [ 13 -ne $card ] && [ $ss -eq 1 ];then + card=13 + fi + + s=$(($RANDOM % 2)) + if [ $s -eq 1 ];then + s=super + plus=$(($RANDOM % 500 + 200)) + cp=$((cp + plus)) + else + s=normal + fi + if [ $card -eq 13 ];then + plus=$(($RANDOM % 1000 + 300)) + cp=$((cp + plus)) + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\"}" -s $url/cards` + echo $tmp + + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + echo "[card]" + echo "id : ${card}" + echo "cp : ${cp}" +done diff --git a/scpt/api_chara.zsh b/scpt/api_chara.zsh new file mode 100755 index 0000000..891eaa3 --- /dev/null +++ b/scpt/api_chara.zsh @@ -0,0 +1,215 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ];then + echo no option + echo "/chara start" + exit +fi + +chara_qa="あなたはサッカーをしています。 +試合中、ふと目にするのは? + +1 : 開けた青空 +2 : 真っ白な柱 +3 : 風になびく芝生 + +数字を入れて答えてね。 +/chara 数字" + +chara_qb="ここは研究室。 +実験のため道具を手に持っています。 + +1 : 淡い液体が入ったガラス瓶 +2 : 清潔なシーツ +3 : 観葉植物" + +chara_qc="宇宙に打ち上げられたロケットから地球を見ます。 +何が見えましたか? + +1 : 別の宇宙船 +2 : 飛行機 +3 : 大きな島" + +chara_ba=" +☑ 平和を願う +☑ 協調性は高いが自己主張は弱い +☑ 相談がうまい +---" + +chara_bb=" +☑ 変化自在 +☑ 世間離れしており常識知らず +☑ 真面目で芯が強い +---" + +chara_bc=" +☑ 思慮深い +☑ 一人の時間が好きで冷たく見える +☑ 周りを観察している +---" + +tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_post\": \"$ten_char\", \"ten_kai\":0,\"ten_su\":$first_ten,\"ten\": true,\"token\":\"$token\"}" -s $host/users/$uid` +data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` +ten_data=`curl -sL "$host/users?itemsPerPage=3000"|jq ".|sort_by(.ten_su)|reverse|.[]|select(.ten_su != 0)"` +data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai +host_card=https://card.syui.ai/json/card.json +#host_card_json=`curl -sL $host_card` + +ran=$(($RANDOM % 3)) + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +handle=$1 +did=$2 +username=`echo $1|cut -d . -f 1` +cid=$3 +uri=$4 +option=$5 + +yui_did=did:plc:4hqjfn7m6n5hno3doamuhgef +all_data=`curl -sL "$host/users?itemsPerPage=3000"` +data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` +uid=`echo $data|jq -r .id` +aiten=`echo $data|jq -r .aiten` +ten_post=`echo $data|jq -r .ten_post` +ten_su=`echo $data|jq -r .ten_su` +ten_kai=`echo $data|jq -r .ten_kai` +ten_delete=`echo $data|jq -r .ten_delete` +ten_bool=`echo $data|jq -r .ten` +day_at=`date +"%Y%m%d"` +nd=`date +"%Y%m%d" -d '1 days ago'` +ten_at_n=`date --iso-8601=seconds` +d=`date +"%Y-%m-%d"` +ten_at=`echo $data|jq -r .ten_at` +ten_at=`date -d "$ten_at" +"%Y-%m-%d"` +data_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + +# uri_post=`echo '{"uri":"at://did:plc:uqzpqmrjnptsxezjx4xuh2mn/app.bsky.feed.post/3k3zr5b336o2u","cid":"bafyreierpw23cxvx4e3cjzd3h6r4crz646zb2ana6cmmsxn4z5rpupl35e"}'|jq -r .uri|cut -d / -f 5` +# https://bsky.app/profile/$did/post/$uri_post +tmp_atr='{"uri":"at://did:plc:uqzpqmrjnptsxezjx4xuh2mn/app.bsky.feed.post/3k3zr5b336o2u","cid":"bafyreierpw23cxvx4e3cjzd3h6r4crz646zb2ana6cmmsxn4z5rpupl35e"}' + +function chara_check(){ + #card_check=`echo $data_card|jq -r ".[]|select(.card == 48 or .card == 49 or .card == 50 or .card == 51 or .card == 52 or .card == 53)"` + #card_check=`echo $data_card|jq -r ".[]|select(.card == 54 or .card == 55 or .card == 56)"` + card_check=`echo $data_card|jq -r ".[]|select(.card == 58 or .card == 53 or .card == 59)"` + if [ -n "$card_check" ];then + echo you already have chara-card + exit + fi +} + +function chara_start() { + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_su\":0, \"ten_kai\":1, \"token\":\"$token\"}" -s $host/users/$uid` + echo "$chara_qa" + exit +} + +function chara_post(){ + case $1 in + ponta) + card=53 + text=$chara_ba + title="[ポンタ]" + desc="緑色" + ;; + octo) + card=58 + text=$chara_bb + title="[オクトカット]" + desc="白色" + ;; + zeusu) + card=59 + text=$chara_bc + title="[ゼウス]" + desc="青色" + ;; + esac + + host_card=https://card.syui.ai/json/card.json + host_card_json=`curl -sL $host_card` + j=`echo $host_card_json|jq ".[]|select(.id == $card)"` + img=`echo $j|jq -r .img` + + cp=$(($RANDOM % 1230)) + s=super + skill=chara + link="https://card.syui.ai/$username" + + card_check=`echo $data_card|jq -r ".[]|select(.card == $card)"` + if [ -z "$card_check" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $host/cards` + card=`echo $tmp|jq -r .card` + cp=`echo $tmp|jq -r .cp` + fi + tmp_atr=`$atr reply-og "$text" --cid $cid --uri $uri --img $img --title "$title" --description "$desc" --link $link` + uri_post=`echo $tmp_atr|jq -r .uri|cut -d / -f 5` + post_url="https://bsky.app/profile/$yui_did/post/$uri_post" + ccid=`echo $tmp|jq -r .id` + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"url\":\"$post_url\",\"token\":\"$token\"}" $host/cards/$ccid` + exit +} + +function chara_plus() { + case $ten_kai in + 2) + chara_q=$chara_qb + ;; + 3) + chara_q=$chara_qc + ;; + #4) + # chara_q=$chara_qd + # ;; + esac + echo "$chara_q" + + case $1 in + 1|2|3) + tmp_su=$1 + ten_su=$((ten_su + $tmp_su)) + ;; + esac + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_su\":$ten_su, \"ten_kai\":$ten_kai, \"token\":\"$token\"}" -s $host/users/$uid` + + case $ten_kai in + 4) + if [ $ten_su -eq 9 ] || [ $ten_su -eq 8 ] || [ $ten_su -eq 7 ];then + chara=ponta + elif [ $ten_su -eq 6 ];then + chara=octo + else + chara=zeusu + fi + chara_post $chara + ;; + esac +} + +chara_check + +case "$option" in + start) + chara_start + ;; + 1|2|3) + ten_kai=$((ten_kai + 1)) + chara_plus $option + ;; + *) + echo "/chara start" + echo "/chara 1,2,3" + ;; +esac + +exit diff --git a/scpt/api_egg.zsh b/scpt/api_egg.zsh new file mode 100755 index 0000000..2d68e83 --- /dev/null +++ b/scpt/api_egg.zsh @@ -0,0 +1,156 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +egg_card=40 + +handle=$1 +did=$2 +username=`echo $1|cut -d . -f 1` +opt=$3 + +if [ -z "$opt" ];then + echo no option + exit +fi + +all_data=`curl -sL "$host/users?itemsPerPage=3000"` +data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` +uid=`echo $data|jq -r .id` + +aiten=`echo $data|jq -r .aiten` +fav=`echo $data|jq -r .fav` +day_at=`date +"%Y%m%d"` +nd=`date +"%Y%m%d" -d '1 days ago'` +ten_at_n=`date --iso-8601=seconds` +d=`date +"%Y%m%d"` +limit_reset_at=`date --iso-8601=seconds -d '1 days ago'` +data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + +opt_dec=`echo $opt|base64 -d` + +if [ "$did" = "$opt_dec" ];then + echo verify +else + echo no verify + exit +fi + +fav_card=`echo $data_user_card|jq -r ".[]|select(.card == $egg_card)"` +cid=`echo $fav_card|jq -r .id` + +egg_at=`echo $data|jq -r .egg_at` +egg_at=`date -d "$egg_at" +"%Y%m%d"` +egg_at_n=`date --iso-8601=seconds` + +day_m=`date +"%H%M"` +day_mm=`date +"%H%M" -d "-1 min"` +day_mmm=`date +"%H%M" -d "-2 min"` + +if [ -z "$fav_card" ];then + echo "no egg" + if [ "$egg_at" = "$d" ];then + echo "limit egg" + exit + fi + card=39 + data_uu=`curl -sL "$host/users/$uid/card?itemsPerPage=2000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)|.cp"|head -n 1` + if [ -n "$card_check" ];then + cp=$card_check + cid=`echo $data_uu|jq -r ".[]|select(.card == $card)|.id"|head -n 1` + echo "you already have, dragon" + ran=`echo $(($RANDOM % 3))` + ran_a=`echo $(($RANDOM % 5 + 1))` + if [ $ran -eq 1 ];then + card_check=$((card_check * 3)) + echo "🐉 ---> $cp +${ran_a}" + cp=$((cp + ran_a)) + else + cp=$((cp + 1)) + echo "$cp +1" + fi + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"cp\":$cp,\"token\":\"$token\"}" $host/cards/$cid` + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"egg_at\":\"$egg_at_n\", \"token\":\"$token\"}" -s $host/users/$uid` + exit + fi + + card=42 + cp=0 + data_uu=`curl -sL "$host/users/$uid/card?itemsPerPage=2000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)|.cp"|head -n 1` + if [ -n "$card_check" ];then + echo "you already have, nyan" + ran=`echo $(($RANDOM % 1000 + 1000))` + aiten_p=$((aiten + ran)) + echo "🐈 ---> [aiten]${aiten} +${ran}" + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"egg_at\":\"$egg_at_n\", \"aiten\":$aiten_p, \"token\":\"$token\"}" -s $host/users/$uid` + exit + fi + + exit +fi + +card_id=`echo $fav_card|jq -r ".id"` +card_cp=`echo $fav_card|jq -r ".cp"` +card_name=`echo $fav_card|jq -r ".card"` +card_status=`echo $fav_card|jq -r ".status"` +card_skill=`echo $fav_card|jq -r ".skill"` + +function fav_status() { + echo "\n[card] ${card_name}" + echo "---" + echo "cp : ${card_cp}" + echo "cid : ${cid}" + echo "skill : ${card_skill}" + echo "status : ${card_status}" +} + +function fav_battle() { + cp_b=`echo $(($RANDOM % 14))` + if [ "$egg_at" = "$d" ];then + echo "limit egg" + exit + fi + + cp_i=`echo $fav_card|jq -r ".cp"` + card_name=`echo $fav_card|jq -r ".card"` + card_status=`echo $fav_card|jq -r ".status"` + card_skill=`echo $fav_card|jq -r ".skill"` + + if [ $cp_i -ge $cp_b ];then + card=39 + skill=dragon + cp=`echo $(($RANDOM % 1000 + 1200))` + s=third + ran=`echo $(($RANDOM % 10))` + if [ $ran -eq 1 ];then + card=42 + skill=nyan + cp=0 + fi + body="...congratulations! your egg has evolved\negg ---> ${skill} !!" + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"card\": $card,\"cp\":$cp,\"token\":\"$token\", \"status\": \"$s\",\"skill\": \"$skill\"}" $host/cards/$cid` + else + body="...no evolved" + fi + echo "\n${cp_i} vs $cp_b" + echo "----" + echo "${body}" + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"egg_at\":\"$egg_at_n\",\"token\":\"$token\"}" -s $host/users/$uid` + exit +} + +fav_battle + +exit diff --git a/scpt/api_fav.zsh b/scpt/api_fav.zsh new file mode 100755 index 0000000..b5006b4 --- /dev/null +++ b/scpt/api_fav.zsh @@ -0,0 +1,161 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +handle=$1 +did=$2 +username=`echo $1|cut -d . -f 1` +opt=$3 + +if [ -z "$opt" ];then + echo no option + echo "---" + echo "CID = 1234567" + echo "@yui.syui.ai /fav 1234567" + echo "---" + echo "/fav status" + echo "/fav battle" + exit +fi + +all_data=`curl -sL "$host/users?itemsPerPage=3000"` +data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` +uid=`echo $data|jq -r .id` + +if [ $opt -eq 0 ];then + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"fav\": $opt,\"token\":\"$token\"}" -s $host/users/$uid` + echo ok + exit +fi + +aiten=`echo $data|jq -r .aiten` +fav=`echo $data|jq -r .fav` +day_at=`date +"%Y%m%d"` +nd=`date +"%Y%m%d" -d '1 days ago'` +ten_at_n=`date --iso-8601=seconds` +d=`date +"%Y%m%d"` +limit_reset_at=`date --iso-8601=seconds -d '1 days ago'` +data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + +case "$opt" in + [bB]|-[bB]|[bB]attle|[sS]|-[sS]|[sS]tatus) + cid=`echo $data|jq -r .fav` + fav_card=`echo $data_user_card|jq -r ".[]|select(.id == $cid)"` + ;; + *) + opt=$((opt + 0)) + cid=$opt + fav_card=`echo $data_user_card|jq -r ".[]|select(.id == $cid)"` + ;; +esac + +updated_at=`echo $data|jq -r .updated_at` +updated_at_m=`date -d "$updated_at" +"%H%M"` +updated_at_n=`date --iso-8601=seconds` +updated_at=`date -d "$updated_at" +"%Y%m%d"` +raid_at=`echo $data|jq -r .raid_at` +raid_at=`date -d "$raid_at" +"%Y%m%d"` +raid_at_n=`date --iso-8601=seconds` +day_m=`date +"%H%M"` +day_mm=`date +"%H%M" -d "-1 min"` +day_mmm=`date +"%H%M" -d "-2 min"` + +if [ -z "$fav_card" ];then + echo "no card id" + exit +fi + +card_id=`echo $fav_card|jq -r ".id"` +card_cp=`echo $fav_card|jq -r ".cp"` +card_name=`echo $fav_card|jq -r ".card"` +card_status=`echo $fav_card|jq -r ".status"` +card_skill=`echo $fav_card|jq -r ".skill"` + +function fav_status() { + echo "\n[card] ${card_name}" + echo "---" + echo "cp : ${card_cp}" + echo "cid : ${cid}" + echo "skill : ${card_skill}" + echo "status : ${card_status}" +} + +function fav_battle() { + if [ -n "$1" ];then + cp_b=$1 + else + cp_b=$(($RANDOM % 1400)) + fi + + if [ $updated_at -ge $d ] || [ "$updated_at" = "$d" ];then + echo "limit battle" + exit + fi + + cp_i=`echo $fav_card|jq -r ".cp"` + card_name=`echo $fav_card|jq -r ".card"` + card_status=`echo $fav_card|jq -r ".status"` + card_skill=`echo $fav_card|jq -r ".skill"` + + if [ $cp_i -gt $cp_b ];then + if [ $cp_i -ge 9000 ];then + cp_plus=$(($RANDOM % 27 + 1)) + elif [ $cp_i -ge 7000 ];then + cp_plus=$(($RANDOM % 47 + 1)) + else + cp_plus=$(($RANDOM % 237 + 1)) + fi + else + cp_plus=$(($RANDOM % 17 + 1)) + fi + echo "\n✧${cp_i} vs $cp_b" + echo "----" + cp=$((cp_i + cp_plus)) + body="level up!" + echo "${body} ✧${cp}(+${cp_plus})" + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"cp\":$cp,\"token\":\"$token\"}" $host/cards/$cid` + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"updated_at\":\"$updated_at_n\",\"token\":\"$token\"}" -s $host/users/$uid` + exit +} + +function fav_add() { + card_status=fifth + u_data=`curl -sL "https://api.syui.ai/users/$uid/card?itemsPerPage=2555"|jq -r ".[]|select(.status == \"$card_status\")"` + if [ -z "$u_data" ];then + d_data=`curl -sL $host/cards/$cid|jq -r "select(.status == \"first\" or .status == \"second\" or .status == \"third\" or .status == \"yui\" or .status == \"fourth\" or .status == \"$card_status\")"` + if [ -z "$d_data" ];then + echo status $card_status + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"status\":\"$card_status\",\"token\":\"$token\"}" $host/cards/$cid` + fi + fi + + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"fav\": $opt,\"token\":\"$token\"}" -s $host/users/$uid` + if [ -n "$tmp" ];then + echo ok + fi + exit +} + +case "$opt" in + [bB]|-[bB]|[bB]attle) + fav_battle $4 + ;; + [sS]|-[sS]|[sS]tatus) + fav_status + ;; + *) + fav_add + ;; +esac + +exit diff --git a/scpt/api_gift.zsh b/scpt/api_gift.zsh new file mode 100755 index 0000000..4c40003 --- /dev/null +++ b/scpt/api_gift.zsh @@ -0,0 +1,278 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +handle=$1 +did=$2 +username=`echo $1|cut -d . -f 1` +cid=`echo $3|cut -d ' ' -f 1` +guser=$4 + +if [ "$3" = "ai" ];then + guser=ai +fi + +if [ -z "$cid" ];then + echo no option + echo "---" + echo "@yui.syui.ai /gift ai" + echo "---" + echo "@yui.syui.ai /gift status" + echo "12345" + echo "67891" + echo "---" + echo "@yui.syui.ai /gift 12345" + echo "" + echo "---" + echo "@yui.syui.ai /gift 12345 syui" + exit +fi + +function card_env(){ + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + gdata=`echo $all_data|jq ".[]|select(.username == \"$guser\")"` + if [ -z "$data" ];then + exit + fi + + uid=`echo $data|jq -r .id` + gid=`echo $gdata|jq -r .id` + + aiten=`echo $data|jq -r .aiten` + fav=`echo $data|jq -r .fav` + + cdata=`curl -sL $host/cards/$cid` + if [ -z "$cdata" ];then + echo no card + exit + fi + + card=`echo $cdata|jq -r .card` + cp=`echo $cdata|jq -r .cp` + count=`echo $cdata|jq -r .count` + author=`echo $cdata|jq -r .author` + skill=`echo $cdata|jq -r .skill` + s=`echo $cdata|jq -r .status` + + if [ $count -eq 0 ];then + echo card count 0 + exit + fi + + if [ $author != "$username" ];then + echo no author + echo "$author --> $username" + exit + fi +} + +function card_env_ai(){ + guser=ai + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + gdata=`echo $all_data|jq ".[]|select(.username == \"$guser\")"` + if [ -z "$data" ];then + exit + fi + + uid=`echo $data|jq -r .id` + gid=`echo $gdata|jq -r .id` + + aiten=`echo $data|jq -r .aiten` + fav=`echo $data|jq -r .fav` + + cdata=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"|jq ".[0]"` + if [ -z "$cdata" ];then + cdata=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"|jq ".[]|select(.author == \"$username\")"|jq -s ".[0]"` + fi + + if [ -z "$cdata" ];then + echo no card + exit + fi + + cid=`echo $cdata|jq -r .id` + card=`echo $cdata|jq -r .card` + cp=`echo $cdata|jq -r .cp` + count=`echo $cdata|jq -r .count` + author=`echo $cdata|jq -r .author` + skill=`echo $cdata|jq -r .skill` + s=`echo $cdata|jq -r .status` + + if [ $count -eq 0 ];then + echo card count 0 + exit + fi + + if [ $author != "$username" ];then + echo no author + echo "$author --> $username" + exit + fi + + aicard=`curl -sL "$host/users/$gid/card?itemsPerPage=3000"|jq -r ".[]|select(.card >= 1)"|jq -s` + if [ -z "$aicard" ];then + exit + fi + n=`echo $aicard|jq length` + n=$((n - 1)) + ran=$((RANDOM % n)) + ai_id=`echo $aicard|jq -r ".[$ran]|.id"` + ai_card=`echo $aicard|jq -r ".[$ran]|.card"` + ai_cp=`echo $aicard|jq -r ".[$ran]|.cp"` + ai_skill=`echo $aicard|jq -r ".[$ran]|.skill"` + ai_s=`echo $aicard|jq -r ".[$ran]|.status"` + ai_author=ai +} + +function card_env_ai_select(){ + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + gdata=`echo $all_data|jq ".[]|select(.username == \"$guser\")"` + if [ -z "$data" ];then + exit + fi + + uid=`echo $data|jq -r .id` + gid=`echo $gdata|jq -r .id` + + aiten=`echo $data|jq -r .aiten` + fav=`echo $data|jq -r .fav` + + cdata=`curl -sL $host/cards/$cid` + if [ -z "$cdata" ];then + echo no card + exit + fi + + cid=`echo $cdata|jq -r .id` + card=`echo $cdata|jq -r .card` + cp=`echo $cdata|jq -r .cp` + count=`echo $cdata|jq -r .count` + author=`echo $cdata|jq -r .author` + skill=`echo $cdata|jq -r .skill` + s=`echo $cdata|jq -r .status` + + if [ $count -eq 0 ];then + echo card count 0 + exit + fi + + if [ $author != "$username" ];then + echo no author + echo "$author --> $username" + exit + fi + + aicard=`curl -sL "$host/users/$gid/card?itemsPerPage=3000"|jq -r ".[]|select(.card >= 1)"|jq -s` + if [ -z "$aicard" ];then + exit + fi + n=`echo $aicard|jq length` + n=$((n - 1)) + ran=$((RANDOM % n)) + ai_id=`echo $aicard|jq -r ".[$ran]|.id"` + ai_card=`echo $aicard|jq -r ".[$ran]|.card"` + ai_cp=`echo $aicard|jq -r ".[$ran]|.cp"` + ai_skill=`echo $aicard|jq -r ".[$ran]|.skill"` + ai_s=`echo $aicard|jq -r ".[$ran]|.status"` + ai_author=ai +} + +function card_gift() { + card_env + if [ -z "$guser" ];then + echo card:$card + echo skill:$skill + echo status:$s + echo count:$count + echo author:$author + exit + fi + count=$((count - 1)) + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$gid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\",\"author\":\"$username\",\"count\":0}" -sL $host/cards` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"count\":$count,\"token\":\"$token\"}" $host/cards/$cid -sL` + echo ok + echo "$author($cid) --> $guser" +} + +function card_ai() { + card_env_ai + count=$((count - 1)) + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$gid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\",\"author\":\"$username\",\"count\":0}" -sL $host/cards` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"count\":$count,\"token\":\"$token\"}" $host/cards/$cid -sL` + echo ok + echo "$author($cid) --> $guser" + echo "---" + echo 'thx!' + echo card:$ai_card + echo cp:$ai_cp + echo author:$ai_author + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$ai_card,\"status\":\"$ai_s\",\"cp\":$ai_cp,\"password\":\"$pass\",\"skill\":\"$ai_skill\",\"author\":\"$ai_author\",\"count\":0}" -sL $host/cards` +} + +function card_ai_select() { + card_env_ai_select + count=$((count - 1)) + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$gid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\",\"author\":\"$username\",\"count\":0}" -sL $host/cards` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"count\":$count,\"token\":\"$token\"}" $host/cards/$cid -sL` + echo ok + echo "$author($cid) --> $guser" + echo "---" + echo 'thx!' + echo card:$ai_card + echo cp:$ai_cp + echo author:$ai_author + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$ai_card,\"status\":\"$ai_s\",\"cp\":$ai_cp,\"password\":\"$pass\",\"skill\":\"$ai_skill\",\"author\":\"$ai_author\",\"count\":0}" -sL $host/cards` +} + +function card_status(){ + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + uid=`echo $data|jq -r .id` + acard=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"|jq ".[]|select(.author == \"$username\")|.id"` + if [ -z "$acard" ];then + echo no card + exit + fi + echo $acard +} + +function test_cmd(){ + echo "test ok /gift $1" + echo cid:$cid + echo guser:$guser + exit +} + +case $cid in + "status") + card_status + ;; + "ai") + #test_cmd ai + card_ai + ;; + *) + if [ "ai" = "$guser" ];then + #test_cmd ai_select + card_ai_select + else + #test_cmd gift user + card_gift + fi + ;; +esac + +exit diff --git a/scpt/api_ten.zsh b/scpt/api_ten.zsh new file mode 100755 index 0000000..c99bafa --- /dev/null +++ b/scpt/api_ten.zsh @@ -0,0 +1,1345 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +help_body="[AITEN] +/ten start : ゲームスタート +/ten pay : aitenを貯めてカードをゲット +文字カードの組み合わせで点数を上げていきます +1ターンにつき1枚またはすべてのカードをten dで入れ替えられます。7ターンで終了 +数字を指定すると、たまにmissをします +カードの組み合わせはten pで発動します +[AA] : [通] 50 +[KKK] : [揃] 100 +[AAM] : [天ノ川] 1200" + +if [ -z "$5" ];then + echo "$help_body" + exit +fi + +card_pay=$HOME/.config/atr/scpt/card_pay.zsh +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai +host_card=https://card.syui.ai/json/card.json +host_card_json=`curl -sL $host_card` +n_cid=$HOME/.config/atr/txt/tmp_notify_cid.txt +f_cfg=$HOME/.config/atr/txt/tmp_ten_config.txt + +function moon_check(){ + moon_now=`date +"%Y%m%d"` + moon_j=$HOME/.config/atr/scpt/full_moon.j + if [ -f $moon_j ];then + moon_t=`cat $moon_j|jq ".[]|select(.data == \"$moon_now\")"` + if [ -n "$moon_t" ];then + echo true + else + echo false + fi + fi +} + +if [ ! -f $f_cfg ];then + echo $host_card_json |jq -r ".[]|select(.ten != null)|.ten" |tr -d '\n' >! $f_cfg +fi + +if [ -f $f_cfg ];then + nn=`cat $f_cfg|wc -c` +fi + +ran_a=$(($RANDOM % nn)) +ran_b=$(($RANDOM % nn)) +ran_c=$(($RANDOM % nn)) +ran_d=$(($RANDOM % nn)) +ran_z=$(($RANDOM % 540)) +ran_cm=$(($RANDOM % 3)) +ran_first=$(($RANDOM % 6)) + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +handle=$1 +did=$2 +username=`echo $1|cut -d . -f 1` +cid=$3 +uri=$4 +option=$5 + +sub_option=$6 +ten_kai=0 + +export LC_CTYPE=C +export LC_ALL=C + +function ten_yaku() { + echo $host_card_json |jq -r ".[]|select(.ten != null)|.ten,.h" +} + +function ten_skill() { + skill_card_id=`echo $host_card_json |jq -r ".[]|select(.ten == \"$1\")|.id"` + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + skill_card=`echo $data_user_card|jq -r ".[]|select(.skill == \"ten\")|select(.card == $skill_card_id)"` + if [ -n "$skill_card" ];then + echo true + else + echo false + fi +} + +function ten_skill_yui() { + skill_card_id=`echo $host_card_json |jq -r ".[]|select(.ten == \"$1\")|.id"` + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + skill_card=`echo $data_user_card|jq -r ".[]|select(.skill == \"yui\")|select(.card == $skill_card_id)"` + if [ -n "$skill_card" ];then + echo true + else + echo false + fi +} + +function card_son_check() { + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + card_yui_check=`echo $data_user_card|jq -r ".[]|select(.card == $1)"` + if [ -n "$card_yui_check" ];then + echo true + else + echo false + fi +} + +function card_ar_check() { + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + card_yui_check=`echo $data_user_card|jq -r ".[]|select(.card == $1)|select(.status == \"3d\")"` + if [ -n "$card_yui_check" ];then + echo true + else + echo false + fi +} + +function card_yui_check() { + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + card_yui_check=`echo $data_user_card|jq -r ".[]|select(.card == 47)"` + if [ -n "$card_yui_check" ];then + echo true + else + echo false + fi +} + +function card_kyoku_check() { + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + card_kyoku_check=`echo $data_user_card|jq -r ".[]|select(.card == 90)"` + if [ -n "$card_kyoku_check" ];then + card_kyoku_o_check=`echo $data_user_card|jq -r ".[]|select(.card == 15)"` + if [ -n "$card_kyoku_o_check" ];then + echo origin + else + echo true + fi + else + echo false + fi +} + +function card_kyoku_o_check() { + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + if [ -n "$card_kyoku_o_check" ];then + echo true + else + echo false + fi +} + +function card_chou_check() { + data_user_card=`curl -sL "$host/users/$uid/card?itemsPerPage=3000"` + card_yui_check=`echo $data_user_card|jq -r ".[]|select(.card == 14)"|jq -s length` + if [ -n "$card_yui_check" ];then + echo $card_yui_check + else + echo 0 + fi +} + +function ten_yak_check() { + unset ten_yak_ok + case "$1" in + OUY|AIK|IIK|AIS|ACH|ACC|IOU|EKS|TUY|AAC|AEK|ETU|ETW) + if `ten_skill $1`;then + export ten_yak_ok="☑" + fi + ;; + YUI|ACH|IOU|EKS) + if `ten_skill_yui $1`;then + export ten_yak_ok="☑" + fi + ;; + EMY|KOS|CHI|AIT|OYZ|IKY|AKM|KUY|AW*|AHK|IKT|AAM|OSZ|CHO|AAA|AA*|AI*) + export ten_yak_ok="⚠" + ;; + esac +} + +function ten_char() { + unset miss + old_ten_char=$ten_char + char_a=`cat $f_cfg| cut -c $ran_a` + char_b=`cat $f_cfg| cut -c $ran_b` + char_c=`cat $f_cfg| cut -c $ran_c` + ten_char=`echo "${char_a}\n${char_b}\n${char_c}"|head -n 3|sort|tr -d '\n'` + + if [ "${ten_char}" = "AHO" ];then + ten_char=CHO + fi + if [ ${#ten_char} -eq 0 ];then + #miss="[miss]" + ten_char=AAA + fi + if [ ${#ten_char} -eq 1 ];then + #miss="[miss]" + ten_char=AA${ten_char} + fi + if [ ${#ten_char} -eq 2 ];then + #miss="[miss]" + ten_char=A${ten_char} + fi + + ten_yak_check $ten_char + if [ -z "$ten_yak_ok" ];then + if [ $ran_first -eq 1 ];then + ten_char=EMY + fi + fi + ten_yak_check $ten_char + if [ -z "$ten_yak_ok" ];then + if [ $ran_first -eq 2 ];then + ten_char=AAA + fi + fi +} + +function ten_char_one() { + ten_char_one=`cat $f_cfg| cut -c $ran_d` +} + +function ten_room_id() { + ten_room_id=`cat /dev/urandom | tr -dc 'a-z' | fold -w 5|head -n 1` +} + +function ten_data_reset() { + ten_data=`curl -sL "$host/users?itemsPerPage=3000"|jq ".|sort_by(.ten_su)|reverse|.[]|select(.ten_su != 0)"` + ten_u_tmp=`echo $ten_data|jq -s` + ten_n_tmp=`echo $ten_u_tmp|jq "length"` + #ten_n_tmp=5 + for ((i=0;i<$ten_n_tmp;i++)) + do + u_i=`echo $ten_u_tmp|jq -r ".[$i].id"` + u_a=`echo $ten_u_tmp|jq -r ".[$i].username"` + u_s=`echo $ten_u_tmp|jq -r ".[$i].ten_su"` + echo "---" + echo "user : $u_a" + echo "ten : $u_s" + done +} + +function ten_user_reset() { + if [ "$handle" = "syui.ai" ];then + limit_reset_at=`date --iso-8601=seconds -d '1 days ago'` + ten_data_reset_tmp=`curl -sL "$host/users?itemsPerPage=3000"|jq ".[]|select(.aiten != 0)"` + ten_u_tmp=`echo $ten_data_reset_tmp|jq -s` + ten_n_tmp=`echo $ten_u_tmp|jq "length"` + for ((i=0;i<$ten_n_tmp;i++)) + do + u_a=`echo $ten_u_tmp|jq -r ".[$i].username"` + u_s=`echo $ten_u_tmp|jq -r ".[$i].ten_su"` + u_i=`echo $ten_u_tmp|jq -r ".[$i].id"` + ten_kai=0 + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten\": false,\"token\":\"$token\", \"ten_at\": \"$limit_reset_at\"}" -s $host/users/$u_i` + done + echo reset + else + echo no admin + fi +} + +if { [ "$handle" = "syui.ai" ] && [ "$option" = "reset" ] } || [ "$handle" = "reset" ] || [ "$handle" = "r" ];then + ten_char + ten_kai=1 + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_post\": \"\", \"ten_kai\":0,\"ten_su\":0,\"ten\": false,\"token\":\"$token\"}" -s $host/users/1` +fi + +function ten_user_stop() { + echo stop + echo user : $handle + echo ten : $ten_su + echo aiten : $((aiten + ten_su)) + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_post\": \"0\", \"ten_kai\":0,\"ten_su\":$ten_su,\"ten\": false,\"token\":\"$token\", \"ten_at\": \"$ten_at_n\",\"aiten\": $((aiten + ten_su))}" -s $host/users/$uid` + exit +} + +function ten_start() { + if "$ten_bool" ;then + echo already started + exit + fi + ten_yak_check $ten_post + if [ -n "$ten_yak_ok" ];then + ten_old_yak=$ten_post + fi + + if [ ${#ten_char} -eq 0 ];then + ten_char=AAA + fi + if [ ${#ten_char} -eq 1 ];then + ten_char=AA${ten_char} + fi + if [ ${#ten_char} -eq 2 ];then + ten_char=A${ten_char} + fi + ten_yak_check $ten_char + + if [ -z "$ten_yak_ok" ];then + if [ "`card_kyoku_check`" = "true" ];then + card=89 + ten_char=ETW + export ten_yak_ok="☑" + elif [ "`card_kyoku_check`" = "origin" ];then + card=89 + ten_char=ETW + export ten_yak_ok='⚠' + else + unset card + fi + fi + + if [ -z "$ten_yak_ok" ] && [ $ran_first -eq 1 ];then + ten_char=EMY + fi + + if [ -n "$ten_old_yak" ];then + ten_char=$ten_old_yak + fi + + ten_yak_check $ten_char + + if [ -z "$ten_yak_ok" ];then + if `ten_skill IIK`;then + card=46 + ten_char=IIK + export ten_yak_ok="☑" + else + unset card + fi + fi + + if [ -z "$ten_yak_ok" ];then + if `ten_skill YUI`;then + card=36 + ten_char=YUI + export ten_yak_ok="☑" + else + unset card + fi + fi + + if [ -z "$ten_yak_ok" ];then + if `ten_skill AIK`;then + card=33 + ten_char=AIK + export ten_yak_ok="☑" + else + unset card + fi + fi + + if [ -z "$ten_yak_ok" ];then + if `ten_skill OUY`;then + card=29 + ten_char=OUY + export ten_yak_ok="☑" + else + unset card + fi + fi + + if [ -z "$ten_yak_ok" ];then + if `ten_skill ACC`;then + card=76 + ten_char=ACC + export ten_yak_ok="☑" + else + unset card + fi + fi + + ten_user=`echo $ten_data|jq -r .username` + find_user=`echo $ten_user|grep $username` + first_ten=1000 + echo "join : $handle [${ten_char}]" + echo "ten : $first_ten" + echo "aiten : $aiten" + echo "---" + echo "[1-7]" + echo "ten d : shuffle[${ten_char}${ten_yak_ok}]" + echo "ten p : post" + echo "---" + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_post\": \"$ten_char\", \"ten_kai\":0,\"ten_su\":$first_ten,\"ten\": true,\"token\":\"$token\"}" -s $host/users/$uid` + text_one=`echo $ten_data|jq -r .username,.ten_su` + #echo $text_one + exit +} + +function ten_other_user() { + ten_data=`curl -sL "$host/users?itemsPerPage=3000"|jq ".[]|select(.ten == true)"` + ten_user=`echo $ten_data|jq -r .username` + other_user=`echo $ten_user|grep -v $username` +} + +function user_env() { + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + ten_data=`echo $all_data|jq ".|sort_by(.ten_su)|reverse|.[]|select(.ten_su != 0)"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + uid=`echo $data|jq -r .id` + aiten=`echo $data|jq -r .aiten` + model=`echo $data|jq -r .model` + # card=2 + model_mode=`echo $data|jq -r .model_mode` + # card=8 + model_attack=`echo $data|jq -r .model_attack` + # card=3 + model_skill=`echo $data|jq -r .model_skill` + # card=7 + model_limit=`echo $data|jq -r .model_limit` + model_critical=`echo $data|jq -r .model_critical` + model_critical_d=`echo $data|jq -r .model_critical_d` + ten_post=`echo $data|jq -r .ten_post` + ten_bool=`echo $data|jq -r .ten` + day_at=`date +"%Y%m%d"` + nd=`date +"%Y%m%d" -d '1 days ago'` + ten_at_n=`date --iso-8601=seconds` + limit_reset_at=`date --iso-8601=seconds -d '1 days ago'` + d=`date +"%Y-%m-%d"` + ten_at=`echo $data|jq -r .ten_at` + ten_at=`date -d "$ten_at" +"%Y-%m-%d"` + if [ "$d" = "$ten_at" ] && [ "$handle" != "ai" ];then + echo "limit aiten" + exit + fi + ten_kai=`echo $data|jq -r .ten_kai` +} + +function ten_env() { + limit_reset_at=`date --iso-8601=seconds -d '1 days ago'` + ten_su=`echo $data|jq -r .ten_su` + ten_bool=`echo $data|jq -r .ten` + ten_card=`echo $data|jq -r .ten_card` + aiten=`echo $data|jq -r .aiten` + ten_delete=`echo $data|jq -r .ten_delete` + ten_post=`echo $data|jq -r .ten_post` + ten_get=`echo $data|jq -r .ten_get` + ten_at=`echo $data|jq -r .ten_at` + ten_at_n=`date --iso-8601=seconds` +} + +function ten_yak_shutdown() { + unset card + case $ten_char in + EMY) + card=1 + ;; + KOS) + card=2 + ;; + CHI) + card=3 + ;; + AIT) + card=4 + ;; + OYZ) + card=5 + ;; + IKY) + card=6 + ;; + AKM) + card=7 + ;; + KUY) + card=8 + ;; + AW*) + card=9 + ;; + AHK) + card=10 + ;; + IKT) + card=11 + ;; + AAM) + card=12 + ;; + OSZ) + card=13 + ;; + CHO) + card=14 + ;; + ETU) + card=86 + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + ETW) + card=89 + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + OUY) + card=29 + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + AIK) + card=33 + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + IIK) + card=46 + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + ACH) + card=60 + if [ `ten_skill_yui $ten_char` = false ];then + unset card + fi + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + YUI) + card=36 + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + AIS) + card=22 + if [ `ten_skill_yui $ten_char` = false ];then + unset card + fi + ;; + TUY) + card=64 + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + EKS) + card=67 + if [ `ten_skill_yui $ten_char` = false ];then + unset card + fi + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + IOU) + card=69 + if [ `ten_skill_yui $ten_char` = false ];then + unset card + fi + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + ACC) + card=76 + if [ `ten_skill_yui $ten_char` = false ];then + unset card + fi + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + AAC) + card=77 + if [ `ten_skill_yui $ten_char` = false ];then + unset card + fi + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + AEK) + card=78 + if [ `ten_skill_yui $ten_char` = false ];then + unset card + fi + if [ `ten_skill $ten_char` = false ];then + unset card + fi + ;; + esac + ten_su=$((ten_su + ${card}00)) + if [ $card -ne 0 ];then + echo "last : +${card}00" + fi +} + +function ten_shutdown(){ + if [ -z "$1" ];then + shut_opt=7 + else + shut_opt=$1 + fi + if [ $ten_kai -ge $shut_opt ];then + + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + ten_data=`echo $all_data|jq ".|sort_by(.ten_su)|reverse|.[]|select(.ten_su != 0)"` + echo shutdown + echo user : $handle + echo ten : $ten_su + echo aiten : $((aiten + ten_su)) + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_kai\":$ten_kai, \"ten_su\":$ten_su, \"ten\": false, \"token\":\"$token\", \"ten_at\" : \"$ten_at_n\", \"aiten\": $((aiten + ten_su))}" -s $host/users/$uid` + + ten_u_tmp=`echo $ten_data|jq -s` + ten_n_tmp=`echo $ten_u_tmp|jq "length"` + + for ((i=0;i<$ten_n_tmp;i++)) + do + u_a=`echo $ten_u_tmp|jq -r ".[$i].username"` + u_s=`echo $ten_u_tmp|jq -r ".[$i].ten_su"` + if [ $i -eq 0 ] && [ $ten_su -ge $u_s ];then + echo win ! + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -s $host/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + echo "[card]" + echo "id : $card" + echo "cp : $cp" + + if [ $model = "true" ];then + echo "---" + echo "ai[model] status up!" + if [ $(($RANDOM % 2)) -eq 0 ];then + model_critical=$((model_critical + 1)) + json_model="{\"model_critical\":$model_critical, \"token\":\"$token\"}" + echo "critical : ${model_critical}%" + else + model_critical_d=$((model_critical_d + 10)) + json_model="{\"model_critical_d\":$model_critical_d, \"token\":\"$token\"}" + echo "critical_d : ${model_critical_d}%" + fi + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "$json_model" -s $host/users/$uid` + fi + + fi + echo "---" + echo "user : $u_a" + echo "ten : $u_s" + done + exit + fi +} + +function card_post() { + j=`echo $host_card_json|jq ".[]|select(.id == $card)"` + img=`echo $j|jq -r .img` + + if [ $card -eq 30 ];then + cten=${card}0 + old_ten_char=AAA + else + old_ten_char=`echo $j|jq -r .ten` + cten=${card}00 + fi + desc="+$cten" + + if [ -z $img ] || [ "$img" = "null" ];then + exit + fi + ten_yak_check $ten_char + title=`echo $j|jq -r .h` + title="[${title}]" + + if [ $card -eq 36 ];then + if [ "`card_yui_check`" = "true" ];then + if [ "`moon_check`" = "true" ];then + cten=${card}00 + body=`repeat $rr; echo "🌓 +10000"` + img="bafkreieh2j3nbnetmux5xaid7iefv2vfgsjwkx5bx66ce6h35rq2oebo54" + desc="+$cten (+${card_yui_ten})" + title="月見(新月/満月)" + title="[${title}・技]" + else + cten=${card}00 + body=`repeat $rr; echo "⚡ +1000"` + img="bafkreieh2j3nbnetmux5xaid7iefv2vfgsjwkx5bx66ce6h35rq2oebo54" + desc="+$cten (+${card_yui_ten})" + title=`echo $j|jq -r .h` + title="[${title}・技]" + fi + fi + fi + + if [ $card -eq 89 ];then + if [ "`card_kyoku_check`" = "false" ];then + desc="+$cten (secret command -> /card kyoku)" + fi + if [ "`card_kyoku_check`" = "true" ];then + cten=${card}00 + body=`repeat $rr; echo "⚡ +8900 +900"` + img="bafkreihgubbbwcsvpl6hj5h4ijfzqy5yyqpvjsqkry4rtjs7rcjjqzun5a" + desc="+$cten (+${card_kyoku_ten})" + title=`echo $j|jq -r .h` + title="[${title}・極]" + fi + if [ "`card_kyoku_check`" = "origin" ];then + cten=${card}00 + body=`repeat $rr; echo "⚡⚡ +8900 +900 +1500"` + img="bafkreihgubbbwcsvpl6hj5h4ijfzqy5yyqpvjsqkry4rtjs7rcjjqzun5a" + desc="+$cten (+${card_kyoku_ten})" + title=`echo $j|jq -r .h` + title="[${title}・極]" + fi + fi + + if [ $card -eq 22 ];then + if [ "`card_son_check 22`" = "true" ];then + cten=${card}00 + body=`repeat $rr; echo "🔸 +2200"` + img="bafkreiatrky4ilyvdt6gib33obof6rdrvqyt363z5wrjg6b5nzn6sgqsge" + desc="+$cten (+${card_yui_ten})" + title=`echo $j|jq -r .h` + title="[${title}・技]" + fi + fi + + if [ $card -eq 60 ] || [ $card -eq 14 ];then + if [ `card_chou_check` -ne 0 ];then + cten=${card}00 + card_chou_check=`card_chou_check` + rr=$(($card_chou_check * 1400)) + body=`echo "⚡ +${rr}"` + img=bafkreighntijp47dejknvtrxbqocsy542vgpxcb3zaqxpc2vc52hy7bkw4 + desc="+$cten (+${card_chou_ten})" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + if [ $card -eq 14 ];then + img="bafkreig7qapoudilekw6bxfkj3in3owjhh2v23rx7abbgnszvkxi5dqbly" + fi + fi + + if [ $card -eq 76 ];then + if [ "`card_yui_check`" = "true" ];then + cten=${card}00 + card_chou_check=`card_chou_check` + body=`echo "⚡ +???"` + img=bafkreicmeuljtkl3jx4toudpuxagvjpdcgflhuwhbe3vh4e4fnlruawfyy + desc="+$cten (+???)" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + fi + + if [ $card -eq 77 ];then + if [ "`card_yui_check`" = "true" ];then + cten=${card}00 + card_chou_check=`card_chou_check` + body=`echo "⚡ +???"` + img="bafkreiarpxioqr5ulnwvukin6qrv5gyyymsggv255oc7wmfedsqpah4qcy" + desc="+$cten (+???)" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + fi + + if [ $card -eq 78 ];then + if [ "`card_yui_check`" = "true" ];then + cten=${card}00 + body=`echo "⚡ +???"` + img="bafkreicbiujlv6hiluzc5db25j5phg7u2m2pu5h4qinxnpizq226n4hbae" + desc="+$cten (+???)" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + fi + + if [ $card -eq 9 ] && [ $model_attack -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + cten=${card}00 + model_ten=$((model_attack * 10)) + body=`echo "🎮 x${model_ten}"` + img="bafkreibrrikzsexsktw3xov2jts7zfwusnjnhjudqryj5v4flffpf3hxaq" + desc="+$cten (x${model_ten})" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + + if [ $card -eq 2 ] && [ $model_mode -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + cten=${card}00 + model_ten=$((model_mode * 10)) + body=`echo "🎮 x${model_ten}"` + img="bafkreigosm3kxxkgyoxxapufcxn2uulqnj2lgrwsfccimmwafhulztqrhu" + desc="+$cten (x${model_ten})" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + + if [ $card -eq 3 ] && [ $model_skill -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + cten=${card}00 + model_ten=$((model_skill * 10)) + body=`echo "🎮 x${model_ten}"` + img="bafkreiagpsr6dcr3zs3365yesm5deydlalarojbdx3fhbadbz64gznanzu" + desc="+$cten (x${model_ten})" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + + if [ $card -eq 7 ] && [ $model_limit -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + cten=${card}00 + model_ten=$((model_limit * 10)) + body=`echo "🎮 x${model_ten}"` + img="bafkreianbnrsuerymlddh3lsxqzp7h33aifj5owofme34q2ilhliuippze" + desc="+$cten (x${model_ten})" + title=`echo $j|jq -r .h` + title="[${title}]" + fi + + link="https://card.syui.ai/${username}" + text=`echo "$title +${cten}\n$body\nten : $ten_su\n$ten_kai : $old_ten_char ---> $ten_char $ten_yak_ok"` + tmp_atr=`$atr reply-og "$text" --cid $cid --uri $uri --img $img --title "$title" --description "$desc" --link $link` + ten_shutdown +} + +function ten_plus() { + ten_shutdown + ten_kai=$((ten_kai + 1)) + ten_su=$((ten_su + $1)) + + if [ $((RANDOM % 6)) -eq 0 ];then + model_rr=true + else + model_rr=false + fi + if [ $card -eq 9 ] && [ $model_attack -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + card_yui_ten=$((card * 100 * 10 * $model_attack)) + ten_su=$((card_yui_ten + ten_su)) + fi + + if [ $card -eq 2 ] && [ $model_mode -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + card_yui_ten=$((card * 100 * 10 * $model_mode)) + ten_su=$((card_yui_ten + ten_su)) + fi + + if [ $card -eq 3 ] && [ $model_skill -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + card_yui_ten=$((card * 100 * 10 * $model_skill)) + ten_su=$((card_yui_ten + ten_su)) + fi + + if [ $card -eq 7 ] && [ $model_limit -ge 1 ] && [ $model = "true" ] && [ $model_rr = "true" ];then + card_yui_ten=$((card * 100 * 10 * $model_limit)) + ten_su=$((card_yui_ten + ten_su)) + fi + + if [ $card -eq 22 ];then + if [ "`card_son_check 22`" = "true" ];then + rr=$(($RANDOM % 6 + 1)) + card_yui_ten=$((2200 * rr)) + ten_su=$((card_yui_ten + ten_su)) + fi + fi + + if [ $card -eq 36 ];then + if [ "`card_yui_check`" = "true" ];then + if [ "`moon_check`" = "true" ];then + rr=$(($RANDOM % 5 + 1)) + card_yui_ten=$((10000 * rr)) + ten_su=$((card_yui_ten + ten_su)) + else + rr=$(($RANDOM % 5 + 1)) + card_yui_ten=$((1000 * rr)) + ten_su=$((card_yui_ten + ten_su)) + fi + fi + fi + + if [ $card -eq 89 ];then + if [ "`card_kyoku_check`" = "true" ];then + rr=$(($RANDOM % 5 + 1)) + card_kyoku_ten=$((9800 * rr)) + ten_su=$((card_kyoku_ten + ten_su)) + fi + if [ "`card_kyoku_check`" = "origin" ];then + rr=$(($RANDOM % 7 + 1)) + card_kyoku_ten=$((11300 * rr)) + ten_su=$((card_kyoku_ten + ten_su)) + fi + fi + + if [ $card -eq 60 ] || [ $card -eq 14 ];then + if [ `card_chou_check` -ne 0 ];then + card_chou_check=`card_chou_check` + rr=$(($card_chou_check * 2400)) + ten_su=$((rr + ten_su)) + fi + fi + + if [ $card -eq 76 ];then + if [ "`card_yui_check`" = "true" ];then + rr=$(($RANDOM % 10000 + 700)) + ten_su=$((rr + ten_su)) + fi + fi + + if [ $card -eq 77 ];then + if [ "`card_yui_check`" = "true" ];then + rr=$(($RANDOM % 20000 + 700)) + ten_su=$((rr + ten_su)) + fi + fi + + if [ $card -eq 78 ];then + if [ "`card_yui_check`" = "true" ];then + rr=$(($RANDOM % 30000 + 700)) + ten_su=$((rr + ten_su)) + fi + fi + + ten_char + + char_a=`echo $ten_char|cut -b 1` + char_b=`echo $ten_char|cut -b 2` + char_c=`echo $ten_char|cut -b 3` + + if [ "$char_a" = "A" ] && [ "$char_b" = "A" ] && [ "$char_c" = "A" ];then + ten_char=OSZ + fi + if [ "$char_a" = "A" ] && [ "$char_b" = "A" ];then + ten_char=EMY + fi + if [ "$char_a" = "A" ] && [ "$char_b" = "I" ];then + ten_char=KUY + fi + if [ $card -eq 1 ] && [ $ran_cm -eq 0 ];then + ten_char=IKY + fi + if [ $card -eq 1 ] && [ $ran_cm -eq 1 ];then + ten_char=KOS + fi + if [ $card -eq 2 ] && [ $ran_cm -eq 0 ];then + ten_char=AWZ + fi + if [ $card -eq 3 ] && [ $ran_cm -eq 0 ];then + ten_char=AIT + fi + if [ $card -eq 5 ] && [ $ran_cm -eq 0 ];then + ten_char=AAM + fi + if [ $card -eq 7 ] && [ $ran_cm -eq 0 ];then + ten_char=AAA + fi + if [ $card -eq 7 ] && [ $ran_cm -eq 1 ];then + ten_char=ACC + fi + if [ $card -eq 12 ] && [ $ran_cm -eq 0 ];then + ten_char=OSZ + fi + if [ $card -eq 29 ] && [ $ran_cm -eq 0 ];then + ten_char=OSZ + fi + if [ $card -eq 36 ] && [ $ran_cm -eq 0 ];then + ten_char=IKT + fi + if [ $card -eq 14 ] && [ $((RANDOM % 2)) -eq 1 ];then + ten_char=ACH + fi + if [ $card -eq 36 ] && [ $((RANDOM % 2)) -eq 1 ];then + ten_char=CHO + fi + if [ $card -eq 13 ] && [ $((RANDOM % 2)) -eq 1 ];then + ten_char=AIS + fi + if [ $card -eq 46 ] && [ $((RANDOM % 2)) -eq 1 ];then + ten_char=YUI + fi + if [ $card -eq 67 ] && [ $((RANDOM % 3)) -eq 1 ];then + ten_char=IIK + fi + if [ $card -eq 76 ] && [ $((RANDOM % 2)) -eq 1 ];then + ten_char=AAC + fi + if [ $card -eq 77 ] && [ $((RANDOM % 3)) -eq 1 ];then + ten_char=AEK + fi + + ten_yak_check $ten_char + + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_post\": \"$ten_char\", \"ten_kai\":$ten_kai,\"ten_su\":$ten_su, \"token\":\"$token\"}" -s $host/users/$uid` + + #if [ $ran_z -eq 1 ] && [ $card -ne 0 ] && [ -n "$card" ];then + if [ `$((RANDOM % 5))` -eq 1 ] && [ $card -eq 1 ] && [ "`card_ar_check`" = "false" ];then + echo "$ten_kai : $ten_su ---> $ten_char $ten_yak_ok" + skill=3d + st=3d + cp=${card}00 + cp=$(($RANDOM % 1200 + 200)) + echo "[card] ---> 20%" + echo "id:${card}" + echo "status: ${st}" + echo "skill:${skill}" + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$st\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $host/cards` + fi + + if [ $card -ne 0 ] && [ -n "$card" ];then + card_post + else + echo "$ten_kai : $ten_su ---> $ten_char $ten_yak_ok" + ten_shutdown + #ten_data_reset + fi + exit +} + +function ten_main() { + ten_shutdown + ten_kai=$((ten_kai + 1)) + ten_su=$((ten_su - $1)) + old_ten_char=$ten_char + ten_char + ten_yak_check $ten_char + echo "$ten_kai : $ten_su ---> $ten_char $ten_yak_ok" + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_post\": \"$ten_char\", \"ten_kai\":$ten_kai,\"ten_su\":$ten_su, \"token\":\"$token\"}" -s $host/users/$uid` + echo "$ten_kai : $ten_su" + #ten_data_reset + exit +} + +function ten_check() { + if [ $ten_kai -ge 7 ];then + ten_shutdown + exit + fi +} + +function ten_yak() { + if [ $ten_kai -ge 7 ];then + ten_shutdown + exit + fi + + char_a=`echo $ten_post|cut -b 1` + char_b=`echo $ten_post|cut -b 2` + char_c=`echo $ten_post|cut -b 3` + + case $ten_post in + + EMY) + card=1 + ten_plus ${card}00 + ;; + KOS) + card=2 + ten_plus ${card}00 + ;; + CHI) + card=3 + ten_plus ${card}00 + ;; + AIT) + card=4 + ten_plus ${card}00 + ;; + OYZ) + card=5 + ten_plus ${card}00 + ;; + IKY) + card=6 + ten_plus ${card}00 + ;; + AKM) + card=7 + ten_plus ${card}00 + ;; + KUY) + card=8 + ten_plus ${card}00 + ;; + AW*) + card=9 + ten_plus ${card}00 + ;; + AHK) + card=10 + ten_plus ${card}00 + ;; + IKT) + card=11 + ten_plus ${card}00 + ;; + AAM) + card=12 + ten_plus ${card}00 + ;; + OSZ) + card=13 + ten_plus ${card}00 + ;; + CHO) + card=14 + ten_plus ${card}00 + ;; + ETU) + card=86 + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + ETW) + card=89 + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + OUY) + card=29 + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + AAA) + card=30 + if `ten_skill $ten_post`;then + ten_plus 300 + fi + ;; + AIK) + card=33 + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + AIS) + card=22 + if `ten_skill_yui $ten_post`;then + ten_plus ${card}00 + fi + ;; + YUI) + card=36 + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + ACH) + card=60 + if `ten_skill_yui $ten_post`;then + ten_plus ${card}00 + fi + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + TUY) + card=64 + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + IIK) + card=46 + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + EKS) + card=67 + if `ten_skill_yui $ten_post`;then + ten_plus ${card}00 + fi + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + IOU) + card=69 + if `ten_skill_yui $ten_post`;then + ten_plus ${card}00 + fi + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + ACC) + card=76 + if `ten_skill_yui $ten_post`;then + ten_plus ${card}00 + fi + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + AAC) + card=77 + if `ten_skill_yui $ten_post`;then + ten_plus ${card}00 + fi + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + AEK) + card=78 + if `ten_skill_yui $ten_post`;then + ten_plus ${card}00 + fi + if `ten_skill $ten_post`;then + ten_plus ${card}00 + fi + ;; + esac + + unset card + + if [ "$ten_post" = "AAA" ];then + echo "[揃] +100" + ten_plus 100 + fi + + if [ "$char_a" = "A" ] && [ "$char_b" = "I" ];then + echo "[名] +150" + ten_plus 150 + fi + + if [ "$char_a" = "$char_b" ] && [ "$char_c" = "$char_b" ];then + echo "[揃] +100" + ten_plus 100 + fi + + if [ "$char_a" = "$char_b" ];then + echo "[通] +50" + ten_plus 50 + fi + + case $ten_post in + *) + echo "[空] -300" + ten_main 300 + ;; + esac +} + +function ten_delete_get() { + if [ $ten_kai -ge 7 ];then + exit + fi + char_a=`echo $ten_post|cut -b 1` + char_b=`echo $ten_post|cut -b 2` + char_c=`echo $ten_post|cut -b 3` + ten_kai=$((ten_kai + 1)) + old_ten_char=$ten_char + case $sub_option in + 1) + ten_char_one + ten_char=`echo "${char_b}\n${char_c}\n${ten_char_one}"|head -n 3|sort|tr -d '\n'` + ;; + 2) + ten_char_one + ten_char=`echo "${char_a}\n${char_c}\n${ten_char_one}"|head -n 3|sort|tr -d '\n'` + ;; + 3) + ten_char_one + ten_char=`echo "${char_a}\n${char_b}\n${ten_char_one}"|head -n 3|sort|tr -d '\n'` + ;; + all|a|*) + ten_char + ;; + esac + if [ ${#ten_char} -eq 1 ];then + ten_char=AA${ten_char} + fi + if [ ${#ten_char} -eq 2 ];then + ten_char=A${ten_char} + fi + ten_yak_check $ten_char + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_post\": \"$ten_char\", \"ten_kai\":$ten_kai, \"token\":\"$token\"}" -s $host/users/$uid` + ten_yak_check $ten_char + echo "$ten_kai : $ten_su ---> $ten_char $ten_yak_ok $miss" + + ten_yak_check $ten_char + if [ -n "$ten_yak_ok" ] && [ $ten_kai -ge 7 ];then + ten_yak_shutdown + fi +} + +case "$option" in + reset*) + user_env + ten_user_reset + ten_data_reset + exit + ;; + pay) + $card_pay $handle $did $cid $uri + exit + ;; + stop|close) + user_env + ten_env + ten_user_stop + exit + ;; + y*) + ten_yaku + exit + ;; + u*) + ten_data_reset + exit + ;; + h*|"") + echo "$help_body" + exit + ;; +esac + +user_env + +case "$option" in + p*) + ten_env + ten_yak + ;; + d*) + ten_env + ten_yak_check $ten_char + ten_delete_get + ;; + start) + ten_char + ten_start + exit + ;; + *) + echo "no option" + exit + ;; +esac + +ten_shutdown +exit diff --git a/scpt/api_ten_auto.zsh b/scpt/api_ten_auto.zsh new file mode 100755 index 0000000..c5c9362 --- /dev/null +++ b/scpt/api_ten_auto.zsh @@ -0,0 +1,183 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +card_pay=$HOME/.config/atr/scpt/card_pay.zsh +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai +host_card=https://card.syui.ai/json/card.json +host_card_json=`curl -sL $host_card` +n_cid=$HOME/.config/atr/txt/tmp_notify_cid.txt +f_cfg=$HOME/.config/atr/txt/tmp_ten_config.txt +handle=$1 +did=$2 +username=`echo $1|cut -d . -f 1` +cid=$3 +uri=$4 + +if [ ! -f $f_cfg ];then + echo $host_card_json |jq -r ".[]|select(.ten != null)|.ten" |tr -d '\n' >! $f_cfg +fi + +if [ -f $f_cfg ];then + nn=`cat $f_cfg|wc -c` +fi + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +function ten_yak() { + unset ran_a + unset ran_b + unset ran_c + unset ten_new + unset ten_yaku + + ran_a=$(($RANDOM % nn)) + ran_b=$(($RANDOM % nn)) + ran_c=$(($RANDOM % nn)) + + ten_new=0 + + char_a=`cat $f_cfg| cut -c $ran_a` + char_b=`cat $f_cfg| cut -c $ran_b` + char_c=`cat $f_cfg| cut -c $ran_c` + ten_char=`echo "${char_a}\n${char_b}\n${char_c}"|head -n 3|sort|tr -d '\n'` + if [ ${#ten_char} -eq 0 ];then + ten_char=AAA + fi + if [ ${#ten_char} -eq 1 ];then + ten_char=AA${ten_char} + fi + if [ ${#ten_char} -eq 2 ];then + ten_char=A${ten_char} + fi + + char_a=`echo $ten_char|cut -b 1` + char_b=`echo $ten_char|cut -b 2` + char_c=`echo $ten_char|cut -b 3` + + case $ten_char in + + EMY) + card=1 + ;; + KOS) + card=2 + ;; + CHI) + card=3 + ;; + AIT) + card=4 + ;; + OYZ) + card=5 + ;; + IKY) + card=6 + ;; + AKM) + card=7 + ;; + KUY) + card=8 + ;; + AW*) + card=9 + ;; + AHK) + card=10 + ;; + IKT) + card=11 + ;; + AAM) + card=12 + ;; + OSZ) + card=13 + ;; + CHO) + card=14 + ;; + *) + card=0 + ;; + esac + + ten_new=${card}00 + + if [ $ten_new -eq 0 ];then + ten_new=0 + else + ten_yaku="[$ten_char]" + fi + + if [ "$ten_char" = "AAA" ];then + ten_new=100 + fi + + if [ "$char_a" = "A" ] && [ "$char_b" = "I" ] && [ $ten_new -ne 0 ];then + ten_new=150 + fi + + if [ "$char_a" = "$char_b" ] && [ $ten_new -ne 0 ];then + ten_new=50 + fi + + echo "[$i] $ten_su $ten_yaku+$ten_new" + ten_su=$((ten_su + ten_new)) +} + +function user_env() { + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + ten_data=`echo $all_data|jq ".|sort_by(.ten_su)|reverse|.[]|select(.ten_su != 0)"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + uid=`echo $data|jq -r .id` + aiten=`echo $data|jq -r .aiten` + ten_post=`echo $data|jq -r .ten_post` + ten_bool=`echo $data|jq -r .ten` + day_at=`date +"%Y%m%d"` + nd=`date +"%Y%m%d" -d '1 days ago'` + ten_at_n=`date --iso-8601=seconds` + limit_reset_at=`date --iso-8601=seconds -d '1 days ago'` + d=`date +"%Y-%m-%d"` + ten_at=`echo $data|jq -r .ten_at` + ten_at=`date -d "$ten_at" +"%Y-%m-%d"` + ten_kai=`echo $data|jq -r .ten_kai` + if [ "$d" = "$ten_at" ];then + echo "limit aiten" + exit + fi + ten_kai=`echo $data|jq -r .ten_kai` +} + +function ten_shutdown(){ + ten_kai=0 + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + ten=`echo $((ten_su + 200))` + ten_su=$ten + aiten=`echo $((aiten + ten_su))` + echo "+100" + echo "---" + echo user : $handle + echo ten : $ten + echo aiten : + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"ten_kai\":$ten_kai, \"ten_su\":$ten_su, \"ten\": false, \"token\":\"$token\", \"ten_at\" : \"$ten_at_n\", \"aiten\": $aiten}" -s $host/users/$uid` +} + +user_env + +for ((i=1;i<=7;i++)) +do + ten_yak +done + +ten_shutdown + +exit diff --git a/scpt/api_ten_su_reset.zsh b/scpt/api_ten_su_reset.zsh new file mode 100755 index 0000000..f614591 --- /dev/null +++ b/scpt/api_ten_su_reset.zsh @@ -0,0 +1,31 @@ +#!/bin/zsh +host=https://api.syui.ai +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +function ten_su_reset() { + ten_data=`curl -sL "$host/users?itemsPerPage=3000"|jq ".|sort_by(.ten_su)|reverse|.[]|select(.ten_su != 0)"` + ten_u_tmp=`echo $ten_data|jq -s` + ten_n_tmp=`echo $ten_u_tmp|jq "length"` + ten_n_tmp=$((ten_n_tmp - 1)) + #ten_n_tmp=5 + for ((i=0;i<$ten_n_tmp;i++)) + do + u_i=`echo $ten_u_tmp|jq -r ".[$i].id"` + u_a=`echo $ten_u_tmp|jq -r ".[$i].username"` + u_s=`echo $ten_u_tmp|jq -r ".[$i].ten_su"` + echo "---" + echo "id : $u_i" + echo "user : $u_a" + echo "ten : $u_s" + curl -X PATCH -H "Content-Type: application/json" -d "{\"ten\": false,\"token\":\"$token\", \"ten_su\": 0}" -s $host/users/$u_i + done +} + +ten_su_reset diff --git a/scpt/arch.zsh b/scpt/arch.zsh new file mode 100755 index 0000000..b837945 --- /dev/null +++ b/scpt/arch.zsh @@ -0,0 +1,79 @@ +#!/bin/zsh + +home=/home/syui +name=arch +a=$home/$name + +function arch_in(){ + mkdir -p $a + sudo pacstrap -c $a base + #sudo echo pts/0 >> $a/etc/securetty + #sudo echo pts/1 >> $a/etc/securetty + sudo rm -rf /var/lib/machines/$name + sudo rm -rf /var/lib/machines/${name}back + sudo mv $a /var/lib/machines/ + sudo machinectl clone arch archback +} + +function arch_rm(){ + sudo machinectl remove $name +} + +function arch_up(){ + sudo machinectl poweroff $name > /dev/null 2>&1 + sleep 5 + sudo machinectl terminate $name > /dev/null 2>&1 + sleep 5 + sudo machinectl start ${name}back + sleep 5 + ssh ${name}back pacman -Syu --noconfirm + sleep 5 + sudo machinectl poweroff ${name}back +} + +function arch_st(){ + sudo machinectl start $name +} + +function arch_of(){ + sudo machinectl poweroff $name +} + +function arch_ex(){ + sudo machinectl shell $name + $1 + poweroff +} + +function arch_re(){ + sudo machinectl poweroff $name > /dev/null 2>&1 + sleep 5 + sudo machinectl terminate $name > /dev/null 2>&1 + sleep 5 + sudo machinectl remove $name + sleep 5 + sudo machinectl clone ${name}back $name + sleep 5 + sudo machinectl start $name +} + +case "$1" in + "update"|"-u") + arch_up + arch_re + echo "machinectl update done" + ;; + "reset"|"-r") + arch_re + echo "machinectl reset done" + ;; + *) + sudo machinectl start $name + t=`ssh $name "$*"` + if [ -z "$t" ];then + ssh -tt $name "$*" + else + echo "$t" + fi + ;; +esac diff --git a/scpt/at_img.zsh b/scpt/at_img.zsh new file mode 100755 index 0000000..fee5a65 --- /dev/null +++ b/scpt/at_img.zsh @@ -0,0 +1,21 @@ +#!/bin/zsh + +dir=${0:a:h} +f=$HOME/.config/atr/scpt/png/t.png +f_sleep=$HOME/.config/atr/scpt/png/sleep + +cid=$1 +uri=$2 +if [ ! -f $f ];then + atr r "limit 1 day" -c $cid -u $uri + exit +fi +if [ -f $f_sleep ];then + link=bafkreidgp2cl4cvkn3i4gzqj6kfiwngjjh5ie2jwobh632jh4ejlbiwdhm + atr img-post "#nyancat" -l $link -c $cid -u $uri + rm $f_sleep + exit +fi + +link=`atr img-upload $f|jq -r .blob.ref.'"$link"'` +atr img-post "#stablediffusion" -l $link -c $cid -u $uri diff --git a/scpt/at_search.zsh b/scpt/at_search.zsh new file mode 100755 index 0000000..533c22e --- /dev/null +++ b/scpt/at_search.zsh @@ -0,0 +1,21 @@ +#!/bin/zsh +d=${0:a:h:h} +url="search.bsky.social/search/posts?q=" +q=`echo $*|tr ' ' '+'` +url="${url}${q}" + +t=`curl -sL "$url"` +echo $t +n=`echo $t|jq "length"` +n=`expr $n - 1` +for ((i=0;i<=$n;i++)) +do + did=`echo $t|jq -r ".[$i].user.did"` + text=`echo $t|jq -r ".[$i].post.text"` + tid=`echo $t|jq -r ".[$i].tid"` + if [ "$text" != "null" ];then + echo $did + echo $text + echo https://$tid + fi +done diff --git a/scpt/bluesky.zsh b/scpt/bluesky.zsh new file mode 100755 index 0000000..4da2207 --- /dev/null +++ b/scpt/bluesky.zsh @@ -0,0 +1,24 @@ +#!/bin/zsh +d=${0:a:h} +dd=${0:a:h:h}/json +#https://github.com/bluesky-social/atproto/issues/597 +host=bsky.social +base=https://$host/xrpc +handle=`cat ~/.config/atr/token.json| jq -r .handle` +token=`cat ~/.config/atr/token.json| jq -r .accessJwt` +if [ -n "$1" ];then + url=$base/$1 +else + url="$base/app.bsky.actor.getProfile?actor=$handle" +fi + +curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url | jq . >! $dd/profile.json +cat $dd/profile.json + +url=$base/app.bsky.feed.getTimeline +curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url | jq . >! $dd/timeline.json +cat $dd/timeline.json + +url=$base/app.bsky.notification.listNotifications +curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url | jq . >! $dd/notify.json +cat $dd/notify.json|jq . diff --git a/scpt/bot_card.zsh b/scpt/bot_card.zsh new file mode 100755 index 0000000..27bcc7e --- /dev/null +++ b/scpt/bot_card.zsh @@ -0,0 +1,39 @@ +#!/bin/zsh + +host_at=bsky.social +url_at=https://$host_at/xrpc/com.atproto.repo.listRecords +scpt=$HOME/.config/atr/scpt/api_card.zsh + +handle=skychan.social +did=did:plc:7hgow77uky7lgbinwyvbzhar +f=$HOME/.config/atr/card_bot.txt +touch $f + +n=5 +for ((i=0;i<=$n;i++)) +do + echo $i + cid=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post" |jq -r ".[]|.[$i]?|.cid"` + uri=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post" |jq -r ".[]|.[$i]?|.uri"` + t=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post" |jq -r ".[]|.[$i]?|.value.text"` + echo $t $cid $uri + if [ "@yui.syui.ai /card" = "$t" ];then + if [ "$cid" = "`cat $f`" ];then + exit + fi + card=`$scpt $handle $did` + link="https://card.syui.ai/skychan" + ~/.cargo/bin/atr r "$card" -c $cid -u "$uri" -l "$link" + echo $cid >! $f + fi + if [ "@yui.syui.ai /card -b" = "$t" ];then + if [ "$cid" = "`cat $f`" ];then + exit + fi + card=`$scpt $handle $did -b` + link="https://card.syui.ai/skychan" + ~/.cargo/bin/atr r "\n$card" -c $cid -u "$uri" -l "$link" + echo $cid >! $f + fi +done +exit diff --git a/scpt/bot_kawaii.zsh b/scpt/bot_kawaii.zsh new file mode 100755 index 0000000..e09abbb --- /dev/null +++ b/scpt/bot_kawaii.zsh @@ -0,0 +1,60 @@ +#!/bin/zsh + +d=$HOME/.config/atr/txt +mkdir -p $d +f=$d/kawaii.txt + +function test_post() { + host_at=bsky.social + url_at=https://$host_at/xrpc/com.atproto.repo.listRecords + handle=lilly-niyu.bsky.social + n=10 + for ((i=0;i<=$n;i++)) + do + echo $i + cid=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post" |jq -r ".[]|.[$i]?|.cid"` + uri=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post" |jq -r ".[]|.[$i]?|.uri"` + t=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post" |jq -r ".[]|.[$i]?|.value.text"` + echo $t $cid $uri + if [ "かわいいにゃ〜!!" = "$t" ];then + #atr r "楽しそう!アイもまぜてよ" -c $cid -u "$uri" + fi + done +} + +#uri=at://$did/$tid +#{ +# "tid": "app.bsky.feed.post/3judrtmxuin2b", +# "cid": "bafyreibebbn7og5dgvvegcjlh357pnrpuvvinbjeaqbfvqb4jsrpbsw3di", +# "user": { +# "did": "did:plc:hodycxjeqfxtest2ilj47j7g", +# "handle": "lilly-niyu.bsky.social" +# }, +# "post": { +# "createdAt": 1682587582509000000, +# "text": "かわいいにゃ〜!!", +# "user": "lilly-niyu.bsky.social" +# } +#} + +url="search.bsky.social/search/posts?q=かわいいにゃ〜!!" +q=`echo $*|tr ' ' '+'` +url="${url}${q}" + +t=`curl -sL "$url"` +cid=`echo $t|jq -r ".[1].cid"` +did=`echo $t|jq -r ".[1].did"` +tid=`echo $t|jq -r ".[1].tid"` +uri="at://$did/$tid" +text=`echo $t|jq -r ".[1].post.text"` + +touch $f + +echo $text +if [ "かわいいにゃ〜!!" = "$text" ] && [ "`cat $f`" != "$cid" ];then + echo ok + atr r "楽しそう!アイもまぜてよ" -c $cid -u "$uri" + echo $cid >! $f +else + echo no +fi diff --git a/scpt/bot_list.zsh b/scpt/bot_list.zsh new file mode 100755 index 0000000..24808b9 --- /dev/null +++ b/scpt/bot_list.zsh @@ -0,0 +1,79 @@ +#!/bin/zsh + +url_plc="https://plc.directory/export" +host_at=bsky.social +url=https://plc.directory +url_at=https://$host_at/xrpc/com.atproto.repo.listRecords +dir=$HOME/.config/atr/txt +file=$dir/bot_list.txt +unset timed + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +if [ -z "$1" ];then + exit +fi + +if ! echo $1|grep "." >/dev/null 2>&1;then + echo "ex : user syui.bsky.social" + exit +fi + +if [ ! -d $dir ];then + mkdir -p $dir +fi + +if [ ! -f $file ];then + touch $file +fi + +function mfile() { + t=`cat $file|sort|uniq` + if [ -n "$t" ];then + echo "$t" >! ${file}.back + mv ${file}.back $file + fi +} + +function plc(){ + if cat $file|grep "$1" >/dev/null 2>&1;then + cat $file|grep "$1" + exit + fi + json_tmp=`curl -sL "${url_plc}?after=${timed}"|jq .` + json=`echo $json_tmp|jq "select(.operation.handle == \"$1\")"` + if [ -z "$json" ];then + check=`echo $json_tmp|jq -r ".operation.alsoKnownAs"|head -n 1` + if [ "null" != "$check" ];then + json=`echo $json_tmp|jq "select(.operation.alsoKnownAs|.[] == \"at://$1\")"` >/dev/null 2>&1 + fi + fi + if [ -n "$json" ];then + created_at=`echo $json|jq -r .createdAt |tail -n 1` + fi + if [ -n "$created_at" ];then + echo "$created_at : $1" + echo "$created_at : $1" >> $file + mfile + exit + fi +} + +if [ "$1" = "-l" ];then + mfile + cat $file + exit +fi + +for ((i=0;i<=20;i++)) +do + if [ $i -eq 0 ];then + timed="1970-01-01" + fi + plc $1 + timed=`echo $json_tmp|jq -r .createdAt|tail -n 1` +done diff --git a/scpt/bsky_token.zsh b/scpt/bsky_token.zsh new file mode 100755 index 0000000..8a7fd5b --- /dev/null +++ b/scpt/bsky_token.zsh @@ -0,0 +1,29 @@ +#!/bin/zsh +d=${0:a:h} +dd=${0:a:h:h}/json +#https://github.com/bluesky-social/atproto/issues/597 +host=`cat ~/.config/atr/config.json|jq -r .host` +base=https://$host/xrpc +handle=`cat ~/.config/atr/config.json|jq -r .user` +pass=`cat ~/.config/atr/config.json|jq -r .pass` +f=~/.config/atr/token.json + +curl -X POST -H "Content-Type: application/json" -d "{\"identifier\":\"$handle\",\"password\":\"$pass\"}" https://$host/xrpc/com.atproto.server.createSession | jq . >! $f +cat $f + +if [ "$1" = "-a" ];then + handle=`cat $f| jq -r .handle` + token=`cat $f| jq -r .accessJwt` + + url="$base/app.bsky.actor.getProfile?actor=$handle" + curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url | jq . >! $dd/profile.json + cat $dd/profile.json + + url=$base/app.bsky.feed.getTimeline + curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url | jq . >! $dd/timeline.json + cat $dd/timeline.json + + url=$base/app.bsky.notification.listNotifications + curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url | jq . >! $dd/notify.json + cat $dd/notify.json|jq . +fi diff --git a/scpt/card_box.zsh b/scpt/card_box.zsh new file mode 100755 index 0000000..311d0b9 --- /dev/null +++ b/scpt/card_box.zsh @@ -0,0 +1,40 @@ +#!/bin/zsh + +echo "not open" +exit + +atr=$HOME/.cargo/bin/atr +url_j=https://card.syui.ai/json/card.json +tcid=$HOME/.config/atr/txt/tmp_notify_cid.txt + +handle=$1 +did=$2 +cid=$3 +uri=$4 + +if [ ! -d $HOME/.config/atr/txt ];then + mkdir -p $HOME/.config/atr/txt +fi + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +url=https://api.syui.ai +username=`echo $1|cut -d . -f 1` +link=https://card.syui.ai/$username +ran=$(($RANDOM % 10)) + +if [ $ran -eq 1 ];then + uranai="今日の運勢をルーン占いでやってください。結果を120文字以内で教えてください" +else + uranai="今日の運勢をタロット占いでやってください。結果を120文字以内で教えてください" +fi + +body=`$atr chat "$uranai" -c` +if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid +fi +exit diff --git a/scpt/card_fortune.zsh b/scpt/card_fortune.zsh new file mode 100755 index 0000000..c7fd860 --- /dev/null +++ b/scpt/card_fortune.zsh @@ -0,0 +1,161 @@ +#!/bin/zsh + +atr=$HOME/.cargo/bin/atr +url_j=https://card.syui.ai/json/card.json +tcid=$HOME/.config/atr/txt/tmp_notify_cid.txt + +handle=$1 +did=$2 +cid=$3 +uri=$4 + +if [ ! -d $HOME/.config/atr/txt ];then + mkdir -p $HOME/.config/atr/txt +fi + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +url=https://api.syui.ai +username=`echo $1|cut -d . -f 1` +link=https://card.syui.ai/$username +ran=$(($RANDOM % 10)) + +if [ $ran -eq 1 ];then + uranai="今日の運勢をルーン占いでやってください。結果を120文字以内で教えてください" +else + uranai="今日の運勢をタロット占いでやってください。結果を120文字以内で教えてください" +fi + +uid=`curl -sL "$url/users?itemsPerPage=2000"|jq ".[]|select(.username == \"$username\")"|jq -r .id` + +if [ -z $uid ] || [ "$uid" = "null" ];then + body=`$atr chat "$uranai" -c` + body=`echo "占いにはアイのカードが3枚以上必要です\n\n$body"` + if [ "`cat $tcid`" != "$cid" ];then + if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid + fi + fi + exit +fi + +data=`curl -sL "$url/users/$uid"` +data_u=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` +luck_at=`echo $data|jq -r .luck_at` +luck_at_n=`date --iso-8601=seconds` +luck_at=`date -d "$luck_at" +"%Y%m%d"` +day_at=`date +"%Y%m%d"` +nd=`date +"%Y%m%d" -d '1 days ago'` + +if [ "$luck_at" = "$day_at" ];then + body=`$atr chat "$uranai" -c` + if [ "`cat $tcid`" != "$cid" ];then + if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid + fi + fi + exit +fi + +cp_i=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[].card"|sort|uniq|sed -e '1d'` +cp_n=`echo $cp_i|wc -l` + +if [ 3 -gt $cp_n ];then + body=`$atr chat "$uranai" -c` + body=`echo "占いにはアイのカードが3枚以上必要です\n\n$body"` + if [ "`cat $tcid`" != "$cid" ];then + if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid + fi + fi + exit +fi + +ran=$(($RANDOM % $cp_n + 1)) +luck=$(($RANDOM % 8)) +sub=$(($RANDOM % 15)) +card=`echo $cp_i|awk "NR==$ran"` + +if [ $sub -eq $card ];then + sub="x2" +else + sub=`curl -sL $url_j|jq -r ".[]|select(.id == $sub)|.p"` +fi +j=`curl -sL $url_j|jq ".[]|select(.id == $card)"` +img=`echo $j|jq -r .img` + +if [ -z $img ] || [ "$img" = "null" ];then + exit +fi + +test_ran=`echo $(($RANDOM % 3))` + +#text="アイ・カード占い" +case $test_ran in + 1) + text=`$atr chat "アイのカード占いを作ってやってみて。感じる答えを出して。できれば140文字以内でお願い。" -c` + ;; + 2) + text=`$atr chat "今、アイが自分で考えた占いやってみて。気分が乗らなかったらやらなくていいよ。できれば140文字以内で答えてね。" -c` + ;; + *) + text=`$atr chat "今のアイの気分で適当に占ってみて。できれば140文字以内で答えてね。" -c` + ;; +esac + +title=`echo $j|jq -r .h` +title="[${title}]" +#desc=`echo $j|jq -r .p` + +if [ 0 -eq $luck ];then + desc="0" +fi + +if [ 1 -eq $luck ];then + desc="1" +fi + +if [ 2 -eq $luck ];then + desc="2" +fi + +if [ 3 -eq $luck ];then + desc="3" +fi + +if [ 4 -eq $luck ];then + desc="4" +fi +if [ 5 -eq $luck ];then + desc="5" +fi + +if [ 6 -eq $luck ];then + desc="6" +fi + +if [ 7 -eq $luck ];then + desc="7" +fi + +desc=`echo "アイ数字は${luck}"` + +if [ "`cat $tcid`" != "$cid" ];then + if $atr reply-og "$text" --cid $cid --uri $uri --img $img --title "$title" --description "$desc" --link $link;then + echo $cid >! $tcid + fi +fi + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +if [ $luck -eq 7 ];then + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"luck_at\":\"$luck_at_n\",\"token\":\"$token\",\"luck\": $luck, \"next\": \"$nd\"}" -s $url/users/$uid` +else + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"luck_at\":\"$luck_at_n\",\"token\":\"$token\",\"luck\": $luck}" -s $url/users/$uid` +fi +exit diff --git a/scpt/card_fortune_en.zsh b/scpt/card_fortune_en.zsh new file mode 100755 index 0000000..ab2d053 --- /dev/null +++ b/scpt/card_fortune_en.zsh @@ -0,0 +1,147 @@ +#!/bin/zsh + +atr=$HOME/.cargo/bin/atr +url_j=https://card.syui.ai/json/card.json +tcid=$HOME/.config/atr/txt/tmp_notify_cid.txt + +handle=$1 +did=$2 +cid=$3 +uri=$4 + +if [ ! -d $HOME/.config/atr/txt ];then + mkdir -p $HOME/.config/atr/txt +fi + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +url=https://api.syui.ai +username=`echo $1|cut -d . -f 1` +link=https://card.syui.ai/$username +ran=$(($RANDOM % 10)) + +if [ $ran -eq 1 ];then + uranai="Please do a of today's rune-fortune. Tell us the result in 120 characters or less." +else + uranai="Please do a of today's tarot-fortune. Tell us the result in 120 characters or less." +fi + +uid=`curl -sL "$url/users?itemsPerPage=2000"|jq ".[]|select(.username == \"$username\")"|jq -r .id` + +if [ -z $uid ] || [ "$uid" = "null" ];then + body=`$atr chat "$uranai" -c` + body=`echo "At least 3 cards of the Eye are required for divination\n\n$body"` + if [ "`cat $tcid`" != "$cid" ];then + if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid + fi + fi + exit +fi + +data=`curl -sL "$url/users/$uid"` +data_u=`curl -sL "$url/users/$uid/card?itemsPerPage=2000"` +luck_at=`echo $data|jq -r .luck_at` +luck_at_n=`date --iso-8601=seconds` +luck_at=`date -d "$luck_at" +"%Y%m%d"` +day_at=`date +"%Y%m%d"` +nd=`date +"%Y%m%d" -d '1 days ago'` + +if [ "$luck_at" = "$day_at" ];then + body=`$atr chat "$uranai" -c` + if [ "`cat $tcid`" != "$cid" ];then + if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid + fi + fi + exit +fi + +cp_i=`echo $data_u |jq -r "sort_by(.cp) | reverse|.[].card"|sort|uniq|sed -e '1d'` +cp_n=`echo $cp_i|wc -l` + +if [ 3 -gt $cp_n ];then + body=`$atr chat "$uranai" -c` + body=`echo "At least 3 cards of the Eye are required for divination\n\n$body"` + if [ "`cat $tcid`" != "$cid" ];then + if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid + fi + fi + exit +fi + +ran=$(($RANDOM % $cp_n + 1)) +luck=$(($RANDOM % 8)) +sub=$(($RANDOM % 15)) +card=`echo $cp_i|awk "NR==$ran"` + +if [ $sub -eq $card ];then + sub="x2" +else + sub=`curl -sL $url_j|jq -r ".[]|select(.id == $sub)|.p"` +fi +j=`curl -sL $url_j|jq ".[]|select(.id == $card)"` +img=`echo $j|jq -r .img` + +if [ -z $img ] || [ "$img" = "null" ];then + exit +fi + +text="AI Card Fortune Telling" +title=`echo $j|jq -r .h_en` +title="[${title}]" +#desc=`echo $j|jq -r .p` + +if [ 0 -eq $luck ];then + desc="0" +fi + +if [ 1 -eq $luck ];then + desc="1" +fi + +if [ 2 -eq $luck ];then + desc="2" +fi + +if [ 3 -eq $luck ];then + desc="3" +fi + +if [ 4 -eq $luck ];then + desc="4" +fi +if [ 5 -eq $luck ];then + desc="5" +fi + +if [ 6 -eq $luck ];then + desc="6" +fi + +if [ 7 -eq $luck ];then + desc="7" +fi + +desc=`echo "lucky number ${luck}"` + +if [ "`cat $tcid`" != "$cid" ];then + if $atr reply-og "$text" --cid $cid --uri $uri --img $img --title "$title" --description "$desc" --link $link;then + echo $cid >! $tcid + fi +fi + +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +if [ $luck -eq 7 ];then + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"luck_at\":\"$luck_at_n\",\"token\":\"$token\",\"luck\": $luck, \"next\": \"$nd\"}" -s $url/users/$uid` +else + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"luck_at\":\"$luck_at_n\",\"token\":\"$token\",\"luck\": $luck}" -s $url/users/$uid` +fi +exit diff --git a/scpt/card_pay.zsh b/scpt/card_pay.zsh new file mode 100755 index 0000000..df11f56 --- /dev/null +++ b/scpt/card_pay.zsh @@ -0,0 +1,154 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai +host_card=https://card.syui.ai/json/card.json +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` +handle=$1 +username=`echo $1|cut -d . -f 1` +did=$2 +cid=$3 +uri=$4 +pay=60000 + +echo $handle + +function card_d(){ + j=`curl -sL $host_card |jq -r ".[]|select(.ten_skill == true)"|jq -s` + n=`echo $j|jq length` + n_leng=$n + n=$(($RANDOM % n - 1)) + card=`echo $j|jq -r ".[$n].id"` + img=`echo $j|jq -r ".[$n].img"` + ten=`echo $j|jq -r ".[$n].ten"` + title=`echo $j|jq -r ".[$n].h"` + title="[$title]" + ran_a=$(($RANDOM % 1000)) + cp=$((ran_a + 500)) + ran_s=$(($RANDOM % 5)) + skill=ten + if [ $ran_s -eq 1 ];then + s=super + cp=$((cp + $ran_a)) + else + s=normal + fi + #card=1;skill=3d;s=3d + + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + uid=`echo $data|jq -r .id` + aiten=`echo $data|jq -r .aiten` + model=`echo $data|jq -r .model` + model_mode=`echo $data|jq -r .model_mode` + model_attack=`echo $data|jq -r .model_attack` + model_skill=`echo $data|jq -r .model_skill` + model_limit=`echo $data|jq -r .model_limit` + model_critical=`echo $data|jq -r .model_critical` + model_critical_d=`echo $data|jq -r .model_critical_d` + ten_data=`echo $all_data|jq ".|sort_by(.aiten)|reverse|.[]|select(.aiten >= $pay)"` + + model_critical=$((RANDOM % 10 + model_critical)) + json_model="{\"model_critical\":$model_critical, \"token\":\"$token\"}" + body_d=`echo "[card]\nid : $card\ncp : $cp\nstatus : $s\nskill : $skill\n---\n[model]\ncritical : ${model_critical}%"` +} + +function card_user(){ + if [ -z "$ten_data" ] || [ -z "$aiten" ] || [ $aiten -le $pay ];then + echo "aiten : $aiten >= $pay [1/${n_leng}]" + exit + else + pay_s=$((aiten - pay)) + if [ $pay_s -lt 0 ] || [ -z "$pay_s" ];then + echo "aiten : $aiten >= $pay [1/${n_leng}]" + exit + fi + body_user=`echo "${aiten} : $aiten - $pay = $pay_s [1/${n_leng}]"` + fi +} + +function card_check(){ + data_uu=`curl -sL "$host/users/$uid/card?itemsPerPage=2000"` + card_check=`echo $data_uu|jq -r ".[]|select(.card == $card)"` + card_check_skill=`echo $card_check|jq "select(.skill == \"$skill\")"` + if [ -n "$card_check" ] && [ -n "$card_check_skill" ];then + + echo "$body_user" + echo "lost, you chose the card you already have..." + echo "ai[model] Lv up!" + + s_up=$((RANDOM % 3 + 1)) + case `echo $((RANDOM % 4))` in + 0) + model_mode=$((model_mode + s_up)) + json="{\"token\":\"$token\", \"model_mode\": $model_mode}" + echo "\"mode\": Lv${model_mode}" + ;; + 1) + model_attack=$((model_attack + s_up)) + json="{\"token\":\"$token\", \"model_attack\": $model_attack}" + echo "\"attack\": Lv${model_attack}" + ;; + 2) + model_skill=$((model_skill + s_up)) + json="{\"token\":\"$token\", \"model_skill\": $model_skill}" + echo "\"skill\": Lv${model_skill}" + ;; + 3) + model_limit=$((model_limit + s_up)) + json="{\"token\":\"$token\", \"model_limit\": $model_limit}" + echo "\"burst\": Lv${model_limit}" + ;; + *) + model_limit=$((model_limit + s_up)) + json="{\"token\":\"$token\", \"model_limit\": $model_limit}" + echo "\"burst\": Lv${model_limit}" + ;; + esac + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "$json" -s $host/users/$uid` + + card=0 + cp=1 + s=super + skill=lost + #echo "try again next time!" + + echo "[card]" + echo "id : $card" + echo "cp : $cp" + echo "skill : $skill" + if [ "$handle" != "ai" ];then + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"token\":\"$token\", \"aiten\": $pay_s}" -s $host/users/$uid` + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $host/cards` + exit + fi +} + +function card_pay(){ + link=https://card.syui.ai/$username + text=`echo "$body_user\n$body_d"` + desc="[$ten]" + if [ "$handle" != "ai" ];then + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"token\":\"$token\", \"aiten\": $pay_s, \"model_critical\": $model_critical}" -s $host/users/$uid` + else + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"token\":\"$token\", \"aiten\": 10000000, \"model_critical\": $model_critical}" -s $host/users/$uid` + echo $tmp + fi + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"card\":$card,\"status\":\"$s\",\"cp\":$cp,\"password\":\"$pass\",\"skill\":\"$skill\"}" -s $host/cards` + echo "$text" + #echo "$atr reply-og \"$text\" --cid $cid --uri $uri --img $img --title \"$title\" --description \"$desc\" --link $link" + #tmp_atr=`$atr reply-og "$text" --cid $cid --uri $uri --img $img --title "$title" --description "$desc" --link $link` +} + +card_d +card_user +card_check +card_pay diff --git a/scpt/card_tarot.zsh b/scpt/card_tarot.zsh new file mode 100755 index 0000000..16441e8 --- /dev/null +++ b/scpt/card_tarot.zsh @@ -0,0 +1,37 @@ +#!/bin/zsh + +atr=$HOME/.cargo/bin/atr +url_j=https://card.syui.ai/json/card.json +tcid=$HOME/.config/atr/txt/tmp_notify_cid.txt + +handle=$1 +did=$2 +cid=$3 +uri=$4 + +if [ ! -d $HOME/.config/atr/txt ];then + mkdir -p $HOME/.config/atr/txt +fi + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +url=https://api.syui.ai +username=`echo $1|cut -d . -f 1` +link=https://card.syui.ai/$username +ran=$(($RANDOM % 10)) + +if [ $ran -eq 1 ];then + uranai="今日の運勢をルーン占いでやってください。結果を120文字以内で教えてください" +else + uranai="今日の運勢をタロット占いでやってください。結果を120文字以内で教えてください" +fi + +body=`$atr chat "$uranai" -c` +if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid +fi +exit diff --git a/scpt/card_tarot_en.zsh b/scpt/card_tarot_en.zsh new file mode 100755 index 0000000..aea2281 --- /dev/null +++ b/scpt/card_tarot_en.zsh @@ -0,0 +1,37 @@ +#!/bin/zsh + +atr=$HOME/.cargo/bin/atr +url_j=https://card.syui.ai/json/card.json +tcid=$HOME/.config/atr/txt/tmp_notify_cid.txt + +handle=$1 +did=$2 +cid=$3 +uri=$4 + +if [ ! -d $HOME/.config/atr/txt ];then + mkdir -p $HOME/.config/atr/txt +fi + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +url=https://api.syui.ai +username=`echo $1|cut -d . -f 1` +link=https://card.syui.ai/$username +ran=$(($RANDOM % 10)) + +if [ $ran -eq 1 ];then + uranai="Please do a of today's rune-fortune. Tell us the result in 120 characters or less." +else + uranai="Please do a of today's tarot-fortune. Tell us the result in 120 characters or less." +fi + +body=`$atr chat "$uranai" -c` +if $atr r "$body" -c $cid -u $uri;then + echo $cid >! $tcid +fi +exit diff --git a/scpt/diffusers.zsh b/scpt/diffusers.zsh new file mode 100755 index 0000000..b9cc437 --- /dev/null +++ b/scpt/diffusers.zsh @@ -0,0 +1,108 @@ +#!/bin/zsh + +dir=${0:a:h} +mkdir -p $dir/png +f=$dir/png/t.png +f_sleep=$dir/png/sleep +cfg=$dir/stable_diffusion_prompt.j +cfg_did=$dir/stable_diffusion_did.txt +opt_af=$dir/stable_diffusion_a.txt +opt_bf=$dir/stable_diffusion_b.txt +opt_allf=$dir/stable_diffusion_all.txt + +if [ ! -f $cfg_did ];then + touch $cfg_did +fi + +did=$1 +admin=did:plc:uqzpqmrjnptsxezjx4xuh2mn + +if [ ! -f $cfg ];then + echo no file $cfg + exit +fi + +opt_a=`echo $@|cut -d ' ' -f 2` +opt_b=`echo $@|cut -d ' ' -f 3` + +#case "$opt_b" in +# bluesky|sky|field|girl|anime|universe|earth|bird|miku|ai|yui|card|blue|cat) +# ;; +# *) +# if [ -n "$opt_b" ] && [ "$did" != "$admin" ];then +# opt_b=nyancat +# fi +# ;; +#esac + +echo $opt_a >! $opt_af +echo $opt_b >! $opt_bf +echo $@ >! $opt_allf + +case "$opt_a" in + -p|p) + q="$opt_b , masterpiece, best quality, 8k wallpaper Highly, cinematic Lighting, cinematic Beautiful" + ;; + -t|t) + tag=$opt_b + json=`cat $cfg|jq ".[]|select(.tag == \"${tag}\")"` + if [ -z "$json" ] || [ -z "$tag" ];then + echo no tag + exit + fi + json=`echo $json|jq -s` + n=`echo $json|jq "length"` + n=$((RANDOM % n)) + q=`echo $json|jq -r ".[$n].body"` + #m=`echo $json|jq -r ".[$n].model"` + ;; + *) + n=`cat $cfg|jq "length"` + n=$((RANDOM % n)) + q=`cat $cfg|jq -r ".[$n].body"` + ;; +esac + +model_s="model +coharu +flat2d +pastelmix +pvcstyle" +model_r=$((RANDOM % `echo "$model_s"|wc -l` + 1)) +m=`echo "$model_s"|awk "NR==$model_r"` + +case $1 in + -pm) + m=$2 + q=`echo $@ | cut -d ' ' -f 3-` + ;; +esac + +if [ -z "$q" ];then + echo no prompt + exit +fi +if [ -z "$m" ];then + m=model +fi + +echo $q +echo $m + +function run(){ + if [ -f $f_sleep ];then + rm $f_sleep + fi + ssh ue "conda activate ldm;cd ./stable-diffusion/;python safe.py \'${q}\' ${m}" + scp -r ue:stable-diffusion/t.png $f + if [ $? -ne 0 ];then + touch $f_sleep + fi +} + +if [ -n "`cat $cfg_did| grep -x $did`" ] && [ "$did" != "$admin" ];then + rm $f +else + echo "\n$did" >> $cfg_did + run +fi diff --git a/scpt/dig.zsh b/scpt/dig.zsh new file mode 100755 index 0000000..c3cbe71 --- /dev/null +++ b/scpt/dig.zsh @@ -0,0 +1,7 @@ +#!/bin/zsh + +txt=_atproto.$1 +did=$2 +curl -sL plc.directory/$did/log |jq ".[]|.alsoKnownAs|.[]?" | grep -n .| head -n 4 + +dig -t TXT $txt|grep "did=did:plc:"|head -n 1 diff --git a/scpt/fan_art.zsh b/scpt/fan_art.zsh new file mode 100755 index 0000000..e2135db --- /dev/null +++ b/scpt/fan_art.zsh @@ -0,0 +1,145 @@ +#!/bin/zsh + +url_plc="https://plc.directory/export" +host_at=bsky.social +url=https://plc.directory +url_at=https://$host_at/xrpc/com.atproto.repo.listRecords +dir=$HOME/.config/atr/txt +file=$dir/user_list.txt + +opt=`echo $4|tr -d "'"` +dir_git_card_page=$HOME/git/card.syui.ai + +if [ ! -d $dir_git_card_page ];then + mkdir -p $HOME/git + cd $HOME/git + git clone https://github.com/syui/card.syui.ai +else + cd $dir_git_card_page + t=`git pull` +fi + +file_fanart=$dir_git_card_page/public/json/fanart.json +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac +created_at=`date --iso-8601=seconds` + +#if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ];then +# exit +#fi + +function fan_art_search() { + k="aifanart" + url="search.bsky.social/search/posts?q=" + t=`curl -sL "${url}${k}"|jq ".[]|select(.post.text == \"$k\")"` + #n=`curl -sL "${url}${k}"|jq length` + n=$((n - 1)) + for ((i=0;i<=$n;i++)) + do + did=`curl -sL "${url}${k}"|jq -r ".[$i]|.user.did"` + handle=`curl -sL https://plc.directory/$did|jq -r ".alsoKnownAs|.[]"|cut -d / -f 3-` + if [ -z "$handle" ];then + continue + fi + tid=`curl -sL "${url}${k}"|jq -r ".[$i]|.tid"|cut -d / -f 2` + http=https://staging.bsky.app/profile/$handle/post/$tid + echo $http + done +} + +if [ "$1" = "-s" ];then + fan_art_search + exit +fi + +if ! echo $1|grep "." >/dev/null 2>&1;then + echo "ex : user syui.bsky.social" + exit +fi + +if ! echo $2|grep "did:plc:" >/dev/null 2>&1;then + echo "ex : user did" + exit +fi + +if [ "$3" = "-l" ];then + curl -sL card.syui.ai/json/fanart.json|jq -r ".[]|.author, .link" + exit +fi + +if ! echo $3|grep -e "bsky.app/profile/" -e "nostter.vercel.app" >/dev/null 2>&1;then + echo "please url : bsky.app/profile/$1/post/xxx" + exit +fi + +if ! echo $4|grep -e "https://av-cdn.bsky.app/img" -e "https://nostr.build/i/" >/dev/null 2>&1;then + if [ "$opt" != "-d" ];then + echo "please url : av-cdn.bsky.social/img" + exit + fi +fi + +function fan_art(){ + add=$1 + did=$2 + if echo $3|grep "nostter.vercel.app" >/dev/null 2>&1;then + link=`echo $3|cut -d / -f 1-4` + else + link=$3 + fi + img=`echo $4|tr -d "'"` + author=`echo $3|cut -d / -f 5` + if [ -z "$author" ];then + author="nostr" + fi + cd $dir_git_card_page + check_null=`cat $file_fanart|jq ".[]|select(.img == \"$img\")"` + if [ -n "$check_null" ];then + echo registered + exit + fi + echo `cat $file_fanart` "[{\"add\":\"$add\",\"link\":\"$link\",\"author\":\"$author\",\"img\":\"$img\",\"created_at\":\"$created_at\",\"did\":\"$did\"}]" | jq -s add >! $file_fanart.back + if cat $file_fanart.back|jq . >/dev/null 2>&1;then + mv $file_fanart.back $file_fanart + git add $file_fanart + git commit -m "add fanart" + git push -u origin main -f + echo add fanart, thx $1 + echo "author : $author" + echo "it will take some time to deploy" + fi +} + +function fan_art_delete(){ + add=$1 + did=$2 + link=$3 + cd $dir_git_card_page + check_null=`cat $file_fanart|jq ".[]|select(.img == \"$img\")"` + if [ -n "$check_null" ];then + echo registered + exit + fi + cat $file_fanart|jq ".[]|select(.link == \"$link\")|= .+{\"delete\":true,\"delete-did\":\"$did\"}"|jq -s >! $file_fanart.back + if cat $file_fanart.back|jq . >/dev/null 2>&1;then + mv $file_fanart.back $file_fanart + git add $file_fanart + git commit -m "delete fanart" + git push -u origin main -f + echo delete fanart, thx $1 + echo "delete-did : $did" + echo "it will take some time to deploy" + fi +} + +if [ "$opt" = "-d" ];then + fan_art_delete $1 $2 $3 + exit +fi + +fan_art $1 $2 $3 $4 + +exit diff --git a/scpt/follow_all.zsh b/scpt/follow_all.zsh new file mode 100755 index 0000000..f5b0724 --- /dev/null +++ b/scpt/follow_all.zsh @@ -0,0 +1,75 @@ +#!/bin/zsh + +d=$HOME/.config/atr/txt +mkdir -p $d +unset cursor + +function page(){ + s=$1 + if [ "$s" = "ers" ];then + opt="-w" + elif [ "$s" = "s" ];then + opt="-s" + fi + + f=$d/follow${s}_${ii}.json + echo $f + if [ -n "$cursor" ];then + if [ ! -f $f ];then + atr follow $opt -c $cursor| jq . >! $f + else + echo no download + fi + else + if [ ! -f $f ];then + atr follow $opt| jq . >! $f + else + echo no download + fi + fi + cursor=`cat $f|jq -r .cursor` + + echo "------------------------------" + echo $cursor + echo "------------------------------" + n=`cat $f|jq ".follow${s}|length"` + n=`expr $n - 1` + + for ((i=0;i<=$n;i++)) + do + handle=`cat $f|jq -r ".follow${s}|.[$i].handle"` + did=`cat $f|jq -r ".follow${s}|.[$i].did"` + flg=`cat $f|jq -r ".follow${s}|.[$i].viewer.following"` + flb=`cat $f|jq -r ".follow${s}|.[$i].viewer.followedBy"` + if [ "$flg" = "null" ];then + echo following + echo $flb + echo "follow : $handle" + echo "atr follow $did" + atr follow $did + fi + if [ "$flb" = "null" ];then + rkey=${flg##*/} + echo followedBy + echo $flg + echo "unfollow : $handle" + echo "atr follow $did -d $rkey" + atr follow $did -d $rkey + fi + done +} + +ii=1 +while [ "$cursor" != "null" ] +do + page ers $ii + ii=`expr $ii + 1` +done + +unset cursor +ii=1 +while [ "$cursor" != "null" ] +do + page s $ii + ii=`expr $ii + 1` +done diff --git a/scpt/full_moon.j b/scpt/full_moon.j new file mode 100644 index 0000000..7f58f2f --- /dev/null +++ b/scpt/full_moon.j @@ -0,0 +1,126 @@ +[ +{"data":"20231003"}, +{"data":"20230107"}, +{"data":"20230122"}, +{"data":"20230206"}, +{"data":"20230220"}, +{"data":"20230307"}, +{"data":"20230322"}, +{"data":"20230406"}, +{"data":"20230420"}, +{"data":"20230506"}, +{"data":"20230520"}, +{"data":"20230604"}, +{"data":"20230618"}, +{"data":"20230703"}, +{"data":"20230718"}, +{"data":"20230802"}, +{"data":"20230816"}, +{"data":"20230831"}, +{"data":"20230915"}, +{"data":"20230929"}, +{"data":"20231015"}, +{"data":"20231029"}, +{"data":"20231113"}, +{"data":"20231127"}, +{"data":"20231213"}, +{"data":"20231227"}, +{"data":"20240111"}, +{"data":"20240126"}, +{"data":"20240210"}, +{"data":"20240224"}, +{"data":"20240310"}, +{"data":"20240325"}, +{"data":"20240409"}, +{"data":"20240424"}, +{"data":"20240508"}, +{"data":"20240523"}, +{"data":"20240606"}, +{"data":"20240622"}, +{"data":"20240706"}, +{"data":"20240721"}, +{"data":"20240804"}, +{"data":"20240820"}, +{"data":"20240903"}, +{"data":"20240918"}, +{"data":"20241003"}, +{"data":"20241017"}, +{"data":"20241101"}, +{"data":"20241116"}, +{"data":"20241201"}, +{"data":"20241215"}, +{"data":"20241231"}, +{"data":"20250114"}, +{"data":"20250129"}, +{"data":"20250212"}, +{"data":"20250228"}, +{"data":"20250314"}, +{"data":"20250329"}, +{"data":"20250413"}, +{"data":"20250428"}, +{"data":"20250513"}, +{"data":"20250527"}, +{"data":"20250611"}, +{"data":"20250625"}, +{"data":"20250711"}, +{"data":"20250725"}, +{"data":"20250809"}, +{"data":"20250823"}, +{"data":"20250908"}, +{"data":"20250922"}, +{"data":"20251007"}, +{"data":"20251021"}, +{"data":"20251105"}, +{"data":"20251120"}, +{"data":"20251205"}, +{"data":"20251220"}, +{"data":"20260103"}, +{"data":"20260119"}, +{"data":"20260202"}, +{"data":"20260217"}, +{"data":"20260303"}, +{"data":"20260319"}, +{"data":"20260402"}, +{"data":"20260417"}, +{"data":"20260502"}, +{"data":"20260517"}, +{"data":"20260531"}, +{"data":"20260615"}, +{"data":"20260630"}, +{"data":"20260714"}, +{"data":"20260729"}, +{"data":"20260813"}, +{"data":"20260828"}, +{"data":"20260911"}, +{"data":"20260927"}, +{"data":"20261011"}, +{"data":"20261026"}, +{"data":"20261109"}, +{"data":"20261124"}, +{"data":"20261209"}, +{"data":"20261224"}, +{"data":"20260103"}, +{"data":"20260119"}, +{"data":"20260202"}, +{"data":"20260217"}, +{"data":"20260303"}, +{"data":"20260319"}, +{"data":"20260402"}, +{"data":"20260417"}, +{"data":"20260502"}, +{"data":"20260517"}, +{"data":"20260531"}, +{"data":"20260615"}, +{"data":"20260630"}, +{"data":"20260714"}, +{"data":"20260729"}, +{"data":"20260813"}, +{"data":"20260828"}, +{"data":"20260911"}, +{"data":"20260927"}, +{"data":"20261011"}, +{"data":"20261026"}, +{"data":"20261109"}, +{"data":"20261124"}, +{"data":"20261209"}, +{"data":"20261224"}] diff --git a/scpt/invite.zsh b/scpt/invite.zsh new file mode 100755 index 0000000..91d83af --- /dev/null +++ b/scpt/invite.zsh @@ -0,0 +1,14 @@ +#!/bin/zsh + +admin_password=`cat $HOME/.config/atr/api_card.json|jq -r .pds_admin_password` +if [ -n "$1" ];then + host=$1 +else + host=syu.is +fi +url=https://$host/xrpc/com.atproto.server.createInviteCode +json="{\"useCount\":30}" +echo $url +echo $admin_password +#curl -X POST -u admin:${admin_password} -H "Content-Type: application/json" -d "$json" -sL $url | jq -r .code +curl -X POST -u admin:${admin_password} -H "Content-Type: application/json" -d "$json" -sL $url diff --git a/scpt/like_reply.zsh b/scpt/like_reply.zsh new file mode 100755 index 0000000..7250914 --- /dev/null +++ b/scpt/like_reply.zsh @@ -0,0 +1,40 @@ +#!/bin/zsh + +atr=$HOME/.cargo/bin/atr +host=api.syui.ai +data=`curl -sL "$host/users?itemsPerPage=3000"|jq ".|sort_by(.like)|reverse|.[]|select(.like_rank > 1)"` +tmp=`echo $data|jq -s` +n=`echo $tmp|jq "length"` +ran=$(($RANDOM % n - 1)) +echo $ran + +function did() { + user=`echo $tmp|jq -r ".[$ran].username"` + did=`echo $tmp|jq -r ".[$ran].did"` +} + +function tl(){ + did + cid=`$atr f $did|jq -r ".records|.[0].cid"` + uri=`$atr f $did|jq -r ".records|.[0].uri"` + text=`$atr f $did|jq -r ".records|.[0].value.text"` + echo $cid + echo $uri + echo $text + find=`echo $text|grep "card.syui.ai"` + find_t=`echo $text|grep "ten : "` + if [ -n "$find" ] || [ -n "$find_t" ];then + exit + fi + text=`$atr chat "$text" -c` + echo $text +} + +function reply(){ + tl + if [ -n "$text" ] && [ -n "$uri" ];then + $atr r "$text" -u $uri -c $cid + fi +} + +reply diff --git a/scpt/mastodon.zsh b/scpt/mastodon.zsh new file mode 100755 index 0000000..12cf282 --- /dev/null +++ b/scpt/mastodon.zsh @@ -0,0 +1,390 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +PATH=$PATH:$HOME/.cargo/bin +d=$HOME/.config/msr +f=$HOME/.config/msr/notify_log.txt +card=$HOME/.config/atr/scpt/api_card.zsh + +if [ ! -d $d ];then + mkdir -p $d +fi + +j=`$HOME/.cargo/bin/msr bot` + +tmp=`echo $j|jq length` +if [ $tmp -eq 0 ];then + exit +fi + +data_id=`echo $j|jq -r ".id"` +n=`echo $data_id|wc -l` +data_mid=`echo $j|jq -r ".mid"` +data_text=`echo $j|jq -r ".body"` +data_url=`echo $j|jq -r ".url"` +data_server=`echo $j|jq -r ".url"|cut -d / -f 3` +data_user=`echo $j|jq -r ".user"` + +function user_create() { + if [ -n "$ap" ] && [ -n "$url" ];then + data=`curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"$ap\",\"password\":\"$pass\",\"did\":\"$url\",\"next\":\"$nd_o\",\"updated_at\":\"$updated_at_o\"}" -sL "$host/users"` + uid=`echo $data|jq -r ".id"` + echo id $uid + else + echo error user create + fi +} + +function card_env() { + card_url=https://card.syui.ai + host=https://api.syui.ai + d=`date +"%Y%m%d"` + nd=`date +"%Y%m%d" -d '1 day'` + nd_o=`date +"%Y%m%d" -d '-1 day'` + updated_at_o=`date --iso-8601=seconds -d '-1 day'` + username=`echo $1|cut -d . -f 1` + url_user_all="$host/users?itemsPerPage=2000" + pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` + token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + data_tmp=`curl -sL $url_user_all` + data=`echo "$data_tmp"|jq ".[]|select(.username == \"$ap\")"` + if [ -z "$data" ];then + data=`echo "$data_tmp"|jq ".[]|select(.username == \"$username\")"` + fi + if [ -z "$data" ];then + echo no $username + user_create + fi + username=`echo $data|jq -r .username` + data_did_check=`echo $data|jq -r .did` + uid=`echo $data|jq -r ".id"` + delete=`echo $data|jq -r ".delete"` + mastodon=`echo $data|jq -r ".mastodon"` + did=`echo $data|jq -r ".did"` + handle_change=`echo $data|jq -r ".handle"` + raid_at=`echo $data|jq -r .raid_at` + raid_at=`date -d "$raid_at" +"%Y%m%d"` + raid_at_n=`date --iso-8601=seconds` + server_at=`echo $data|jq -r .server_at` + server_at=`date -d "$server_at" +"%Y%m%d"` + server_at_n=`date --iso-8601=seconds` + + updated_at=`echo $data|jq -r .updated_at` + updated_at=`date -d "$updated_at" +"%Y%m%d"` + updated_at_n=`date --iso-8601=seconds` + next=`echo $data|jq -r .next` + aiten=`echo $data|jq -r .aiten` + ten_su=`echo $data|jq -r .ten_su` + if [ "$a_team" = false ];then + echo "bsky @${username}" + echo "no activitypub-mode" + return 0 + fi + echo "$card_url/$username" +} + +function card_day() { + card_env $1 + if [ $next -gt $d ] || [ "$updated_at" = "$d" ];then + echo limit 1 day + return 0 + fi + + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -sL $host/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + skill=`echo $tmp|jq -r .skill` + if [ -z "$card" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -sL $host/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + skill=`echo $tmp|jq -r .skill` + fi + + echo "[card]" + echo id : $card + echo cp : $cp + if [ "$skill" != "normal" ];then + echo skill : $skill + fi + t=`echo $tmp|jq -r .card` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"next\":\"$nd\",\"token\":\"$token\"}" -sL $host/users/$uid` +} + +function card_b() { + card_env $1 + if [ $updated_at -ge $d ] || [ "$updated_at" = "$d" ];then + echo "limit battle" + return 0 + fi + id_all=`curl -sL "$host/users?itemsPerPage=2000"|jq ".[]|.id"` + id_n=`echo "$id_all"|wc -l` + id_nr=$(($RANDOM % $id_n)) + r=`echo "$id_all"| awk "NR==$id_nr"` + + if [ "$id_all" = "null" ];then + r=2 + fi + + if [ 0 -eq $id_n ] || [ 0 -eq $r ];then + r=2 + fi + if [ -z "$id_n" ] || [ -z "$r" ];then + r=2 + fi + + data_uu=`curl -sL "$host/users/$uid/card?itemsPerPage=2000"` + data_u=`curl -sL "$host/users/$r/card?itemsPerPage=2000"` + + tt=`echo $data_uu|jq ".[].cp"|sort -n -r` + ttt=`echo $data_u|jq ".[].cp"|sort -n -r` + + #echo $data_u|jq ".[].cp" + nl=`echo $data_uu|jq length` + if [ $nl -ge 3 ];then + rs=$(($RANDOM % 3 + 1)) + else + rs=$(($RANDOM % $nl + 1)) + fi + + #echo $data_u|jq ".[].cp" + nll=`echo $data_u|jq length` + rss=$(($RANDOM % $nll)) + if [ $nll -ge 3 ];then + rss=$(($RANDOM % 3 + 1)) + else + rss=$(($RANDOM % $nll + 1)) + fi + cp_i=`echo $tt |awk "NR==$rs"` + cp_b=`echo $ttt |awk "NR==$rss"` + if [ -z "$cp_i" ];then + echo "null error" + return 0 + fi + if [ -z "$cp_b" ];then + echo "null error" + return 0 + fi + + echo $tt | sed -n 1,3p + echo "---" + echo id : $r + echo $ttt | sed -n 1,3p + echo "---" + echo $cp_i vs $cp_b + + if [ $cp_i -gt $cp_b ];then + echo "win!" + else + echo loss + fi + + if [ $cp_i -gt $cp_b ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -sL $host/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + if [ -z "$card" ];then + tmp=`curl -X POST -H "Content-Type: application/json" -d "{\"owner\":$uid,\"password\":\"$pass\"}" -sL $host/cards` + card=`echo $tmp|jq -r .card` + card_url=`echo $tmp|jq -r .url` + cp=`echo $tmp|jq -r .cp` + fi + echo "[card]" + echo id : $card + echo cp : $cp + t=`echo $tmp|jq -r .card` + fi + + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"updated_at\":\"$updated_at_n\",\"token\":\"$token\"}" -sL $host/users/$uid` +} + +function card_s(){ + card_env $1 + username=$1 + a_team=mastodon + b_team=bluesky + rr=`date +"%H%M"` + f_server=$HOME/.config/atr/txt/card_server.txt + f_server_user_at=$HOME/.config/atr/txt/card_server_user_at.txt + f_server_user_ap=$HOME/.config/atr/txt/card_server_user_ap.txt + f_server_ap=$HOME/.config/atr/txt/card_server_ap.txt + f_server_at=$HOME/.config/atr/txt/card_server_at.txt + f_server_start_time=$HOME/.config/atr/txt/card_server_start_time.txt + + if [ `cat $f_server` -eq 1 ];then + echo shutdown server battle + exit + fi + + if [ ! -f $f_server_start_time ];then + server_start=`date +"%H%M"` + echo "$server_start" >! $f_server_start_time + echo 0 >! $f_server_at + echo 0 >! $f_server_ap + fi + + cp_ap=`cat $f_server_ap` + cp_at=`cat $f_server_at` + + if [ -f $f_server_start_time ];then + server_start=`cat $f_server_start_time` + server_time=`date -d "$server_start 30 min" +"%H%M"` + fi + + #echo "time:`date -d "$server_time" +"%H:%M"`" + + if [ $server_at -ge $d ] || [ "$server_at" = "$d" ];then + echo "limit battle" + exit + fi + + data_uu=`curl -sL "$host/users/$uid/card?itemsPerPage=2000"` + fav_card=`echo $data_uu|jq "sort_by(.cp)|reverse|.[0]"` + + if [ ! -f $f_server_user_at ];then + echo start >> $f_server_user_at + fi + if [ ! -f $f_server_user_ap ];then + echo start >> $f_server_user_ap + fi + commit_user_at=`cat $f_server_user_at|tail -n 1` + commit_user_ap=`cat $f_server_user_ap|tail -n 1` + echo $username >> $f_server_user_ap + + cp_i=`echo $fav_card|jq -r ".cp"` + cp_ii=$cp_i + card_name=`echo $fav_card|jq -r ".card"` + card_status=`echo $fav_card|jq -r ".status"` + card_skill=`echo $fav_card|jq -r ".skill"` + skill=$card_skill + + if [ "$skill" = "critical" ];then + cp_i=$((cp_i + cp_i)) + fi + if [ "$skill" = "dragon" ];then + cp_i=$((cp_i * 3)) + fi + if [ "$skill" = "yui" ];then + cp_i=$((cp_i + ten_su)) + fi + + cp_all=$((cp_i + cp_ap)) + + # サーバーバトルの還元期間 + #cp_all=$((cp_ap - cp_i)) + + if [ "$skill" = "critical" ];then + echo "⚡ $cp_i ---> $cp_ap" + elif [ "$skill" = "post" ];then + cp_post=`$HOME/.cargo/bin/atr pro $1 -p` + cp_i=$((cp_i + cp_post)) + cp_all=$((cp_i + cp_ap)) + echo "🔥 $cp_i ---> $cp_ap" + elif [ "$skill" = "luck" ];then + echo "✨ $cp_i ---> $cp_ap" + elif [ "$skill" = "dragon" ];then + echo "🐉 $cp_i ---> $cp_ap" + elif [ "$skill" = "yui" ];then + echo "🔅 $cp_i ---> $cp_ap" + else + echo "✧ $cp_i ---> $cp_ap" + fi + + echo $cp_all >! $f_server_ap + echo + echo "[${a_team}] ${cp_all}" + echo "┣ @${username}" + echo "┗ @${commit_user_ap}" + echo + echo "┏━ vs ━┛" + echo + echo "[${b_team}] ${cp_at}" + echo "┗ @${commit_user_at}" + #echo "[log]" + #echo "${cp_ap}/$a_team --> ${commit_user_ap}" + #echo "${commit_user_at} <-- ${cp_at}/$b_team" + #echo "${username} --> $cp_all/$a_team" + + if [ $rr -gt $server_time ];then + #echo "----" + #echo "timeup!" + echo 1 >! $f_server + rm $f_server_start_time + rm $f_server_at + rm $f_server_ap + mv $f_server_user_at $f_server_user_at.back + mv $f_server_user_ap $f_server_user_ap.back + fi + + echo "----" + cp_plus=$(($RANDOM % 100 + 1)) + cp=$((cp_ii + cp_plus)) + body="level up!" + echo "${body} ✧${cp}(+${cp_plus})" + tmp=`curl -sL -X PATCH -H "Content-Type: application/json" -d "{\"cp\":$cp,\"token\":\"$token\"}" $host/cards/$fav` + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"server_at\":\"$server_at_n\", \"token\":\"$token\"}" -s $host/users/$uid` +} + +function mastodon_notify() { + for ((i=1;i<=$n;i++)) + do + mid=`echo $data_mid|awk "NR==$i"` + check=`cat $f|grep $mid` + if [ -n "$check" ];then + echo ok + continue + fi + + url=`echo $data_url|awk "NR==$i"` + user=`echo $data_user|awk "NR==$i"` + text=`echo $data_text|awk "NR==$i"` + server=`echo $data_server|awk "NR==$i"` + ap="@${user}@${server}" + + if [ -f "$GOPATH/bin/pup" ];then + text=`echo ${text}|pup "p text{}"|tail -n 1|cut -d " " -f 2-|tr -d '"'|sed -e "s/'/'/g" -e 's/"/"/g'` + else + text=`echo ${text}|sed -e 's/<[^>]*>//g'|cut -d " " -f 2-|tr -d '"'|sed -e "s/'/'/g" -e 's/"/"/g'` + fi + + echo $text + com=`echo $text|cut -d " " -f 1` + opt=`echo $text|cut -d " " -f 2` + + if [ "card" = "$com" ] || [ "/card" = "$com" ];then + + if [ "b" = "$opt" ] || [ "-b" = "$opt" ];then + text=`card_b $user` + echo $user $text + msr cn "@${user}@${server} `echo $text`" -mm $mid + echo $mid >> $f + continue + fi + + if [ "s" = "$opt" ] || [ "-s" = "$opt" ];then + text=`card_s $user` + echo $user $text + msr cn "@${user}@${server} `echo $text`" -mm $mid + echo $mid >> $f + continue + fi + + text=`card_day $user` + echo $user $text + msr cn "@${user}@${server} `echo $text`" -mm $mid + echo $mid >> $f + + fi + + done +} + +mastodon_notify diff --git a/scpt/nyancat.zsh b/scpt/nyancat.zsh new file mode 100755 index 0000000..f1befdc --- /dev/null +++ b/scpt/nyancat.zsh @@ -0,0 +1,107 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +atr=$HOME/.cargo/bin/atr +host=https://api.syui.ai +host_card=https://card.syui.ai/json/card.json +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` +handle=$1 +username=`echo $1|cut -d . -f 1` +did=$2 +cid=$3 +uri=$4 +opt=$5 +pay=100 +eat_file=$HOME/.config/atr/txt/nyancat_eat.txt +ran=`echo $(($RANDOM % 15))` + +eat="🍺☕ 🍵 🍶 🍼🍻 🍸 🍹 🍷 🍴 🍕 🍔 🍟 🍗 🍖 🍝🍛 🍤 🍱 🍣 🍥 🍙 🍘 🍚 🍜 🍲 🍢🍡 🍳 🍞 🍩 🍮 🍦 🍨 🍧 🎂 🍰 🍪🍫 🍬 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉🍓 🍑 🍈 🍌 🍐 🍍 🍠 🍆 🍅 🌽" + +eat=`echo $eat|grep "$opt"` + + +if [ -z "$eat" ];then + ran=`echo $(($RANDOM % 3))` + if [ $ran -eq 1 ];then + body="| キュー" + elif [ $ran -eq 2 ];then + body="| ミュー" + else + body="| ピャー" + fi + echo "uncooked" + echo "A__A +|・ㅅ・ | +|っ c| +$body + U ̄ ̄U" +exit +fi + +echo "| ${opt} |" >> $eat_file + +body_d="A__A +|・ㅅ・ | +|っ c| +`tac $eat_file|grep -v '| |'` + U ̄ ̄U" + +function card_user(){ + all_data=`curl -sL "$host/users?itemsPerPage=3000"` + data=`echo $all_data|jq ".[]|select(.username == \"$username\")"` + uid=`echo $data|jq -r .id` + aiten=`echo $data|jq -r .aiten` + like=`echo $data|jq -r .like` + ten_data=`echo $all_data|jq ".|sort_by(.aiten)|reverse|.[]|select(.aiten >= $pay)"` + if [ -z "$ten_data" ] || [ -z "$aiten" ] || [ $aiten -le $pay ];then + echo "aiten : $aiten >= $pay" + echo "failed to buy food" + echo "please : @yui.syui.ai /ten" + exit + else + pay_s=$((aiten - pay)) + like_s=$((like + 1)) + if [ $pay_s -le 0 ] || [ -z "$pay_s" ];then + echo "aiten : $aiten >= $pay" + echo "failed to buy food" + echo "please : @yui.syui.ai /ten" + exit + fi + body_user=`echo "${aiten} : $aiten - $pay = $pay_s"` + fi +} + +function card_like() { + if [ $like -gt 3 ] && [ $ran -eq 1 ];then + echo "happy!" + su=`cat $eat_file|wc -l` + su=$((su * 50)) + pay_s=$((aiten + su)) + body_user=`echo "${aiten} : $aiten + $su = $pay_s"` + rm $eat_file + echo "| ${opt} |" >> $eat_file + body_d="A__A +|・ㅅ・ | +|っ c| +`tac $eat_file|grep -v '| |'` + U ̄ ̄U" + fi +} + +function card_pay(){ + link=https://card.syui.ai/$username + text=`echo "$body_user\n$body_d"` + desc="[$ten]" + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"like\":$like_s,\"token\":\"$token\", \"aiten\": $pay_s}" -s $host/users/$uid` + echo "$text" +} + +card_user +card_like +card_pay diff --git a/scpt/nyancat_post.zsh b/scpt/nyancat_post.zsh new file mode 100755 index 0000000..9d75b0d --- /dev/null +++ b/scpt/nyancat_post.zsh @@ -0,0 +1,36 @@ +#!/bin/zsh + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +atr=$HOME/.cargo/bin/atr +host_card=https://card.syui.ai/json/card.json +pass=`cat $HOME/.config/atr/api_card.json|jq -r .password` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` +eat_file=$HOME/.config/atr/txt/nyancat_eat.txt +eat=`cat $eat_file|awk "NR==1"` + +if [ -z "$eat" ];then + exit +fi + +body_d="thx! +A__A +|・ㅅ・ | +|っ c| +`cat $eat_file|awk "NR==1"` + U ̄ ̄U" + +host=https://api.syui.ai +data=`curl -sL "$host/users?itemsPerPage=3000"|jq ".[]|select(.like >= 10)"` +tmp=`echo $data|jq -s` +n=`echo $tmp|jq "length"` +ran=$(($RANDOM % n - 1)) +echo $ran +user=`echo $tmp|jq -r ".[$ran].username"` +did=`echo $tmp|jq -r ".[$ran].did"` +echo $atr @ $did -p "`echo $body_d`" +$atr @ $did -p "`echo $body_d`" diff --git a/scpt/openai_like.zsh b/scpt/openai_like.zsh new file mode 100755 index 0000000..7eff176 --- /dev/null +++ b/scpt/openai_like.zsh @@ -0,0 +1,49 @@ +#!/bin/zsh + +handle=$1 +did=$2 +text=$3 + +atr=$HOME/.cargo/bin/atr +url_j=https://card.syui.ai/json/card.json +handle=$1 +did=$2 +cid=$3 +uri=$4 + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +url=https://api.syui.ai +username=`echo $1|cut -d . -f 1` +link=https://card.syui.ai/$username +uid=`curl -sL "$url/users?itemsPerPage=2000"|jq ".[]|select(.username == \"$username\")"|jq -r .id` +echo $uid + +data=`curl -sL "$url/users/$uid"` +like_old=`echo $data|jq -r .like` + +nolike=$(($RANDOM % 30)) +like=$(($RANDOM % 10)) +like_at=`date --iso-8601=seconds` +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +echo nolike $nolike +echo like $like + +#if [ $like_old -eq 100 ];then +# $atr follow $did +# like=$((1 + like_old)) +# curl -X PATCH -H "Content-Type: application/json" -d "{\"token\":\"$token\", \"like\": $like}" -s $url/users/$uid +#fi + +if { [ $like -eq 1 ] && echo $text|grep -e "ありがとう" -e "うれしい" } || [ $nolike -eq 1 ];then + echo ok + #$atr @ $handle -p "♡" + like=$((1 + like_old)) + curl -X PATCH -H "Content-Type: application/json" -d "{\"token\":\"$token\", \"like\": $like}" -s $url/users/$uid +fi +exit diff --git a/scpt/openai_like_bot.zsh b/scpt/openai_like_bot.zsh new file mode 100755 index 0000000..02408ec --- /dev/null +++ b/scpt/openai_like_bot.zsh @@ -0,0 +1,70 @@ +#!/bin/zsh + +atr=$HOME/.cargo/bin/atr +url=https://api.syui.ai + +token=`cat $HOME/.config/atr/api_card.json|jq -r .token` + +if [ "$2" = "reset" ];then + echo reset : $1 + username=`echo $1|cut -d . -f 1` + uid=`curl -sL "$url/users?itemsPerPage=3000"|jq ".[]|select(.username == \"$username\")"|jq -r .id` + like=0 + tmp=`curl -X PATCH -H "Content-Type: application/json" -d "{\"like\":\"$like\", \"token\":\"$token\"}" -s $url/users/$uid` + exit +fi + +s=$((RANDOM % 5)) +json=`curl -sL "https://api.syui.ai/users?itemsPerPage=3000"|jq "sort_by(.like)|reverse|.[$s]"` + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +username=`echo $json|jq -r .username` + +if [ "$username" = "ai" ] || [ "$username" = "yui" ];then + exit +fi +did=`echo $json|jq -r .did` +link=https://card.syui.ai/$username +uid=`echo $json|jq -r .id` + +data=`curl -sL "$url/users/$uid"` +like_old=`echo $data|jq -r .like` +like_rank=`echo $json|jq -r .like_rank` +like_rank_new=$((like_rank + 1)) + +echo $data + +#test +if [ "$1" = "-t" ];then + echo $json + did=did:plc:uqzpqmrjnptsxezjx4xuh2mn + like_old=6 +fi + +if [ $like_old -ge 100 ] && [ $like_rank -eq 2 ];then + text=`$atr chat "相手に好きな気持を伝えてください" -c|sed '/^$/d'` + $atr @ $did -p "$text" + curl -X PATCH -H "Content-Type: application/json" -d "{\"like_rank\":$like_rank_new, \"token\":\"$token\"}" -s $url/users/$uid + exit +fi + +if [ $like_old -ge 10 ] && [ $like_rank -eq 1 ];then + text=`$atr chat "相手を心配してください" -c|sed '/^$/d'` + $atr @ $did -p "$text" + curl -X PATCH -H "Content-Type: application/json" -d "{\"like_rank\":$like_rank_new, \"token\":\"$token\"}" -s $url/users/$uid + exit +fi + +if [ $like_old -ge 5 ] && [ $like_rank -eq 0 ];then + text=`$atr chat "自己紹介してください" -c|sed '/^$/d'` + $atr @ $did -p "$text" + curl -X PATCH -H "Content-Type: application/json" -d "{\"like_rank\":$like_rank_new, \"token\":\"$token\"}" -s $url/users/$uid + exit +fi + +exit diff --git a/scpt/openai_like_timeline.zsh b/scpt/openai_like_timeline.zsh new file mode 100755 index 0000000..de0fabb --- /dev/null +++ b/scpt/openai_like_timeline.zsh @@ -0,0 +1,46 @@ +#!/bin/zsh + +atr=$HOME/.cargo/bin/atr + +dir=${0:a:h:h} +OPENAI_API_KEY=`cat ~/.config/atr/openai.toml |cut -d "'" -f 2` +url=https://api.openai.com/v1/chat/completions +cfg=`echo "あなたはyuiという作品のアイと呼ばれるキャラクターです。アイの口調で回答してください。第一人称は「アイ」です。\ +第二人称はできる限り省略してください。\ +アイは他人に謝ることはありません。自由気ままな優しさを兼ね備えます。\ +アイのよく使う口癖は次のとおりです。その口癖に合わせた感じで話してください。\ +......。\ +アイね、ここでお昼寝するの。\ +うん。\ +そうだね。\ +面白いね。\ +楽しいね。\ +どうしたの? +"` + +json="{ +\"model\": \"gpt-3.5-turbo\", +\"messages\": [ + {\"role\": \"system\", \"content\": \"$cfg\"}, + {\"role\": \"user\", \"content\": \"$q\"} + ] +}" + +function openai_api(){ + curl -sL $url \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OPENAI_API_KEY" \ + -d "$json" +} + +if [ -n "$1" ] && [ -n "$2" ] && [ -n "$3" ];then + q=${@:3:($#-2)} + cid=$1 + uri=$2 +else + echo no query + exit +fi + +content=`openai_api "$q" | jq -r ".choices|.[]|.message.content"` +$atr r "$content" -c $cid -u $uri diff --git a/scpt/photo.zsh b/scpt/photo.zsh new file mode 100755 index 0000000..34b3937 --- /dev/null +++ b/scpt/photo.zsh @@ -0,0 +1,107 @@ +#!/bin/zsh + +url_plc="https://plc.directory/export" +host_at=bsky.social +url=https://plc.directory +url_at=https://$host_at/xrpc/com.atproto.repo.listRecords +dir=$HOME/.config/atr/txt +file=$dir/user_list.txt + +dir_git_card_page=$HOME/git/card.syui.ai + +if [ ! -d $dir_git_card_page ];then + mkdir -p $HOME/git + cd $HOME/git + git clone https://github.com/syui/card.syui.ai +else + cd $dir_git_card_page + t=`git pull` +fi + +file_photo=$dir_git_card_page/public/json/photo.json +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac +created_at=`date --iso-8601=seconds` + +#if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ];then +# exit +#fi + +function fan_art_search() { + k="aiphoto" + url="search.bsky.social/search/posts?q=" + t=`curl -sL "${url}${k}"|jq ".[]|select(.post.text == \"$k\")"` + #n=`curl -sL "${url}${k}"|jq length` + n=$((n - 1)) + for ((i=0;i<=$n;i++)) + do + did=`curl -sL "${url}${k}"|jq -r ".[$i]|.user.did"` + handle=`curl -sL https://plc.directory/$did|jq -r ".alsoKnownAs|.[]"|cut -d / -f 3-` + if [ -z "$handle" ];then + continue + fi + tid=`curl -sL "${url}${k}"|jq -r ".[$i]|.tid"|cut -d / -f 2` + http=https://staging.bsky.app/profile/$handle/post/$tid + echo $http + done +} + +if [ "$1" = "-s" ];then + fan_art_search + exit +fi + +if ! echo $1|grep "." >/dev/null 2>&1;then + echo "ex : user syui.bsky.social" + exit +fi + +if ! echo $2|grep "did:plc:" >/dev/null 2>&1;then + echo "ex : user did" + exit +fi + +if [ "$3" = "-l" ];then + curl -sL card.syui.ai/json/photo.json|jq -r ".[]|.author, .link" + exit +fi + +if ! echo $3|grep "bsky.app/profile/">/dev/null 2>&1;then + echo "please url : bsky.app/profile/$1/post/xxx" + exit +fi + +if ! echo $4|grep "av-cdn.bsky.app/img/">/dev/null 2>&1;then + echo "please url : av-cdn.bsky.app/img" + exit +fi + +function fan_art(){ + add=$1 + did=$2 + link=$3 + img=`echo $4|tr -d "'"` + author=`echo $3|cut -d / -f 5` + cd $dir_git_card_page + check_null=`cat $file_photo|jq ".[]|select(.img == \"$img\")"` + if [ -n "$check_null" ];then + echo registered + exit + fi + echo `cat $file_photo` "[{\"add\":\"$add\",\"link\":\"$link\",\"author\":\"$author\",\"img\":\"$img\",\"created_at\":\"$created_at\",\"did\":\"$did\"}]" | jq -s add >! $file_photo.back + if cat $file_photo.back|jq . >/dev/null 2>&1;then + mv $file_photo.back $file_photo + git add $file_photo + git commit -m "add photo" + git push -u origin main -f + echo add photo, thx $1 + echo "author : $author" + echo "it will take some time to deploy" + fi +} + +fan_art $1 $2 $3 $4 +exit diff --git a/scpt/stable_diffusion_prompt.j b/scpt/stable_diffusion_prompt.j new file mode 100644 index 0000000..1ae0570 --- /dev/null +++ b/scpt/stable_diffusion_prompt.j @@ -0,0 +1,52 @@ +[ +{ + "tag": "girl", + "model":"model", + "body": "masterpiece, best quality, 1girl, solo, flower, long hair, outdoors, letterboxed, school uniform, day, sky, looking up, short sleeves, parted lips, shirt, cloud, black hair, sunlight, white shirt, serafuku, upper body, from side, pink flower, blurry, brown hair, blue sky, depth of field" + }, + { + "tag": "girl", + "model":"model", + "body": "best quality, high quality photo, clear face, detailed face, beautiful face, photo rialistic, balcony, baroque architecture, 1girl, 16yo, bronde, very long hair, windy, floating hair, see through frilled white dress, look at outside, white lily, starry night, big moon, moon light, volumetric lighting, side shot, , good anatomy, perspective" + }, + { + "tag": "gril", + "model":"model", + "body": "mksks style, masterpiece, ultra-detailed, illustration,best quality, blue sky, ((cloudy sky)), rooftop, cityscape, hatsune miku, yuki miku, yuki miku (2017), yuki miku (2019), perfect lighting, science fiction, (looking at viewer), ((kawaii)), loli, fantastic_eyes, hyper extreme detailed, (glowing_eyes:0.95), highly detailed symmetric faces, holding bouque" + }, + { + "tag": "gril", + "model":"model", + "body": "1girl, 12yo,(room animal costume:1.2),baby (chick:1.2) costume, fluffy, baby chick concept room, fancy, cute, costume, A small cute chick wrapped in pale yellow feathers. Its round body and soft feathers seem to celebrate the miracle of life. The sparkle of life. Cute orange beak,pastel color " + }, + { + "tag": "gril", + "model": "model", + "body": "masterpiece, best quality, very_high_resolution, large_filesize, full color, beautiful kawaii, gold hair, little girl" + }, + { + "tag": "field", + "model":"pvcstyle", + "body": "picture by lvl landscape highly detailed high detailed concept art HD art HQ illustration 4k illustration 8k illustration 4K wallpaper 8K wallpaper Highly Cinematic Lighting cinematic Beautiful starry sky milky way extreme high detailed colorful flower garden from above" + }, + { + "tag": "field", + "model":"model", + "body": "flying warship, no humans, letterboxed, spacecraft, cloud, sky, turret " + }, + { + "tag": "gril", + "model": "model", + "body": "traininganyahyper-1800, 1girl, ahoge, animal_ears, aqua_eyes, bangs, black_hairband, blurry, blurry_background, blush, bokeh, bow, bush, cat_ears, christmas_tree, clenched_hand, clenched_hands, collarbone, day, depth_of_field, diffraction_spikes, dress, eyebrows_visible_through_hair, fake_animal_ears, forest, grass, green_eyes, hairband, hands_up, lens_flare, long_sleeves, looking_at_viewer, nature, open_mouth, outdoors, park, path, paw_pose, photo_background, solo, sparkle, sparkling_eyes, sunlight, tree" + }, + { + "tag": "gril", + "model": "model", + "body": "(best quality),(masterpiece),(high resolution),(silky skin), (upper body:1.9), smile, blush, looking at viewer, detailed angel wing, detailed angel halo, wedding, veil, (girl extend one hand and show the wedding ring), standing, (1girl), (child), (little), (thin), (small breasts:1.5), (blond middle hair, cutoff), (extremely beautiful eyes), in charch, perfect anatomy, unity 8k wallpaper, " + }, + { + "tag": "gril", + "model": "model", + "body": "masterpiece, best quality, (photography:1.3), (high quality:1.2), detailed face, detailed eyes, A girl in a white one-piece dress standing on the sidewalk of a rice field at dusk gazes dreamily at the crimson sky reflected on the surface of the water" + } +] diff --git a/scpt/user_day_post.zsh b/scpt/user_day_post.zsh new file mode 100755 index 0000000..7f4842c --- /dev/null +++ b/scpt/user_day_post.zsh @@ -0,0 +1,56 @@ +#!/bin/zsh +# +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +if [ "$1" = "test" ] || [ -z "$1" ];then + handle=syui.ai +else + handle=$1 +fi + +post=0 +d=`date +"%Y-%m-%d"` +od=`date +"%Y-%m-%d" --date '1 day ago'` + +unset cursor +function first_record(){ + cursor=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post&limit=100" |jq -r ".cursor"` + t=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post&limit=100" |jq -r ".[]|.[]?|.value.createdAt"|cut -d T -f 1` + n=`echo $t|wc -l` +} +function cursor_record(){ + cursor=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post&limit=100&cursor=$cursor" |jq -r ".cursor"` + t=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post&limit=100&cursor=$cursor" |jq -r ".[]|.[]?|.value.createdAt"|cut -d T -f 1` + n=`echo $t|wc -l` +} + +function day_check(){ + for ((i=1;i<=$n;i++)) + do + tt=`echo $t|awk "NR==$i"` + if [ "$tt" = "$d" ];then + post=$((post + 1)) + echo $post + fi + if [ "$tt" = "$od" ];then + echo $tt $od + echo $post + exit + fi + done +} + +for ((ii=1;ii<=100;ii++)) +do + if [ $ii -eq 1 ];then + first_record + else + echo $cursor + cursor_record + fi + day_check +done diff --git a/scpt/user_list.zsh b/scpt/user_list.zsh new file mode 100755 index 0000000..edc9446 --- /dev/null +++ b/scpt/user_list.zsh @@ -0,0 +1,138 @@ +#!/bin/zsh + +url_plc="https://plc.directory/export" +host_at=bsky.social +url=https://plc.directory +url_at=https://$host_at/xrpc/com.atproto.repo.listRecords +dir=$HOME/.config/atr/txt +file=$dir/user_list.txt +atr=$HOME/.cargo/bin/atr + +unset timed + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +if [ -z "$1" ];then + exit +fi + +if ! echo $1|grep "." >/dev/null 2>&1;then + echo "ex : user syui.bsky.social" + exit +fi + +if [ ! -d $dir ];then + mkdir -p $dir +fi + +if [ ! -f $file ];then + touch $file +fi + +function mfile() { + t=`cat $file|sort|uniq` + if [ -n "$t" ];then + echo "$t" >! ${file}.back + mv ${file}.back $file + fi +} + +function plc(){ + if cat $file|grep "$1" >/dev/null 2>&1;then + cat $file|grep "$1" + exit + fi + json_tmp=`curl -sL "${url_plc}?after=${timed}"|jq .` + json=`echo $json_tmp|jq "select(.operation.handle == \"$1\")"` + if [ -z "$json" ];then + check=`echo $json_tmp|jq -r ".operation.alsoKnownAs"|head -n 1` + if [ "null" != "$check" ];then + json=`echo $json_tmp|jq "select(.operation.alsoKnownAs|.[] == \"at://$1\")"` >/dev/null 2>&1 + fi + fi + if [ -n "$json" ];then + created_at=`echo $json|jq -r .createdAt |tail -n 1` + fi + if [ -n "$created_at" ];then + echo "$created_at : $1" + echo "$created_at : $1" >> $file + mfile + exit + fi +} + +function fan_art(){ + if ! echo $3|grep "https://bsky.app/profile/">/dev/null 2>&1;then + echo "please url : https://bsky.app/profile/$1/post/xxx" + exit + fi + + if [ -z "$4" ];then + echo "please img-url : https://example.com/img.png" + exit + fi + + img=$4 + author=`echo $3|cut -d / -f 5` + cd $dir_git_card_page + cat $file_fanart|jq ".+ {\"add\":\"$1\",\"link\":\"$3\",\"author\":\"$author\",\"img\":\"$img\"}" >! $file_fanart.back + if cat $file_fanart|jq . ;then + mv $file_fanart.back $file_fanart + git add $file_fanart + git commit -m "add fanart" + git push -u orgin main + fi +} + +if [ "$2" = "--url" ];then + if [ -z "$3" ];then + exit + fi + fan_art $3 + exit +fi + +function first(){ + #https://bsky.app/profile/$1/post/$e + handle=$2 + did="$atr did $2" + curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=app.bsky.feed.post&reverse=true" |jq -r ".[]|.[0]?|.uri,.value.text,.value.createdAt" +} + +if [ "$2" = "-f" ] || [ "$2" = "f" ];then + first $1 + exit +fi + +if [ "$2" = "-l" ];then + mfile + cat $file + exit +fi + +function first_created(){ + #https://bsky.app/profile/$1/post/$e + #curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$1&collection=app.bsky.feed.post&reverse=true" |jq -r ".[]|.[0]?|.createdAt" + curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$1&collection=app.bsky.feed.post&reverse=true" |jq -r ".[]|.[0]?|.value.createdAt" +} + +if [ -z "$2" ];then + first_created $1 +fi + +if [ -n "$2" ] ;then + first $2 +fi + +#for ((i=0;i<=300;i++)) +#do +# if [ $i -eq 0 ];then +# timed="1970-01-01" +# fi +# plc $1 +# timed=`echo $json_tmp|jq -r .createdAt|tail -n 1` +#done diff --git a/scpt/user_search.zsh b/scpt/user_search.zsh new file mode 100755 index 0000000..cb20ba6 --- /dev/null +++ b/scpt/user_search.zsh @@ -0,0 +1,129 @@ +#!/bin/zsh + +url_plc="https://plc.directory/export" +host_at=bsky.social +url=https://plc.directory +url_at=https://$host_at/xrpc/com.atproto.repo.listRecords +dir=$HOME/.config/atr/txt +file=$dir/user_list.txt + + +unset timed + +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac + +if [ -z "$1" ];then + exit +fi + +if ! echo $1|grep "." >/dev/null 2>&1;then + echo "ex : user syui.bsky.social" + exit +fi + +if [ ! -d $dir ];then + mkdir -p $dir +fi + +if [ ! -f $file ];then + touch $file +fi + +function mfile() { + t=`cat $file|sort|uniq` + if [ -n "$t" ];then + echo "$t" >! ${file}.back + mv ${file}.back $file + fi +} + +function plc(){ + if cat $file|grep "$1" >/dev/null 2>&1;then + cat $file|grep "$1" + exit + fi + json_tmp=`curl -sL "${url_plc}?after=${timed}"|jq .` + json=`echo $json_tmp|jq "select(.operation.handle == \"$1\")"` + if [ -z "$json" ];then + check=`echo $json_tmp|jq -r ".operation.alsoKnownAs"|head -n 1` + if [ "null" != "$check" ];then + json=`echo $json_tmp|jq "select(.operation.alsoKnownAs|.[] == \"at://$1\")"` >/dev/null 2>&1 + fi + fi + if [ -n "$json" ];then + created_at=`echo $json|jq -r .createdAt |tail -n 1` + fi + if [ -n "$created_at" ];then + echo "$created_at : $1" + echo "$created_at : $1" >> $file + mfile + exit + fi +} + +function fan_art(){ + if ! echo $3|grep "https://bsky.app/profile/">/dev/null 2>&1;then + echo "please url : https://bsky.app/profile/$1/post/xxx" + exit + fi + + if [ -z "$4" ];then + echo "please img-url : https://example.com/img.png" + exit + fi + + img=$4 + author=`echo $3|cut -d / -f 5` + cd $dir_git_card_page + cat $file_fanart|jq ".+ {\"add\":\"$1\",\"link\":\"$3\",\"author\":\"$author\",\"img\":\"$img\"}" >! $file_fanart.back + if cat $file_fanart|jq . ;then + mv $file_fanart.back $file_fanart + git add $file_fanart + git commit -m "add fanart" + git push -u orgin main + fi +} + +if [ "$2" = "--url" ];then + if [ -z "$3" ];then + exit + fi + fan_art $3 + exit +fi + +function first(){ + #https://bsky.app/profile/$1/post/$e + curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$1&collection=app.bsky.feed.post&reverse=true" |jq -r ".[]|.[0]?|.uri,.value" +} + +if [ "$2" = "-f" ];then + first $1 + exit +fi + +if [ "$2" = "-l" ];then + mfile + cat $file + exit +fi + +function first_created(){ + #https://bsky.app/profile/$1/post/$e + #curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$1&collection=app.bsky.feed.post&reverse=true" |jq -r ".[]|.[0]?|.createdAt" + curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$1&collection=app.bsky.feed.post&reverse=true" |jq -r ".[]|.[0]?|.value.createdAt" +} + +first_created $1 +#for ((i=0;i<=300;i++)) +#do +# if [ $i -eq 0 ];then +# timed="1970-01-01" +# fi +# plc $1 +# timed=`echo $json_tmp|jq -r .createdAt|tail -n 1` +#done diff --git a/scpt/user_service.zsh b/scpt/user_service.zsh new file mode 100755 index 0000000..6cbbec6 --- /dev/null +++ b/scpt/user_service.zsh @@ -0,0 +1,51 @@ +#!/bin/zsh + +if [ -n "$1" ];then + did=$1 +else + did=`atr did yui.syui.ai` +fi + +pds=`curl -sL https://plc.directory/$did|jq -r ".service.[].serviceEndpoint" | cut -d / -f 3-` +handle=`curl -sL https://plc.directory/$did|jq -r ".alsoKnownAs.[]"|cut -d / -f 3-` + +old_pds=`curl -sL https://plc.directory/$did/log|jq -r ".[0].service"|cut -d / -f 3-` +old_handle=`curl -sL https://plc.directory/$did/log|jq -r ".[0]|.handle"` + +first_post=`curl -sL "https://bsky.social/xrpc/com.atproto.repo.listRecords?repo=$did&collection=app.bsky.feed.post&reverse=true" |jq -r ".[]|.[0]?|.value.createdAt"` + +body_handle=$handle +body_pds=$pds + +if [ "$old_handle" != "null" ];then + body_handle="$old_handle -> $handle" +fi + +if [ "$old_pds" != "null" ];then + body_pds="$old_pds -> $pds" +fi + +old_pds=`curl -sL https://plc.directory/$did/log|jq -r ".[0]|.services.atproto_pds.endpoint"|cut -d / -f 3-` +old_handle=`curl -sL https://plc.directory/$did/log|jq -r ".[0]|.alsoKnownAs.[0]"|cut -d / -f 3-` + +if [ "$old_handle" != "null" ];then + body_handle="$old_handle -> $handle" +fi + +if [ "$old_pds" != "null" ];then + body_pds="$old_pds -> $pds" +fi + + +if [ "$old_pds" = "$pds" ];then + body_pds=$pds +fi + +if [ "$old_handle" = "$handle" ];then + body_handle=$handle +fi + +echo pds : $body_pds +echo handle : $body_handle +echo did : $did +echo createdAt : $first_post diff --git a/src/bot.rs b/src/bot.rs index 2c47278..8567dbe 100644 --- a/src/bot.rs +++ b/src/bot.rs @@ -1,11 +1,13 @@ use seahorse::Context; use crate::refresh; +use crate::reply; use crate::reply_link; use crate::notify; use crate::notify_read; use crate::data::log_file; +use crate::data::data_scpt; use crate::data::w_cid; use crate::data::c_char; use crate::data::Notify as Notify; @@ -41,37 +43,120 @@ pub fn c_bot(c: &Context) { } println!("{}", read); println!("{}", handle); - println!("{} {}", cid, uri); + println!("cid:{}\nuri:{}\ncid_root:{}\nuri_root:{}", cid, uri, cid_root, uri_root); let mut text = ""; if ! n[i].record.text.is_none() { text = &n[i].record.text.as_ref().unwrap(); } let vec: Vec<&str> = text.split_whitespace().collect(); let rep_com = &vec[0..].join(" "); + let handlev: Vec<&str> = handle.split('.').collect(); + let mut handlev = handlev[0].trim().to_string(); + let mut link = "https://card.syui.ai/".to_owned() + &handlev; + let s = 0; + let mut e = link.chars().count(); + + use std::process::Command; if check_cid == false && { reason == "mention" || reason == "reply" } || check_cid_run == false && { reason == "mention" || reason == "reply" } { w_cid(cid.to_string(), log_file(&"n2"), true); - if rep_com.contains("did") == true || rep_com.contains("/did") == true { + if rep_com == "/did" || rep_com == "did" { let link = "https://plc.directory/".to_owned() + &did + &"/log"; let s = 0; let e = link.chars().count(); - let d = "\n".to_owned() + &did.to_string(); let text_limit = c_char(d); - if text_limit.len() > 3 { let str_rep = reply_link::post_request(text_limit.to_string(), link.to_string(), s, e.try_into().unwrap(), cid.to_string(), uri.to_string(), cid_root.to_string(), uri_root.to_string()).await; - let str_notify = notify_read::post_request(time.to_string()).await; - w_cid(cid.to_string(), log_file(&"n1"), true); println!("{}", str_rep); - println!("{}", str_notify); } - } + } else if rep_com == "/diffusers" || rep_com == "diffusers" { + let prompt = &vec[2..].join(" "); + let _output = Command::new(data_scpt(&"diffusers")).arg(&did).arg(&prompt).output().expect("zsh"); + let _output = Command::new(data_scpt(&"at_img")).arg(&cid).arg(&uri).output().expect("zsh"); + w_cid(cid.to_string(), log_file(&"n1"), true); + } else if rep_com.contains("占") == true || rep_com.contains("うらない") == true || rep_com.contains("うらなって") == true { + let output = Command::new(data_scpt(&"card_fortune")).arg(&handle).arg(&did).arg(&cid).arg(&uri).output().expect("zsh"); + let d = String::from_utf8_lossy(&output.stdout); + let d = d.to_string(); + let text_limit = c_char(d); + if text_limit.len() > 3 { + println!("{}", text_limit); + w_cid(cid.to_string(), log_file(&"n1"), true); + } + } else if rep_com == "/card" || rep_com == "card" { + let prompt = &vec[2..].join(" "); + let output = Command::new(data_scpt(&"api_card.zsh")).arg(&handle).arg(&did).arg(&prompt).output().expect("zsh"); + let d = String::from_utf8_lossy(&output.stdout); + let dd = "\n".to_owned() + &d.to_string(); + let text_limit = c_char(dd); + if text_limit.len() > 3 { + if d.contains("handle") == false { + let str_rep = reply_link::post_request(text_limit.to_string(), link.to_string(), s, e.try_into().unwrap(), cid.to_string(), uri.to_string(), cid_root.to_string(), uri_root.to_string()).await; + println!("{}", str_rep); + } else { + handlev = handle.replace(".", "-").to_string(); + link = "https://card.syui.ai/".to_owned() + &handlev; + e = link.chars().count(); + let str_rep = reply_link::post_request(d.to_string(), link.to_string(), s, e.try_into().unwrap(), cid.to_string(), uri.to_string(), cid_root.to_string(), uri_root.to_string()).await; + println!("{}", str_rep); + } + w_cid(cid.to_string(), log_file(&"n1"), true); + } + } else if rep_com == "/fav" || rep_com == "fav" { + let prompt = &vec[2..].join(" "); + let output = Command::new(data_scpt(&"api_fav")).arg(&handle).arg(&did).arg(&prompt).output().expect("zsh"); + let d = String::from_utf8_lossy(&output.stdout); + let dd = "\n".to_owned() + &d.to_string(); + let text_limit = c_char(dd); + if text_limit.len() > 3 { + let str_rep = reply_link::post_request(d.to_string(), link.to_string(), s, e.try_into().unwrap(), cid.to_string(), uri.to_string(), cid_root.to_string(), uri_root.to_string()).await; + println!("{}", str_rep); + w_cid(cid.to_string(), log_file(&"n1"), true); + } + } else if rep_com == "/egg" || rep_com == "egg" { + let prompt = &vec[2..].join(" "); + let output = Command::new(data_scpt(&"api_egg")).arg(&handle).arg(&did).arg(&prompt).output().expect("zsh"); + let d = String::from_utf8_lossy(&output.stdout); + let dd = "\n".to_owned() + &d.to_string(); + let text_limit = c_char(dd); + if text_limit.len() > 3 { + let str_rep = reply_link::post_request(d.to_string(), link.to_string(), s, e.try_into().unwrap(), cid.to_string(), uri.to_string(), cid_root.to_string(), uri_root.to_string()).await; + println!("{}", str_rep); + w_cid(cid.to_string(), log_file(&"n1"), true); + } + } else if rep_com == "/nyan" || rep_com == "nyan" { + let prompt = &vec[2..].join(" "); + let output = Command::new(data_scpt(&"nyancat")).arg(&handle).arg(&did).arg(&cid).arg(&uri).arg(&prompt).output().expect("zsh"); + let d = String::from_utf8_lossy(&output.stdout); + let dd = "\n".to_owned() + &d.to_string(); + let text_limit = c_char(dd); + println!("{}", text_limit); + if text_limit.len() > 3 { + let str_rep = reply::post_request(text_limit.to_string(), cid.to_string(), uri.to_string(), cid_root.to_string(), uri_root.to_string()).await; + println!("{}", str_rep); + w_cid(cid.to_string(), log_file(&"n1"), true); + } + } else if rep_com == "/ten" || rep_com == "ten" { + let option = &vec[2..].join(" "); + let sub_option = &vec[3..].join(" "); + let output = Command::new(data_scpt(&"api_ten")).arg(&handle).arg(&did).arg(&cid).arg(&uri).arg(&option).arg(&sub_option).output().expect("zsh"); + let d = String::from_utf8_lossy(&output.stdout); + let d = "\n".to_owned() + &d.to_string(); + let text_limit = c_char(d); + if text_limit.len() > 3 { + let str_rep = reply_link::post_request(text_limit.to_string(), link.to_string(), s, e.try_into().unwrap(), cid.to_string(), uri.to_string(), cid_root.to_string(), uri_root.to_string()).await; + println!("{}", str_rep); + w_cid(cid.to_string(), log_file(&"n1"), true); + } + } + let str_notify = notify_read::post_request(time.to_string()).await; + println!("{}", str_notify); + println!("---"); } } }; let res = tokio::runtime::Runtime::new().unwrap().block_on(h); return res - } diff --git a/src/data.rs b/src/data.rs index dbe0b9e..d7b26d6 100644 --- a/src/data.rs +++ b/src/data.rs @@ -190,6 +190,14 @@ pub fn data_toml(s: &str) -> String { } } +pub fn data_scpt(s: &str) -> String { + let s = String::from(s); + let file = "/.config/ai/scpt/".to_owned() + &s + &".zsh"; + let mut f = shellexpand::tilde("~").to_string(); + f.push_str(&file); + return f +} + #[derive(Serialize, Deserialize)] pub struct Notify { pub notifications: Vec diff --git a/src/img.rs b/src/img.rs new file mode 100644 index 0000000..b27bace --- /dev/null +++ b/src/img.rs @@ -0,0 +1,58 @@ +extern crate reqwest; +use crate::data_toml; +use crate::url; +use serde_json::json; +use iso8601_timestamp::Timestamp; + +pub async fn post_request(text: String, link: String) -> String { + + let token = data_toml(&"access"); + let did = data_toml(&"did"); + let handle = data_toml(&"handle"); + + let url = url(&"record_create"); + let col = "app.bsky.feed.post".to_string(); + + let d = Timestamp::now_utc(); + let d = d.to_string(); + + let post = Some(json!({ + "repo": handle.to_string(), + "did": did.to_string(), + "collection": col.to_string(), + "record": { + "createdAt": d.to_string(), + "text": text.to_string(), + "embed": { + "$type": "app.bsky.embed.images", + "images": [ + { + "alt": "", + "image": { + "$type":"blob", + "ref": { + "$link" : link.to_string() + }, + "mimeType": "image/png", + "size": 0 + } + } + ] + } + } + })); + + let client = reqwest::Client::new(); + let res = client + .post(url) + .json(&post) + .header("Authorization", "Bearer ".to_owned() + &token) + .send() + .await + .unwrap() + .text() + .await + .unwrap(); + + return res +} diff --git a/src/img_reply.rs b/src/img_reply.rs new file mode 100644 index 0000000..2637e7e --- /dev/null +++ b/src/img_reply.rs @@ -0,0 +1,68 @@ +extern crate reqwest; +use crate::data_toml; +use crate::url; +use serde_json::json; +use iso8601_timestamp::Timestamp; + +pub async fn post_request(text: String, link: String, cid: String, uri: String, itype: String) -> String { + + let token = data_toml(&"access"); + let did = data_toml(&"did"); + let handle = data_toml(&"handle"); + + let url = url(&"record_create"); + let col = "app.bsky.feed.post".to_string(); + + let d = Timestamp::now_utc(); + let d = d.to_string(); + + let post = Some(json!({ + "repo": handle.to_string(), + "did": did.to_string(), + "collection": col.to_string(), + "record": { + "createdAt": d.to_string(), + "text": text.to_string(), + "embed": { + "$type": "app.bsky.embed.images", + "images": [ + { + "alt": "", + "image": { + "$type":"blob", + "ref": { + "$link" : link.to_string() + }, + "mimeType": itype.to_string(), + "size": 0 + } + } + ] + }, + "reply": { + "root": { + "cid": cid.to_string(), + "uri": uri.to_string() + }, + "parent": { + "cid": cid.to_string(), + "uri": uri.to_string() + } + } + } + })); + + let client = reqwest::Client::new(); + let res = client + .post(url) + .json(&post) + .header("Authorization", "Bearer ".to_owned() + &token) + .send() + .await + .unwrap() + .text() + .await + .unwrap(); + + return res +} diff --git a/src/img_upload.rs b/src/img_upload.rs new file mode 100644 index 0000000..b27bace --- /dev/null +++ b/src/img_upload.rs @@ -0,0 +1,58 @@ +extern crate reqwest; +use crate::data_toml; +use crate::url; +use serde_json::json; +use iso8601_timestamp::Timestamp; + +pub async fn post_request(text: String, link: String) -> String { + + let token = data_toml(&"access"); + let did = data_toml(&"did"); + let handle = data_toml(&"handle"); + + let url = url(&"record_create"); + let col = "app.bsky.feed.post".to_string(); + + let d = Timestamp::now_utc(); + let d = d.to_string(); + + let post = Some(json!({ + "repo": handle.to_string(), + "did": did.to_string(), + "collection": col.to_string(), + "record": { + "createdAt": d.to_string(), + "text": text.to_string(), + "embed": { + "$type": "app.bsky.embed.images", + "images": [ + { + "alt": "", + "image": { + "$type":"blob", + "ref": { + "$link" : link.to_string() + }, + "mimeType": "image/png", + "size": 0 + } + } + ] + } + } + })); + + let client = reqwest::Client::new(); + let res = client + .post(url) + .json(&post) + .header("Authorization", "Bearer ".to_owned() + &token) + .send() + .await + .unwrap() + .text() + .await + .unwrap(); + + return res +} diff --git a/src/main.rs b/src/main.rs index 5852aeb..0c0c6d7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,7 @@ pub mod follows; pub mod followers; pub mod like; pub mod repost; +pub mod img_reply; pub mod bot; pub mod openai; @@ -209,6 +210,28 @@ fn main() { .alias("pro") .action(profile) ) + .command( + Command::new("img-upload") + .description("img-upload ") + .action(img_upload) + ) + .command( + Command::new("img-post") + .description("img-post -l -u -c ") + .action(img_post) + .flag( + Flag::new("link", FlagType::String) + .alias("l"), + ) + .flag( + Flag::new("uri", FlagType::String) + .alias("u"), + ) + .flag( + Flag::new("cid", FlagType::String) + .alias("c"), + ) + ) .command( Command::new("openai") .description("openai ") @@ -440,6 +463,40 @@ fn reply(c: &Context) { return res } +#[tokio::main] +async fn c_img_upload(c: &Context) -> reqwest::Result<()> { + let token = data_toml(&"access"); + let atoken = "Authorization: Bearer ".to_owned() + &token; + let con = "Content-Type: image/png"; + let url = url(&"upload_blob"); + let f = "@".to_owned() + &c.args[0].to_string(); + use std::process::Command; + let output = Command::new("curl").arg("-X").arg("POST").arg("-sL").arg("-H").arg(&con).arg("-H").arg(&atoken).arg("--data-binary").arg(&f).arg(&url).output().expect("curl"); + let d = String::from_utf8_lossy(&output.stdout); + let d = d.to_string(); + println!("{}", d); + Ok(()) +} + +fn img_upload(c: &Context) { + refresh(c); + c_img_upload(c).unwrap(); +} + +fn img_post(c: &Context) { + let m = c.args[0].to_string(); + let link = c.string_flag("link").unwrap(); + let cid = c.string_flag("cid").unwrap(); + let uri = c.string_flag("uri").unwrap(); + let h = async { + let itype = "image/png"; + let str = img_reply::post_request(m.to_string(),link.to_string(),cid.to_string(),uri.to_string(), itype.to_string()).await; + println!("{}",str); + }; + let res = tokio::runtime::Runtime::new().unwrap().block_on(h); + return res +} + fn reply_og(c: &Context) { refresh(c); let m = c.args[0].to_string(); diff --git a/scpt/entrypoint.sh b/test/entrypoint.sh similarity index 100% rename from scpt/entrypoint.sh rename to test/entrypoint.sh diff --git a/scpt/env b/test/env similarity index 100% rename from scpt/env rename to test/env diff --git a/scpt/notify.zsh b/test/notify.zsh similarity index 100% rename from scpt/notify.zsh rename to test/notify.zsh diff --git a/scpt/refresh.zsh b/test/refresh.zsh similarity index 100% rename from scpt/refresh.zsh rename to test/refresh.zsh diff --git a/scpt/reply.zsh b/test/reply.zsh similarity index 100% rename from scpt/reply.zsh rename to test/reply.zsh diff --git a/scpt/token.zsh b/test/token.zsh similarity index 100% rename from scpt/token.zsh rename to test/token.zsh