10
atproto
syui edited this page 2024-09-20 09:13:19 +00:00
curl
no-authorization
https://docs.bsky.app/docs/api/com-atproto-repo-describe-repo
handle=yui.syui.ai
host=bsky.social
api=$host/xrpc
plc=plc.directory
url=$api/com.atproto.repo.describeRepo
curl -sL ${host}/xrpc/_health
d=`curl -sL "${url}?repo=$handle"`
echo $d
did=`echo $d|jq -r .did`
echo $did
collection=app.bsky.feed.post
url=$api/com.atproto.repo.listRecords
timed=`curl -sL "${url}?repo=$handle&collection=$collection&reverse=true&limit=1"|jq -r ".[]|.[0]?|.value.createdAt"`
cid=`curl -sL "${url}?repo=$handle&collection=$collection&reverse=true&limit=1"|jq -r ".[]|.[0]?|.cid"`
uri=`curl -sL "${url}?repo=$handle&collection=$collection&reverse=true&limit=1"|jq -r ".[]|.[0]?|.uri"`
rkey=`echo $uri|cut -d / -f 5`
url=$api/com.atproto.repo.getRecord
curl -sL "$url?repo=$did&collection=$collection&rkey=$rkey"|jq .
uri=at://did:plc:vjug55kidv6sye7ykr5faxxn/app.bsky.feed.post/3jzn6g7ixgq2y
cid=bafyreiey2tt4dhvuvr7tofatdverqrxmscnnus2uyfcmkacn2fov3vb4wa
did=did:plc:vjug55kidv6sye7ykr5faxxn
rkey=3jzn6g7ixgq2y
url=$api/com.atproto.repo.getRecord
curl -sL "$url?repo=$did&collection=$collection&rkey=$rkey&cid="|jq .
did
handle=yui.syui.ai
curl -sL "https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=$handle"
{"did":"did:plc:4hqjfn7m6n5hno3doamuhgef"}
did=did:plc:4hqjfn7m6n5hno3doamuhgef
curl -sL https://plc.directory/$did | jq -r ".alsoKnownAs.[]"
at://yui.syui.ai
login
# session
host=bsky.social
handle=syui.bsky.social
pass=xxx
url=https://$host/xrpc/com.atproto.server.createSession
curl -sL -X POST -H "Content-Type: application/json" -d "{\"identifier\":\"$handle\",\"password\":\"$pass\"}" $url
# refresh
j=`!!`
token=`echo $j|jq -r .accessJwt`
refresh=`echo $j|jq -r .refreshJwt`
url=https://$host/xrpc/com.atproto.server.refreshSession
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $refresh" $url
jq
ここではaiosにインストールされているjq, daselのexample
をまとめます。
null
id:3
のname:null
を除外して表示
[
{
"id": 1,
"name": "aios",
"display": "ai os"
},
{
"id": 2,
"name": "archlinux",
"display": "Arch Linux"
},
{
"id": 3,
"display": "Linux Kernel"
}
]
$ echo $json|jq -r ".[]|{name, display}|select(.name | length > 0)|.name,.display"
aios
ai os
archlinux
Arch Linux
$ echo $json|jq -r ".[]|.name // empty"
aios
archlinux
dasel
$ cat ~/.config/ai/token.toml|dasel -r toml host
'syu.is'
feed
feed = at://did:plc:4hqjfn7m6n5hno3doamuhgef/app.bsky.feed.generator/cmd
# https://docs.bsky.app/docs/api/app-bsky-feed-get-feed
token=`cat ~/.config/ai/token.json|jq -r .accessJwt`
url=at://did:plc:4hqjfn7m6n5hno3doamuhgef/app.bsky.feed.generator/cmd
curl -sL "https://public.api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=$url" -H "Authorization: Bearer $token"