Compare commits
5 Commits
main
...
d668aa382b
Author | SHA1 | Date | |
---|---|---|---|
d668aa382b
|
|||
fa603e17d8
|
|||
81b8b1851d
|
|||
caae3a63df
|
|||
5b96fb3061
|
38
.github/workflows/generate-record.yml
vendored
@ -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
|
@ -14,14 +14,15 @@ https://github.com/bluesky-social/atproto
|
||||
|
||||
## account
|
||||
|
||||
[@ai.syui.ai](https://syu.is/profile/did:plc:6qyecktefllvenje24fcxnie)
|
||||
[@ai.syu.is](https://web.syu.is/profile/ai.syu.is)
|
||||
|
||||
- https://at.syu.is/at/yui.syui.ai
|
||||
- https://plc.syu.is/did:plc:6qyecktefllvenje24fcxnie
|
||||
- https://plc.directory/did:plc:ytvoptig4ddshmwdsjmhtcym
|
||||
|
||||
[@yui.syui.ai](https://bsky.app/profile/did:plc:4hqjfn7m6n5hno3doamuhgef)
|
||||
|
||||
- https://plc.directory/did:plc:4hqjfn7m6n5hno3doamuhgef
|
||||
- https://pds.syu.is/at://did:plc:4hqjfn7m6n5hno3doamuhgef
|
||||
|
||||
```sh
|
||||
$ curl -sL syu.is/xrpc/_health
|
||||
|
100
compose.yml
@ -67,6 +67,38 @@ services:
|
||||
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
|
||||
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:
|
||||
ports:
|
||||
- 8100:8100
|
||||
@ -96,71 +128,3 @@ services:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
|
||||
ozone:
|
||||
ports:
|
||||
- 2585:3000
|
||||
build:
|
||||
context: ./repos/atproto/
|
||||
dockerfile: services/ozone/Dockerfile
|
||||
restart: always
|
||||
command: node --enable-source-maps api.js
|
||||
volumes:
|
||||
- ./data/ozone/:/data/
|
||||
- ./repos/ozone.js:/app/services/ozone/api.js:ro
|
||||
env_file:
|
||||
- ./envs/ozone
|
||||
healthcheck:
|
||||
test: "wget -q --spider http://localhost:3000/xrpc/_health"
|
||||
interval: 5s
|
||||
retries: 20
|
||||
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
|
||||
env_file:
|
||||
- ./envs/ozone
|
||||
depends_on:
|
||||
ozone:
|
||||
condition: service_healthy
|
||||
database:
|
||||
condition: service_healthy
|
||||
|
||||
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
|
||||
|
||||
jetstream:
|
||||
build:
|
||||
context: ./repos/jetstream/
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- 6008:6008
|
||||
volumes:
|
||||
- ./data/jetstream:/data
|
||||
restart: always
|
||||
env_file:
|
||||
- ./envs/jetstream
|
||||
|
||||
ipcc:
|
||||
image: nginx:alpine
|
||||
volumes:
|
||||
- ./configs/nginx/ipcc.conf:/etc/nginx/conf.d/default.conf
|
||||
ports:
|
||||
- 8099:80
|
||||
|
@ -1,9 +0,0 @@
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
add_header Content-Type application/json;
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
return 200 '{"countryCode":"JP"}';
|
||||
}
|
||||
}
|
@ -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
|
@ -19,9 +19,3 @@ OZONE_DB_MIGRATE=1
|
||||
|
||||
OZONE_ADMIN_PASSWORD
|
||||
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
|
||||
|
119
install.zsh
@ -1,11 +1,11 @@
|
||||
#!/bin/zsh
|
||||
|
||||
# ./install.zsh $pds
|
||||
# ./install.zsh $HOST
|
||||
|
||||
function at-repos-env() {
|
||||
pds=$1
|
||||
host=$1
|
||||
if [ -z "$1" ];then
|
||||
pds=syu.is
|
||||
host=syu.is
|
||||
fi
|
||||
did=did:plc:6qyecktefllvenje24fcxnie
|
||||
icon=https://git.syui.ai/ai/at/raw/branch/main/icons/Logotype.tsx
|
||||
@ -15,18 +15,17 @@ function at-repos-env() {
|
||||
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/ozone
|
||||
)
|
||||
d=${0:a:h}
|
||||
dh=${0:a:h:h}
|
||||
name=${pds%%.*}
|
||||
domain=${pds##*.}
|
||||
name=${host%%.*}
|
||||
domain=${host##*.}
|
||||
}
|
||||
|
||||
function at-repos-json() {
|
||||
f=~/.config/atproto/token.json
|
||||
j="{ \"did\": \"${did}\", \"didDoc\": { \"service\": [ { \"serviceEndpoint\": \"https://${pds}\" } ] }, \"handle\": \"ai.${pds}\", \"accessJwt\": \"xxx\" }"
|
||||
j="{ \"did\": \"did:plc:6qyecktefllvenje24fcxnie\", \"didDoc\": { \"service\": [ { \"serviceEndpoint\": \"https://syu.is\" } ] }, \"handle\": \"ai.syu.is\", \"accessJwt\": \"xxx\" }"
|
||||
if [ ! -f "$f" ];then
|
||||
mkdir -p ~/.config/atproto
|
||||
echo $j >> $f
|
||||
@ -36,26 +35,25 @@ function at-repos-json() {
|
||||
|
||||
function at-repos-token() {
|
||||
at-repos-json
|
||||
if [ -z "$pds" ] && [ -f $f ];then
|
||||
pds=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"`
|
||||
if [ -z "$host" ] && [ -f $f ];then
|
||||
host=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"`
|
||||
handle=`cat $f|jq -r ".handle"`
|
||||
did=`cat $f|jq -r ".did"`
|
||||
token=`cat $f|jq -r ".token"`
|
||||
pds=${pds##*/}
|
||||
host=${host##*/}
|
||||
fi
|
||||
name=${pds%%.*}
|
||||
domain=${pds##*.}
|
||||
name=${host%%.*}
|
||||
domain=${host##*.}
|
||||
}
|
||||
|
||||
function at-repos-clone() {
|
||||
if [ ! -d $d/repos ];then
|
||||
mkdir -p $d/repos
|
||||
fi
|
||||
cd $d/repos
|
||||
for ((i=1; i<=${#repos}; i++)); do
|
||||
repo=${repos[$i]}
|
||||
echo $repo
|
||||
if [ -d $d/repos/${repo##*/} ] && [ "${repo##*/}" = "social-app" ];then
|
||||
rm -rf $d/repos/${repo##*/}
|
||||
fi
|
||||
if [ ! -d $d/repos/${repo##*/} ];then
|
||||
git clone $repo
|
||||
fi
|
||||
@ -73,7 +71,6 @@ function at-repos-pull() {
|
||||
if [ -d $d/repos/${repo##*/} ];then
|
||||
cd $d/repos/${repo##*/}
|
||||
if ! git pull;then
|
||||
cd $d/repos
|
||||
rm -rf $d/repos/${repo##*/}
|
||||
at-repos-clone
|
||||
fi
|
||||
@ -99,44 +96,21 @@ function at-repos-social-app-write() {
|
||||
|
||||
dt=$d/repos/social-app/src
|
||||
cd $dt
|
||||
|
||||
f=$dt/lib/statsig/statsig.tsx
|
||||
sed -i "s#api: 'https://events.bsky.app/v2'#api: 'https://syu.is/events/v2/disabled'#g" $f
|
||||
sed -i "s#initTimeoutMs: 1,#initTimeoutMs: 1, disableAllLogging: true,#g" $f
|
||||
|
||||
t=(bsky.social bsky.app)
|
||||
for tt in "${t[@]}"; do
|
||||
escaped_tt=$(echo "$tt" | sed 's/\./\\./g')
|
||||
grep -R "$escaped_tt" . | cut -d : -f 1 | sort -u | xargs -r sed -i "s/${tt}/${pds}/g"
|
||||
done
|
||||
|
||||
t=(api public.api public.api.bsky public.bsky)
|
||||
for tt in "${t[@]}"; do
|
||||
grep -R "${tt}\.${pds}" . | cut -d : -f 1 | sort -u | xargs -r sed -i "s/${tt}\.${pds}/bsky.${pds}/g"
|
||||
done
|
||||
|
||||
t=(cardyb status go)
|
||||
for tt in "${t[@]}"; do
|
||||
grep -R "${tt}\.${pds}" . | cut -d : -f 1 | sort -u | xargs -r sed -i "s/${tt}\.${pds}/${tt}.bsky.app/g"
|
||||
done
|
||||
|
||||
#f=$dt/lib/strings/url-helpers.ts
|
||||
#sed -i 's#https://go.bsky.app/redirect?u=${encodeURIComponent(url)}#url#g' $f
|
||||
#sed -i 's#`url`#url#g' $f
|
||||
|
||||
## cloudflare worker -> /ipcc
|
||||
#f=$dt/state/geolocation.tsx
|
||||
#sed -i 's#https://syu\.is/ipcc#https://bsky\.app/ipcc#g' $f
|
||||
|
||||
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/web.${host}/g"
|
||||
f=$dt/lib/constants.ts
|
||||
sed -i "s/public.api.web/bsky/g" $f
|
||||
f=$dt/view/icons/Logotype.tsx
|
||||
o=$d/icons/Logotype.tsx
|
||||
cp -rf $o $f
|
||||
|
||||
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
|
||||
sed -i "s#/img/avatar/plain/#https://bsky.${pds}/img/avatar/plain/#g" $f
|
||||
sed -i "s#/img/avatar_thumbnail/plain/#https://bsky.${pds}/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_thumbnail/plain/#https://bsky.${host}/img/avatar/plain/#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"
|
||||
}
|
||||
|
||||
@ -144,10 +118,47 @@ function at-repos-bsky-patch() {
|
||||
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
|
||||
d_=$d/repos/atproto
|
||||
p_=$d_/105-atproto-services-for-docker.diff
|
||||
cd $d_
|
||||
p_=$d/patching/105-atproto-services-for-docker.diff
|
||||
cd ${d_}
|
||||
if [ ! -f ${p_} ];then
|
||||
# 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
|
||||
else
|
||||
echo local patch
|
||||
fi
|
||||
echo "applying patch: under ${f} for ${p_}"
|
||||
pushd ${d_}
|
||||
patch -p1 < ${p_}
|
||||
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_}
|
||||
@ -166,5 +177,13 @@ at-repos-social-app-icon
|
||||
at-repos-social-app-icon-origin
|
||||
at-repos-social-app-write
|
||||
at-repos-bsky-patch
|
||||
at-repos-docker
|
||||
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
|
||||
|
BIN
item/card/0.png
Before ![]() (image error) Size: 44 KiB |
BIN
item/card/0.webp
Before ![]() (image error) Size: 10 KiB |
BIN
item/card/1.png
Before ![]() (image error) Size: 544 KiB |
BIN
item/card/1.webp
Before ![]() (image error) Size: 69 KiB |
BIN
item/card/10.png
Before ![]() (image error) Size: 933 KiB |
Before ![]() (image error) Size: 160 KiB |
BIN
item/card/11.png
Before ![]() (image error) Size: 688 KiB |
Before ![]() (image error) Size: 136 KiB |
BIN
item/card/12.png
Before ![]() (image error) Size: 516 KiB |
Before ![]() (image error) Size: 60 KiB |
BIN
item/card/13.png
Before ![]() (image error) Size: 324 KiB |
Before ![]() (image error) Size: 105 KiB |
Before ![]() (image error) Size: 38 KiB |
Before ![]() (image error) Size: 11 KiB |
Before ![]() (image error) Size: 2.6 MiB |
Before ![]() (image error) Size: 4.4 MiB |
BIN
item/card/14.png
Before ![]() (image error) Size: 462 KiB |
Before ![]() (image error) Size: 109 KiB |
BIN
item/card/2.png
Before ![]() (image error) Size: 361 KiB |
BIN
item/card/2.webp
Before ![]() (image error) Size: 39 KiB |
BIN
item/card/3.png
Before ![]() (image error) Size: 683 KiB |
BIN
item/card/3.webp
Before ![]() (image error) Size: 94 KiB |
BIN
item/card/4.png
Before ![]() (image error) Size: 805 KiB |
BIN
item/card/4.webp
Before ![]() (image error) Size: 94 KiB |
BIN
item/card/5.png
Before ![]() (image error) Size: 402 KiB |
BIN
item/card/5.webp
Before ![]() (image error) Size: 81 KiB |
BIN
item/card/6.png
Before ![]() (image error) Size: 476 KiB |
BIN
item/card/6.webp
Before ![]() (image error) Size: 104 KiB |
BIN
item/card/7.png
Before ![]() (image error) Size: 713 KiB |
BIN
item/card/7.webp
Before ![]() (image error) Size: 90 KiB |
BIN
item/card/8.png
Before ![]() (image error) Size: 330 KiB |
BIN
item/card/8.webp
Before ![]() (image error) Size: 51 KiB |
BIN
item/card/9.png
Before ![]() (image error) Size: 680 KiB |
BIN
item/card/9.webp
Before ![]() (image error) Size: 103 KiB |
@ -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">
|
||||
|
@ -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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,6 @@ d=${0:a:h}
|
||||
|
||||
source $d/src/tag.zsh
|
||||
source $d/src/func.zsh
|
||||
source $d/src/ue.zsh
|
||||
source $d/src/ai/syui/game/character.zsh
|
||||
source $d/src/is/syu/main.zsh
|
||||
|
||||
@ -62,13 +61,7 @@ case $1 in
|
||||
verify-icon
|
||||
;;
|
||||
self-col)
|
||||
self-col $2
|
||||
;;
|
||||
ue-system)
|
||||
ue-system
|
||||
;;
|
||||
ue-user)
|
||||
ue-user $2
|
||||
self-col
|
||||
;;
|
||||
*)
|
||||
echo "${help[@]}"
|
||||
|
@ -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)
|
@ -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(){
|
||||
|
||||
t=(
|
||||
@ -189,8 +219,8 @@ delete_game_user() {
|
||||
function create_game_user() {
|
||||
col=ai.syui.game
|
||||
rkey=$1
|
||||
handle_yui=$handle
|
||||
did_yui=$did
|
||||
did=$did
|
||||
handle=$handle
|
||||
pds=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"|cut -d / -f 3`
|
||||
if [ "$pds" != "syu.is" ];then
|
||||
pds=bsky.social
|
||||
@ -219,8 +249,6 @@ function create_game_user() {
|
||||
if [ "$rkey" = "self" ];then
|
||||
cname=manny
|
||||
unset did handle gender
|
||||
pds=bsky.social
|
||||
plc=plc.directory
|
||||
fi
|
||||
imguri=https://cdn.bsky.app/img/feed_thumbnail/plain/$did_yui/${cid}@jpeg
|
||||
season=1
|
||||
@ -258,8 +286,8 @@ function create_game_user() {
|
||||
|
||||
v1_json="
|
||||
{
|
||||
\"repo\": \"$handle_yui\",
|
||||
\"did\": \"$did_yui\",
|
||||
\"repo\": \"$handle\",
|
||||
\"did\": \"$did\",
|
||||
\"collection\": \"$col\",
|
||||
\"rkey\": \"$rkey\",
|
||||
\"record\": {
|
||||
@ -285,8 +313,8 @@ json_item="
|
||||
|
||||
json="
|
||||
{
|
||||
\"repo\": \"$handle_yui\",
|
||||
\"did\": \"$did_yui\",
|
||||
\"repo\": \"$handle\",
|
||||
\"did\": \"$did\",
|
||||
\"collection\": \"$col\",
|
||||
\"rkey\": \"$rkey\",
|
||||
\"record\": {
|
||||
@ -317,7 +345,7 @@ if echo $json|jq . ;then
|
||||
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 .
|
||||
#echo $t|jq .
|
||||
#f=~/ai/ue/json/v${version}_${rkey}.json
|
||||
#if [ -f $f ];then
|
||||
# get_game_user $rkey >! $f
|
||||
|
@ -10,12 +10,8 @@ function at-env() {
|
||||
did=$did_yui
|
||||
created=2025-04-21T00:00:00.323Z
|
||||
docs_uri=https://docs.bsky.app/docs/api
|
||||
at_uri=at://$handle/ai.syui.game/ai
|
||||
did=`echo $at_uri|cut -d / -f 3`
|
||||
collection=`echo $at_uri|cut -d / -f 4`
|
||||
rkey=`echo $at_uri|cut -d / -f 5`
|
||||
d=${0:a:h}
|
||||
f=~/.config/syui/ai/bot/token.json
|
||||
f=~/.config/ai/token.json
|
||||
if [ -f $f ];then
|
||||
host=`cat $f|jq -r ".didDoc.service.[].serviceEndpoint"|cut -d / -f 3`
|
||||
token=`cat $f|jq -r .accessJwt`
|
||||
@ -27,6 +23,10 @@ function at-env() {
|
||||
plc=plc.syu.is
|
||||
pds=$host
|
||||
fi
|
||||
at_uri=at://$handle/ai.syui.game/ai
|
||||
did=`echo $at_uri|cut -d / -f 3`
|
||||
collection=`echo $at_uri|cut -d / -f 4`
|
||||
rkey=`echo $at_uri|cut -d / -f 5`
|
||||
}
|
||||
|
||||
function at-unset() {
|
||||
|
@ -1,11 +1,6 @@
|
||||
#!/bin/zsh
|
||||
|
||||
function self-col(){
|
||||
if [ -n "$1" ];then
|
||||
t=`curl -sL "$pds/xrpc/com.atproto.repo.listRecords?repo=$handle&collection=$1"`
|
||||
echo $t|jq .
|
||||
exit
|
||||
fi
|
||||
col=(
|
||||
ai.syui.game
|
||||
ai.syui.system
|
||||
|
@ -38,33 +38,3 @@ github=(
|
||||
)
|
||||
tag=( at bsky bsync pds bgs plc ozone feed jetstream social-app oauth )
|
||||
#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
|
||||
)
|
||||
|
193
scpt/src/ue.zsh
@ -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
|
||||
}
|