ai/at
1
0

Compare commits

..

3 Commits

Author SHA1 Message Date
a08a398220 fix 2025-05-05 08:37:45 +09:00
c92ad09006 fix scpt 2025-05-05 08:35:12 +09:00
a57f9eb781 ozone 2025-05-05 08:35:11 +09:00
48 changed files with 127 additions and 579 deletions

View File

@ -1,38 +0,0 @@
name: Generate Record JSON
on:
workflow_dispatch: # 手動トリガー
push:
paths:
- scpt/generate_record.py # スクリプトに変更があったとき
schedule:
- cron: '0 3 * * *' # 毎日03:00 UTCに自動生成任意
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install Dependencies
run: |
pip install -r requirements.txt || true # 必要なら
- name: Run Record Generator Script
run: |
python scpt/generate_record.py
- name: Commit and Push Generated JSON
run: |
git config --global user.name "GitHub Actions Bot"
git config --global user.email "actions@github.com"
git add record.json
git commit -m "🧬 Auto-generate record.json" || echo "No changes to commit"
git push origin main

View File

@ -67,6 +67,38 @@ services:
database: database:
condition: service_healthy condition: service_healthy
ozone:
build:
context: ./repos/atproto/
dockerfile: services/ozone/Dockerfile
ports:
- 2585:3000
restart: always
command: node --enable-source-maps api.js
volumes:
- ./data/ozone/:/data/
env_file:
- ./envs/ozone
depends_on:
database:
condition: service_healthy
ozone-daemon:
build:
context: ./repos/atproto/
dockerfile: services/ozone/Dockerfile
restart: always
command: node --enable-source-maps daemon.js
volumes:
- ./data/ozone/:/data/
env_file:
- ./envs/ozone
depends_on:
database:
condition: service_healthy
ozone:
condition: service_healthy
social-app: social-app:
ports: ports:
- 8100:8100 - 8100:8100
@ -96,53 +128,3 @@ services:
condition: service_healthy condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
jetstream:
build:
context: ./repos/jetstream/
dockerfile: Dockerfile
ports:
- 6008:6008
volumes:
- ./data/jetstream:/data
restart: always
env_file:
- ./envs/jetstream
ozone-web:
build:
context: ./repos/ozone/
ports:
- 2586:3000
restart: always
volumes:
- ./data/ozone/:/data/
env_file:
- ./envs/ozone
depends_on:
database:
condition: service_healthy
ozone:
build:
context: ./repos/atproto/
dockerfile: services/ozone/Dockerfile
ports:
- 2585:3000
restart: always
command: node --enable-source-maps api.js
volumes:
- ./data/ozone/:/data/
env_file:
- ./envs/ozone
ozone-daemon:
build:
context: ./repos/atproto/
dockerfile: services/ozone/Dockerfile
restart: always
command: node --enable-source-maps daemon.js
volumes:
- ./data/ozone/:/data/
env_file:
- ./envs/ozone

View File

@ -1,5 +0,0 @@
JETSTREAM_WS_URL=wss://bgs.${host}/xrpc/com.atproto.sync.subscribeRepos
JETSTREAM_DATA_DIR=/data
JETSTREAM_LISTEN_ADDR=:6008
JETSTREAM_METRICS_LISTEN_ADDR=:6009
JETSTREAM_LIVENESS_TTL=96h

View File

@ -19,9 +19,3 @@ OZONE_DB_MIGRATE=1
OZONE_ADMIN_PASSWORD OZONE_ADMIN_PASSWORD
OZONE_SIGNING_KEY_HEX OZONE_SIGNING_KEY_HEX
OZONE_BLOB_DIVERT_ADMIN_PASSWORD
OZONE_VERIFIER_URL
OZONE_VERIFIER_DID
OZONE_VERIFIER_PASSWORD
OZONE_VERIFIER_ISSUERS_TO_INDEX
OZONE_VERIFIER_JETSTREAM_URL

View File

@ -15,6 +15,7 @@ function at-repos-env() {
https://github.com/bluesky-social/atproto https://github.com/bluesky-social/atproto
https://github.com/bluesky-social/social-app https://github.com/bluesky-social/social-app
https://github.com/bluesky-social/feed-generator https://github.com/bluesky-social/feed-generator
https://github.com/bluesky-social/ozone
) )
d=${0:a:h} d=${0:a:h}
dh=${0:a:h:h} dh=${0:a:h:h}
@ -24,19 +25,7 @@ function at-repos-env() {
function at-repos-json() { function at-repos-json() {
f=~/.config/atproto/token.json f=~/.config/atproto/token.json
j="{ j="{ \"did\": \"did:plc:6qyecktefllvenje24fcxnie\", \"didDoc\": { \"service\": [ { \"serviceEndpoint\": \"https://syu.is\" } ] }, \"handle\": \"ai.syu.is\", \"accessJwt\": \"xxx\" }"
\"did\": \"did:plc:6qyecktefllvenje24fcxnie\",
\"didDoc\": {
\"service\": [
{
\"serviceEndpoint\": \"https://syu.is\"
}
]
},
\"handle\": \"ai.syu.is\",
\"accessJwt\": \"xxx\"
}"
if [ ! -f "$f" ];then if [ ! -f "$f" ];then
mkdir -p ~/.config/atproto mkdir -p ~/.config/atproto
echo $j >> $f echo $j >> $f
@ -58,14 +47,13 @@ function at-repos-token() {
} }
function at-repos-clone() { function at-repos-clone() {
if [ ! -d $d/repos ];then
mkdir -p $d/repos mkdir -p $d/repos
fi
cd $d/repos cd $d/repos
for ((i=1; i<=${#repos}; i++)); do for ((i=1; i<=${#repos}; i++)); do
repo=${repos[$i]} repo=${repos[$i]}
echo $repo echo $repo
if [ -d $d/repos/${repo##*/} ] && [ "${repo##*/}" = "social-app" ];then
rm -rf $d/repos/${repo##*/}
fi
if [ ! -d $d/repos/${repo##*/} ];then if [ ! -d $d/repos/${repo##*/} ];then
git clone $repo git clone $repo
fi fi
@ -83,7 +71,6 @@ function at-repos-pull() {
if [ -d $d/repos/${repo##*/} ];then if [ -d $d/repos/${repo##*/} ];then
cd $d/repos/${repo##*/} cd $d/repos/${repo##*/}
if ! git pull;then if ! git pull;then
cd $d/repos
rm -rf $d/repos/${repo##*/} rm -rf $d/repos/${repo##*/}
at-repos-clone at-repos-clone
fi fi
@ -109,39 +96,21 @@ function at-repos-social-app-write() {
dt=$d/repos/social-app/src dt=$d/repos/social-app/src
cd $dt cd $dt
f=$dt/lib/constants.ts
sed -i "s/public.api/bsky/g" $f
f=$dt/lib/strings/url-helpers.ts
sed -i "s#https://go.bsky.app/redirect?u=##g" $f
grep -R api.bsky.app .|cut -d : -f 1|sort -u|xargs sed -i "s/api.bsky.app/bsky.${host}/g"
grep -R bsky.social .|cut -d : -f 1|sort -u|xargs sed -i "s/bsky.social/${host}/g" grep -R bsky.social .|cut -d : -f 1|sort -u|xargs sed -i "s/bsky.social/${host}/g"
grep -R bsky.app .|cut -d : -f 1|sort -u|xargs sed -i "s/bsky.app/${host}/g" grep -R bsky.app .|cut -d : -f 1|sort -u|xargs sed -i "s/bsky.app/web.${host}/g"
f=$dt/lib/statsig/statsig.tsx
sed -i "s/events.${host}/events.bsky.app/g" $f
f=$dt/lib/constants.ts f=$dt/lib/constants.ts
sed -i "s/cardyb.${host}/cardyb.bsky.app/g" $f sed -i "s/public.api.web/bsky/g" $f
sed -i "s/status.${host}/status.bsky.app/g" $f
grep -R public.api.${host} .|cut -d : -f 1|sort -u|xargs sed -i "s/public.api.${host}/bsky.${host}/g"
grep -R api.${host} .|cut -d : -f 1|sort -u|xargs sed -i "s/api.${host}/bsky.${host}/g"
grep -R events.${host} .|cut -d : -f 1|sort -u|xargs sed -i "s/events.${host}/events.bsky.app/g"
grep -R public.bsky.${host} .|cut -d : -f 1|sort -u|xargs sed -i "s/public.bsky.${host}/bsky.${host}/g"
f=$dt/view/icons/Logotype.tsx f=$dt/view/icons/Logotype.tsx
o=$d/icons/Logotype.tsx o=$d/icons/Logotype.tsx
cp -rf $o $f cp -rf $o $f
f=$dt/view/com/util/UserAvatar.tsx f=$dt/view/com/util/UserAvatar.tsx
curl -sL https://raw.githubusercontent.com/bluesky-social/social-app/refs/heads/main/src/view/com/util/UserAvatar.tsx -o $f curl -sL https://raw.githubusercontent.com/bluesky-social/social-app/refs/heads/main/src/view/com/util/UserAvatar.tsx -o $f
#sed -i "s#/img/avatar/plain/#https://cdn.bsky.app/img/avatar/plain/#g" $f sed -i "s#/img/avatar/plain/#https://cdn.bsky.app/img/avatar/plain/#g" $f
sed -i "s#/img/avatar/plain/#https://bsky.${host}/img/avatar/plain/#g" $f
sed -i "s#/img/avatar_thumbnail/plain/#https://bsky.${host}/img/avatar/plain/#g" $f sed -i "s#/img/avatar_thumbnail/plain/#https://bsky.${host}/img/avatar/plain/#g" $f
sed -i "s#source={{uri: avatar}}#source={{ uri: hackModifyThumbnailPath(avatar, 1 > 0), }}#g" $f sed -i "s#source={{uri: avatar}}#source={{ uri: hackModifyThumbnailPath(avatar, 1 > 0), }}#g" $f
curl -sL https://raw.githubusercontent.com/bluesky-social/social-app/refs/heads/main/src/lib/strings/url-helpers.ts -o $dt/lib/strings/url-helpers.ts
sed -i "s#https://go.bsky.app/redirect?u=\${encodeURIComponent(url)}#\${url}#g" $dt/lib/strings/url-helpers.ts
grep -R $did_admin .|cut -d : -f 1|sort -u|xargs sed -i "s/${did_admin}/${did}/g" grep -R $did_admin .|cut -d : -f 1|sort -u|xargs sed -i "s/${did_admin}/${did}/g"
} }
@ -149,19 +118,58 @@ function at-repos-bsky-patch() {
f=$d/repos/atproto/services/bsky/api.js f=$d/repos/atproto/services/bsky/api.js
curl -sL https://raw.githubusercontent.com/bluesky-social/atproto/refs/heads/main/services/bsky/api.js -o $f curl -sL https://raw.githubusercontent.com/bluesky-social/atproto/refs/heads/main/services/bsky/api.js -o $f
d_=$d/repos/atproto d_=$d/repos/atproto
p_=$d_/105-atproto-services-for-docker.diff p_=$d/patching/105-atproto-services-for-docker.diff
cd $d_ cd ${d_}
if [ ! -f ${p_} ];then
# https://github.com/itaru2622/bluesky-selfhost-env/blob/master/patching/105-atproto-services-for-docker.diff # https://github.com/itaru2622/bluesky-selfhost-env/blob/master/patching/105-atproto-services-for-docker.diff
echo download patch: https://github.com/itaru2622/bluesky-selfhost-env/blob/master/patching/105-atproto-services-for-docker.diff
curl -sLO https://raw.githubusercontent.com/itaru2622/bluesky-selfhost-env/refs/heads/master/patching/105-atproto-services-for-docker.diff curl -sLO https://raw.githubusercontent.com/itaru2622/bluesky-selfhost-env/refs/heads/master/patching/105-atproto-services-for-docker.diff
echo "applying patch: under ${d_} for ${p_}" else
echo local patch
fi
echo "applying patch: under ${f} for ${p_}"
pushd ${d_} pushd ${d_}
patch -p1 < ${p_} patch -p1 < ${p_}
popd popd
} }
function at-repos-social-app-patch() {
f=$d/repos/social-app/Dockerfile
p_=$d/patching/social-app-dockerfile.diff
d_=$d/repos/social-app
cd ${d_}
curl -sLO https://raw.githubusercontent.com/bluesky-social/social-app/refs/heads/main/Dockerfile
echo "applying patch: under ${f} for ${p_}"
pushd ${d_}
patch -p1 < ${p_}
popd
}
function at-repos-ozone-patch() {
#DOMAIN=syu.is
cd $d/repos
d_=$d/repos/ozone
rm -rf ${d_}
p_=$d/patching/120-ozone-runtimeEnvVars.diff
git clone https://github.com/bluesky-social/ozone
cd ${d_}
pushd ${d_}
echo "applying patch: under ${d_} for ${p_}"
patch -p1 < ${p_}
popd
p_=$d/patching/122-ozone-enable-daemon.diff
echo "applying patch: under ${d_} for ${p_}"
pushd ${d_}
patch -p1 < ${p_}
popd
#cp -rf $d/repos/atproto/service/ozone/* $d/ozone/service/
}
function at-repos-docker() { function at-repos-docker() {
cd $d cd $d
docker compose build $1 && docker compose up -d docker compose build && docker compose up -d
} }
at-repos-env at-repos-env
@ -171,5 +179,13 @@ at-repos-social-app-icon
at-repos-social-app-icon-origin at-repos-social-app-icon-origin
at-repos-social-app-write at-repos-social-app-write
at-repos-bsky-patch at-repos-bsky-patch
at-repos-docker $1 at-repos-social-app-patch
at-repos-ozone-patch
echo "[y]docker compose build && up"
read key
case $key in
[yY])
at-repos-docker
;;
esac

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 933 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 688 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 683 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 805 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 713 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

View File

@ -1,38 +0,0 @@
# card
カードの仕様を決定します。
基本的に`3:4``1620x2160`で生成していましたが、`4:5``1080x1350`で生成することにしました。これはwindows動画編集が4:5にしか対応していないからです。`.mov`から動画編集で`.mp4`に変換し、それを`.webp`にします。
comfyuiの動画生成はカードの大きさではなかなか思うような動画が作れませんでした。やはり`1920x1080(1080p)`からの生成が最適でした。
- [16:9] 1920x1080 (1080p)
- [16:9] 1280×720 (720p)
- [16:9] 854x480 (480p)
- [4:3] 2160x1620
- [4:3] 1440x1080
- [4:3] 1024×768
- [4:3] 640×480
- [4:5] 2025x1620
- [4:5] 1536x2048
- [4:5] 1080x1350
```bash
$ magick convert -resize 480x -quality 100 4.png 4.webp
$ magick convert -quality 100 1.png 1.webp
$ magick convert -size 1620x2160 xc:white 1080p.png
$ magick convert -resize 1080x -quality 100 1.png 1.webp
```
```sh
$ ffmpeg -i 4.mp4 -vf "fps=15,setpts=PTS/4" -c:v libwebp -loop 1 -quality 100 4.webp
```
## list
<img src="https://git.syui.ai/ai/ai/raw/branch/main/card/1.webp" width="200px">
<img src="https://git.syui.ai/ai/ai/raw/branch/main/card/2.webp" width="200px">
<img src="https://git.syui.ai/ai/ai/raw/branch/main/card/3.webp" width="200px">
<img src="https://git.syui.ai/ai/ai/raw/branch/main/card/4.webp" width="200px">

View File

@ -1,153 +0,0 @@
{
"lexicon": 1,
"id": "ai.syui.system",
"revision": 1,
"description": "Syui's system definitions for game logic and metaphysics",
"defs": {
"main": {
"type": "record",
"record": {
"key": "self",
"recordType": "document",
"schema": {
"type": "object",
"required": ["card", "system"],
"properties": {
"card": {
"type": "array",
"items": { "$ref": "#card" }
},
"system": {
"type": "array",
"items": { "$ref": "#system" }
},
"weapon": {
"type": "array",
"items": { "$ref": "#weapon" }
},
"ability": {
"type": "array",
"items": { "$ref": "#ability" }
},
"character": {
"type": "array",
"items": { "$ref": "#character" }
}
}
}
}
},
"card": {
"type": "object",
"required": ["id", "img", "name", "lang"],
"properties": {
"id": { "type": "integer" },
"img": { "type": "string" },
"name": { "type": "string" },
"lang": {
"type": "object",
"properties": {
"ja": {
"type": "object",
"properties": {
"name": { "type": "string" },
"text": { "type": "string" }
}
}
}
}
}
},
"system": {
"type": "object",
"required": ["id", "enum", "name", "lang"],
"properties": {
"id": { "type": "integer" },
"enum": {
"type": "array",
"items": { "type": "string" }
},
"name": { "type": "string" },
"alias": {
"type": "array",
"items": { "type": "string" }
},
"lang": {
"type": "object",
"properties": {
"ja": { "type": "string" }
}
},
"description": { "type": "string" }
}
},
"weapon": {
"type": "object",
"required": ["id", "img", "name", "lang"],
"properties": {
"id": { "type": "integer" },
"img": { "type": "string" },
"name": { "type": "string" },
"lang": {
"type": "object",
"properties": {
"ja": {
"type": "object",
"properties": {
"name": { "type": "string" },
"text": { "type": "string" }
}
}
}
}
}
},
"ability": {
"type": "object",
"required": ["id", "name", "color"],
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"lang": {
"type": "object",
"properties": {
"ja": { "type": "string" }
}
},
"color": { "type": "string" },
"group": {
"type": "array",
"items": { "type": "string" }
},
"duration": { "type": "integer" },
"multiplier": {
"type": "object",
"additionalProperties": { "type": "number" }
}
}
},
"character": {
"type": "object",
"required": ["id", "name", "lang"],
"properties": {
"id": { "type": "integer" },
"img": { "type": "string" },
"name": { "type": "string" },
"lang": {
"type": "object",
"properties": {
"ja": {
"type": "object",
"properties": {
"name": { "type": "string" },
"text": { "type": "string" },
"description": { "type": "string" }
}
}
}
},
"text": { "type": "string" }
}
}
}
}

View File

@ -4,7 +4,6 @@ d=${0:a:h}
source $d/src/tag.zsh source $d/src/tag.zsh
source $d/src/func.zsh source $d/src/func.zsh
source $d/src/ue.zsh
source $d/src/ai/syui/game/character.zsh source $d/src/ai/syui/game/character.zsh
source $d/src/is/syu/main.zsh source $d/src/is/syu/main.zsh
@ -64,12 +63,6 @@ case $1 in
self-col) self-col)
self-col $2 self-col $2
;; ;;
ue-system)
ue-system
;;
ue-user)
ue-user $2
;;
*) *)
echo "${help[@]}" echo "${help[@]}"
echo "${host[@]}" echo "${host[@]}"

View File

@ -1,10 +0,0 @@
import json
record = {
"$type": "app.bsky.feed.post",
"text": "テスト投稿 from script",
"createdAt": "2025-05-26T12:00:00Z"
}
with open("record.json", "w", encoding="utf-8") as f:
json.dump(record, f, ensure_ascii=False, indent=2)

View File

@ -1,3 +1,33 @@
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(){ function download_character_icon(){
t=( t=(

View File

@ -15,7 +15,7 @@ function at-env() {
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`
d=${0:a:h} d=${0:a:h}
f=~/.config/syui/ai/bot/token.json f=~/.config/ai/token.json
if [ -f $f ];then if [ -f $f ];then
host=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"|cut -d / -f 3` host=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"|cut -d / -f 3`
token=`cat $f|jq -r .accessJwt` token=`cat $f|jq -r .accessJwt`

View File

@ -38,33 +38,3 @@ github=(
) )
tag=( at bsky bsync pds bgs plc ozone feed jetstream social-app oauth ) tag=( at bsky bsync pds bgs plc ozone feed jetstream social-app oauth )
#pds_list=(bsky.social syu.is boobee.blue socl.is ) #pds_list=(bsky.social syu.is boobee.blue socl.is )
character=(
ai
manny
quinn
chinese
kirin
leviathan
phoenix
wyvern
cerberus
dragon
kitsune
pegasus
)
character_img=(
bafkreie34pjuc6coenzcdwrgrh4fbacq7bkhsz263g5vpbsqxwaz37kkwy
bafkreie34pjuc6coenzcdwrgrh4fbacq7bkhsz263g5vpbsqxwaz37kkwy
bafkreie34pjuc6coenzcdwrgrh4fbacq7bkhsz263g5vpbsqxwaz37kkwy
bafkreidlealfybajqzwv5eoz4jshnsijc2vnktlhpw4ph47krwj6aigqby
bafkreiegpqedlrfa4ljhssdnkrr5hyd5huy2xhh2zszj5wq2wuuzejggmq
bafkreig6vszkx3c4dcortjwfsz6sa6zwqgj7zpxj4lxfrrkwql4xhiu5ou
bafkreich7fsumke2yvumvixkruonzrcevk3f6g2cntzfwdn4n2c2vox5dm
bafkreiacjvagsekhiiljz3j237b6klrt6pkptxljt7kltprgg5276gv25q
bafkreihpni4lp55jysalcntulzal5rbhidtbseanlucpyucagzxmv6xj24
bafkreia3huw2gdenqatoobx3hcft74chced46bw4znfgepo5aenegobkri
bafkreidy74aieb6ie646xhosginox5zbnbnrtd76cnt4pbn73hrxgfnple
bafkreifnbfj27fr6nv7qeqqmwdibf7qrw4lauvzoknw5hexbifmwqt6kmq
)

View File

@ -1,193 +0,0 @@
case $OSTYPE in
darwin*)
day=`gdate --iso-8601=seconds`
;;
*)
day=`date --iso-8601=seconds`
;;
esac
function get_game_user() {
rkey=$did.$pds
pds=bsky.social
if [ "$1" = "syui" ] || [ "$1" = "ai" ];then
rkey=$1
fi
req=com.atproto.repo.getRecord
url="https://$pds/xrpc/$req?rkey=$rkey&repo=$did_yui&collection=ai.syui.game"
curl -sL $url|jq .
}
function delete_game_user() {
rkey=$2
if [ -z "$1" ];then
col=ai.syui.game
else
col=$1
fi
req=com.atproto.repo.DeleteRecord
url=https://$pds/xrpc/$req
repo=$did
#repo=did:plc:6qyecktefllvenje24fcxnie
json="{\"collection\":\"$col\", \"rkey\":\"$rkey\", \"repo\":\"$repo\"}"
echo $json
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token" -d $json $url
}
function ue-user() {
col=ai.syui.game
rkey=$1
handle_yui=$handle
did_yui=$did
pds=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"|cut -d / -f 3`
if [ "$pds" != "syu.is" ];then
pds=bsky.social
fi
version=4
#rkey=syui
req=com.atproto.repo.putRecord
url=https://$pds/xrpc/$req
cname=dragon
if [ "$rkey" = "ai" ];then
cname=$rkey
gender=none
fi
if [ "$rkey" = "syui" ];then
cname=chinese
did=$did_syui
handle=syui.ai
gender=male
fi
if [ "$rkey" = "self" ];then
cname=manny
unset did handle gender
pds=bsky.social
plc=plc.directory
fi
season=1
group=test
lv=1
hp=1
exp=0
rare=0
mode=0
attack=0
attack_post=0
critical=0
critical_d=0
card=0
weapon=0
coin=0
count=0
case $cname in
ai)
group=origin
season=0
mode=2
;;
manny|quinn)
group=test
;;
*)
group=fantasy
;;
esac
json_item="
\"coin\": [{\"id\": 0, \"cp\": 0, \"rare\": 0, \"count\": 0}],
\"card\": [{\"id\": 0, \"cp\": 0, \"rare\": 0, \"count\": 0}],
\"weapon\": [{\"id\": 0, \"cp\": 0, \"rare\": 0, \"count\": 0}]
"
json="
{
\"repo\": \"$handle_yui\",
\"did\": \"$did_yui\",
\"collection\": \"$col\",
\"rkey\": \"$rkey\",
\"record\": {
\"version\": $version,
\"did\": \"$did\",
\"handle\": \"$handle\",
\"plc\": \"$plc\",
\"pds\": \"$pds\",
\"player\": {
\"limit\": false,
\"login\": false,
\"ten\": 0,
\"gender\": \"$gender\"
},
\"character\": {
$json
},
\"item\": {
$json_item
},
\"createdAt\": \"${created}\",
\"updatedAt\": \"${created}\"
}
}"
if echo $json|jq . ;then
echo y
read y
if [ "y" = "$y" ];then
t=`curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token" -d $json $url`
echo $t|jq .
#f=~/ai/ue/json/v${version}_${rkey}.json
#if [ -f $f ];then
# get_game_user $rkey >! $f
#fi
fi
fi
}
function ue-system() {
col=ai.syui.system
rkey=self
did=$did
handle=$handle
pds=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"|cut -d / -f 3`
if [ "$pds" != "syu.is" ];then
pds=bsky.social
fi
version=1
#rkey=syui
req=com.atproto.repo.putRecord
url=https://$pds/xrpc/$req
imgurl=https://git.syui.ai/ai/ai/raw/branch/main/img/item/card
json_card=" \"id\": $id, \"name\": \"$name\", \"img\": \"${imgurl}/${id}.webp\""
json_card=`curl -sL https://git.syui.ai/ai/ai/raw/branch/main/json/card.json|jq ".[]"`
json_weapon=`curl -sL https://git.syui.ai/ai/ai/raw/branch/main/json/weapon.json|jq ".[]"`
json_system=`curl -sL https://git.syui.ai/ai/ai/raw/branch/main/json/system.json|jq ".[]"`
json_character=`curl -sL https://git.syui.ai/ai/ai/raw/branch/main/json/character.json|jq ".[]"`
json_ability=`curl -sL https://git.syui.ai/ai/ai/raw/branch/main/json/ability.json|jq ".[]"`
json="
{
\"repo\": \"$handle\",
\"did\": \"$did\",
\"collection\": \"$col\",
\"rkey\": \"$rkey\",
\"record\": {
\"card\": ${json_card},
\"weapon\": ${json_weapon},
\"system\": ${json_system},
\"character\": ${json_character},
\"ability\": ${json_ability},
\"createdAt\": \"${created}\",
\"updatedAt\": \"${created}\"
}
}"
if echo $json|jq . ;then
echo y
read y
if [ "y" = "$y" ];then
t=`curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token" -d $json $url`
echo $t|jq .
fi
fi
}