ai/at
ai/at
1
0

update scpt

This commit is contained in:
syui 2024-12-26 22:03:20 +09:00
parent c61fd5c748
commit b5b3850f7b
Signed by: syui
GPG Key ID: 5417CFEBAD92DF56
4 changed files with 409 additions and 86 deletions

60
scpt/at.zsh Executable file
View File

@ -0,0 +1,60 @@
#!/bin/zsh
d=${0:a:h}
source $d/src/tag.zsh
source $d/src/func.zsh
at-env
case $1 in
version|v)
at-version
;;
uri|u)
at-uri $2
;;
did|d)
at-did $2
;;
collection|c)
at-collection $2 $3
;;
at-docs|docs)
at-docs
;;
cid)
at-cid $2 $3
;;
login|l)
at-login $2 $3
;;
refresh|r)
at-refresh
;;
session|s)
at-session
;;
profile|pro)
at-profile
;;
download-character-icon)
source $d/ai/syui/game/character.zsh
download_character_icon
;;
create-game-character)
source $d/ai/syui/game/character.zsh
create_game_character
;;
ai-create-user)
source $d/ai/syui/game/character.zsh
ai_create_user
;;
*)
echo "${help[@]}"
echo "${host[@]}"
echo "${lexicon[@]}"
echo "${github[@]}"
echo "${tag[@]}"
;;
esac
at-unset

View File

@ -0,0 +1,302 @@
character=(
ai
manny
quinn
chinese
kirin
leviathan
phoenix
wyvern
cerberus
dragon
kitsune
pegasus
)
img=(
bafkreie34pjuc6coenzcdwrgrh4fbacq7bkhsz263g5vpbsqxwaz37kkwy
bafkreie34pjuc6coenzcdwrgrh4fbacq7bkhsz263g5vpbsqxwaz37kkwy
bafkreie34pjuc6coenzcdwrgrh4fbacq7bkhsz263g5vpbsqxwaz37kkwy
bafkreidlealfybajqzwv5eoz4jshnsijc2vnktlhpw4ph47krwj6aigqby
bafkreiegpqedlrfa4ljhssdnkrr5hyd5huy2xhh2zszj5wq2wuuzejggmq
bafkreig6vszkx3c4dcortjwfsz6sa6zwqgj7zpxj4lxfrrkwql4xhiu5ou
bafkreich7fsumke2yvumvixkruonzrcevk3f6g2cntzfwdn4n2c2vox5dm
bafkreiacjvagsekhiiljz3j237b6klrt6pkptxljt7kltprgg5276gv25q
bafkreihpni4lp55jysalcntulzal5rbhidtbseanlucpyucagzxmv6xj24
bafkreia3huw2gdenqatoobx3hcft74chced46bw4znfgepo5aenegobkri
bafkreidy74aieb6ie646xhosginox5zbnbnrtd76cnt4pbn73hrxgfnple
bafkreifnbfj27fr6nv7qeqqmwdibf7qrw4lauvzoknw5hexbifmwqt6kmq
)
function download_character_icon(){
t=(
"https://sketchfab.com/3d-models/super-9a80a6d6cf6f4b08906505c7f945d3ce"
)
t=(
"https://sketchfab.com/3d-models/cerberus-quirky-series-4379b571b5a440119d1ebaddb0711142"
"https://sketchfab.com/3d-models/chinese-dragon-quirky-series-a383d3cf5b004978ac620806558b2924"
"https://sketchfab.com/3d-models/dragon-quirky-series-9a0989aae9b84ebdade28e84a0702a71"
"https://sketchfab.com/3d-models/kirin-quirky-series-b280c8bc5b87471eac1068acc91fdce1"
"https://sketchfab.com/3d-models/kitsune-quirky-series-4fc8b2ade43f4d4bb8a8e6e227f00a62"
"https://sketchfab.com/3d-models/leviathan-quirky-series-002200e1db2c461fbcaa8d2fdac2d766"
"https://sketchfab.com/3d-models/pegasus-quirky-series-a4488ae7a2d2405c927a50f5a8b2d6bb"
"https://sketchfab.com/3d-models/phoenix-quirky-series-1f0a01247b78441ab5b9cf8e9711e78e"
"https://sketchfab.com/3d-models/wyvern-quirky-series-7baad217325a45b4877514b3f5924be9"
)
for i in $t; do
name=`echo $i|cut -d / -f 5|cut -d - -f 1`
tt=`curl -sL $i|tr ' ' '\n' |grep .jpeg|cut -d '"' -f 2`
normal=`echo $tt|awk "NR==1"`
min=`echo $tt|awk "NR==2"`
if [ ! -f $name.jpeg ];then
curl -sL $normal -o $name.jpeg
fi
if [ ! -f ${name}-min.jpeg ];then
#curl -sL $min -o ${name}-min.jpeg
fi
array+=(`echo $tt|sed "1,2d"|cut -d ";" -f 2|cut -d '&' -f 1|tr '\n' ' '`)
echo $name
for ((i=1; i<=$#array; i++)); do
echo "Index: $i, Value: ${array[$i]}"
#curl -sL ${array[$i]} -o ${name}-${i}.jpeg
done
done
}
case $OSTYPE in
darwin*)
day=`gdate --iso-8601=seconds`
;;
*)
day=`date --iso-8601=seconds`
;;
esac
function create_game_character() {
t=(
ai
chinese
kirin
leviathan
phoenix
wyvern
cerberus
dragon
kitsune
pegasus
)
for ((i=1; i<=$#t; i++)); do
created=2020-01-01T00:00:00+09:00
col=ai.syui.game.character
req=com.atproto.repo.getRecord
url=https://$host/xrpc/$req
id=$i
name=${t[$i]}
chara=$name
rkey=$chara
repo=$did_yui
json="{\"collection\":\"$col\", \"rkey\":\"$rkey\", \"repo\":\"$repo\"}"
if [ $((RANDOM % 2)) -eq 0 ];then
gender=male
else
gender=female
fi
case $name in
ai)
gender=none
group=origin
season=0
;;
chinese|dragon|cerberus|pegasus|leviathan)
gender=male
group=fantasy
season=1
;;
kitsune|phoenix|kirin|wyvern)
gender=female
group=fantasy
season=1
;;
*)
continue ;;
esac
jj=`curl -sL "$url?repo=$repo&collection=$col&rkey=$rkey"`
link=`echo $jj|jq -r '.value.embed.external.thumb.ref.[]'`
size=`echo $jj|jq -r .value.embed.external.thumb.size`
mtype=`echo $jj|jq -r .value.embed.external.thumb.mimeType`
echo $name
echo $gender
echo https://cdn.bsky.app/img/feed_thumbnail/plain/$did_yui/$link
## upload img
#if [ -f ./${name}.jpeg ];then
# jj=`ai img-upload ./${name}.jpeg`
#elif [ -f ./${name}.png ];then
# jj=`ai img-upload ./${name}.png`
#fi
#link=`echo $jj|jq -r ".blob.ref.[]"`
#size=`echo $jj|jq -r .blob.size`
#mtype=`echo $jj|jq -r .blob.mimeType`
req=com.atproto.repo.putRecord
url=https://$host/xrpc/$req
nickname=$name
fullname=$name
uri=at://${did_yui}/$col/$chara
json="{
\"repo\": \"$handle_yui\",
\"did\": \"$did_yui\",
\"collection\": \"$col\",
\"rkey\": \"$chara\",
\"record\": {
\"id\": $id,
\"name\": \"$name\",
\"fullname\": \"$fullname\",
\"nickname\": \"$nickname\",
\"gender\": \"$gender\",
\"season\": $season,
\"group\": \"$group\",
\"embed\": {
\"\$type\": \"app.bsky.embed.external\",
\"external\": {
\"uri\": \"$uri\",
\"thumb\": {
\"\$type\": \"blob\",
\"ref\": {
\"\$link\": \"$link\"
},
\"mimeType\": \"$mtype\",
\"size\": $size
} } }, \"createdAt\": \"$created\", \"updatedAt\": \"$day\" } }"
if echo $json|jq . ;then
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token_yui" -d $json $url
fi
done
}
function ai_create_user() {
col=ai.syui.game.user
rkey=ai
did=$did_yui
handle=$handle_yui
#rkey=syui
#img=https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:4hqjfn7m6n5hno3doamuhgef/bafkreie34pjuc6coenzcdwrgrh4fbacq7bkhsz263g5vpbsqxwaz37kkwy@jpeg
req=com.atproto.repo.putRecord
url=https://$host/xrpc/$req
for ((i=1; i<=${#character}; i++)); do
cname=${character[$i]}
cid=${img[$i]}
imguri=https://cdn.bsky.app/img/feed_thumbnail/plain/$did_yui/${cid}@jpeg
echo $imguri
echo $i $character $cname
season=1
group=test
lv=1
hp=100
exp=0
rank=0
mode=0
attack=0
attack_post=0
critical=0
critical_d=0
case $cname in
ai)
group=origin
season=0
mode=2
;;
manny|quinn)
group=test
;;
*)
group=fantasy
;;
esac
jc="\"$cname\": { \"group\": \"$group\", \"season\": $season, \"img\": \"$imguri\", \"lv\": $lv, \"exp\": $exp, \"hp\": $hp, \"rank\": $rank, \"mode\": $mode, \"attack\": $attack, \"attack_post\": $attack_post, \"critical\": $critical, \"critical_d\": $critical_d }"
if [ $#character -ne $i ];then
jc=${jc},
fi
json=${json}${jc}
done
json="
{
\"repo\": \"$handle_yui\",
\"did\": \"$did_yui\",
\"collection\": \"$col\",
\"rkey\": \"$rkey\",
\"record\": {
\"did\": \"$did\",
\"limit\": false,
\"login\": false,
\"handle\": \"$handle\",
\"aiten\": 10,
\"gender\": \"famale\",
\"character\": {
$json
},
\"createdAt\": \"${created}\",
\"updatedAt\": \"${created}\"
}
}"
if echo $json|jq . ;then
echo $token_yui
echo y
read y
if [ "y" = "$y" ];then
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token_yui" -d $json $url
fi
fi
col=ai.syui.game
rkey=self
at_uri=at://$did_yui/ai.syui.game.user/ai
json="
{
\"repo\": \"$handle_yui\",
\"did\": \"$did_yui\",
\"collection\": \"$col\",
\"rkey\": \"$rkey\",
\"record\": {
\"account\": \"$at_uri\",
\"username\": \"ai\",
\"createdAt\": \"$created\"
}
}"
if echo $json|jq . ;then
echo y
read y
if [ "y" = "$y" ];then
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token_yui" -d $json $url
fi
fi
}

94
at.zsh → scpt/src/func.zsh Executable file → Normal file
View File

@ -1,50 +1,14 @@
#!/bin/zsh
help=(
at.zsh v
at.zsh d handle
at.zsh u at-uri
at.zsh c at-uri -r
at.zsh docs
at.zsh l handle password
at.zsh r
at.zsh s
at.zsh cid handle cid
at.zsh pro
at.zsh col ai.syui.game.user self
)
host=(
bsky.social
public.api.bsky.app
plc.directory
)
lexicon=(
# https://github.com/bluesky-social/atproto/tree/main/lexicons
com.atproto.repo.describeRepo
com.atproto.repo.getRecord
com.atproto.repo.listRecords
com.atproto.identity.resolveHandle
com.atproto.server.createSession
com.atproto.server.refreshSession
com.atproto.server.getSession
com.atproto.sync.getBlob
app.bsky.actor.getProfile
)
github=(
https://github.com/bluesky-social/atproto
https://github.com/bluesky-social/social-app
https://github.com/bluesky-social/feed-generator
https://github.com/bluesky-social/jetstream
https://github.com/bluesky-social/indigo
https://github.com/did-method-plc/did-method-plc
)
tag=( at bsky bsync pds bgs plc ozone feed jetstream social-app oauth )
function at-env() { function at-env() {
host=bsky.social host=bsky.social
at_uri=at://did:plc:4hqjfn7m6n5hno3doamuhgef/ai.syui.game.user/syui handle_syui=syui.ai
handle_yui=yui.syui.ai
did_yui=did:plc:4hqjfn7m6n5hno3doamuhgef
did_syui=did:plc:uqzpqmrjnptsxezjx4xuh2mn
handle=$handle_yui
did=$did_yui
created=2020-01-01T00:00:00+09:00
at_uri=at://$did_yui/ai.syui.game.user/syui
docs_uri=https://docs.bsky.app/docs/api docs_uri=https://docs.bsky.app/docs/api
handle=yui.syui.ai
did=`echo $at_uri|cut -d / -f 3` did=`echo $at_uri|cut -d / -f 3`
collection=`echo $at_uri|cut -d / -f 4` collection=`echo $at_uri|cut -d / -f 4`
rkey=`echo $at_uri|cut -d / -f 5` rkey=`echo $at_uri|cut -d / -f 5`
@ -170,45 +134,3 @@ function at-profile() {
url="https://${host}${req}?actor=$did" url="https://${host}${req}?actor=$did"
curl -sL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url|jq . curl -sL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $token" $url|jq .
} }
at-env
case $1 in
version|v)
at-version
;;
uri|u)
at-uri $2
;;
did|d)
at-did $2
;;
collection|c)
at-collection $2 $3
;;
at-docs|docs)
at-docs
;;
cid)
at-cid $2 $3
;;
login|l)
at-login $2 $3
;;
refresh|r)
at-refresh
;;
session|s)
at-session
;;
profile|pro)
at-profile
;;
*)
echo "${help[@]}"
echo "${host[@]}"
echo "${lexicon[@]}"
echo "${github[@]}"
echo "${tag[@]}"
;;
esac
at-unset

39
scpt/src/tag.zsh Normal file
View File

@ -0,0 +1,39 @@
help=(
at.zsh v
at.zsh d handle
at.zsh u at-uri
at.zsh c at-uri -r
at.zsh docs
at.zsh l handle password
at.zsh r
at.zsh s
at.zsh cid handle cid
at.zsh pro
at.zsh col ai.syui.game.user self
)
host=(
bsky.social
public.api.bsky.app
plc.directory
)
lexicon=(
# https://github.com/bluesky-social/atproto/tree/main/lexicons
com.atproto.repo.describeRepo
com.atproto.repo.getRecord
com.atproto.repo.listRecords
com.atproto.identity.resolveHandle
com.atproto.server.createSession
com.atproto.server.refreshSession
com.atproto.server.getSession
com.atproto.sync.getBlob
app.bsky.actor.getProfile
)
github=(
https://github.com/bluesky-social/atproto
https://github.com/bluesky-social/social-app
https://github.com/bluesky-social/feed-generator
https://github.com/bluesky-social/jetstream
https://github.com/bluesky-social/indigo
https://github.com/did-method-plc/did-method-plc
)
tag=( at bsky bsync pds bgs plc ozone feed jetstream social-app oauth )