这几天研究一下长毛象,和 Misskey。发现这开源微博是一个很适合发碎碎念的东西。而且我自己搭的实例就我一个人怎么发也无所谓。在另外的账号,另外的社区内潜水。事实证明,人与人的悲欢并不相同。
研究active hub过程中,发现了一个go写的。据说能和长毛象互联。而且很适合替代微语js。正好与js所用的云服务国际版不对国内提供服务了。顺手换掉。
记下使用的相关代码和部署过程。看了一下misskey和gotosociety的api。
成果: https://www.ftls.xyz/whispers/
有PWA,可安装到手机电脑。像普通软件一样。
https://github.com/misskey-dev/misskey/
Fediverse不止Mastodon——Misskey介绍
Docker 搭建去中心化的微博客平台 Misskey
Misskey 部署好之后,打开 https://example.com/api-doc 可打开内置API文档,https://example.com/ 主页登录后侧边栏也有api调试工具。Misskey的缺点就是Docker镜像就2G。如果仅仅一个人使用,作为微语,有点浪费。同时有分支版本 Firefish 可以选择。
API:
POST
https://fimb.ftls.xyz/api/users/notes
body:
body json
1
2
3
4
5
| {
"userId": "93ckt7gzby",
"untilDate": 2659324635043, // 13位时间戳
"limit": 5
}
|
return
说明: 无需认证。请求最新的5条,数据依据时间逆序输出。只会显示public.
内容字段 data[0].text
时间字段 data[0].createdAt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| [
{
"id": "93dhfnfgl8",
"createdAt": "2022-07-31T22:52:47.836Z",
"userId": "93ckt7gzby",
"user": {
"id": "93ckt7gzby",
"name": "恐咖兵糖",
"username": "kkbt",
"host": null,
"avatarUrl": "https://fimb.ftls.xyz/files/thumbnail-a5dd743f-b55c-4c6e-8e9e-d734a3bdd40d",
"avatarBlurhash": "yHG9OA0000?Fjqx]%M~VfA4ntk%LRQs;4Toz%ftRRPerWp9xt6-UV]oNNabHg3afsWR%S0t6Vs-DRikqRjRjxaofI.s:xaRlRQtRX8",
"avatarColor": null,
"isAdmin": true,
"isCat": true,
"emojis": [],
"onlineStatus": "unknown",
"driveCapacityOverrideMb": null
},
"text": "今天早上下大雨,本来据说最高温度32度。看起来下完雨之后能好过一些😃",
"cw": null,
"visibility": "public",
"renoteCount": 0,
"repliesCount": 0,
"reactions": {},
"emojis": [],
"fileIds": [],
"files": [],
"replyId": null,
"renoteId": null
},
.
.
.
]
|
随手写了个样例页面
HTML example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| <!DOCTYPE html>
<html>
<head>
<title>我的第一个 HTML 页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body onload="load();">
<div id="app">
<li v-for="it in items" :key="it.text">
{{ it.text }}
</li>
</div>
</body>
<script type="text/javascript">
function load() {
console.log("Loading...");
const url = "https://fimb.ftls.xyz/api/users/notes"
const dt = {
"userId": "93ckt7gzby",
"untilDate": 1659324635043,
"limit": 5
}
const request = axios.post(url, JSON.stringify(dt)).then(function (response) {
var app = new Vue({
el: '#app',
data: {
items: response.data
}
})
}).catch(function (error) {
console.log(error);
});
}
</script>
</html>
|
开源长毛象同类软件。可使用Tusky长毛象客户端,也就是说可以在手机上使用客户端发微语,说说。Docker镜像60M+。基本只有API,可使用,很轻量。建议客户端 Elk 鹿鸣。
开源地址 https://github.com/superseriousbusiness/gotosocial
文档 https://docs.gotosocial.org/en/latest/
API文档 https://docs.gotosocial.org/en/latest/api/swagger/
部署起来不算很麻烦,20230916 算是简单。比 misskey 资源占用少很多。
说明: 无需认证。请求最新的5条,数据依据时间逆序输出。只会显示public.也就是说,在客户端写微语的时候需要特别注明公开。这个GotoSocial注册完之后,反向代理几个用到的路径就可以了。
反向代理几个用到的路径API
GET https://ftls.xyz/api/v1/accounts/{{ USEID }}/statuses?limit=5
{{ USEID }} 字段,在搭建完成后,随便上传一张图片。再在网页中显示出来,图片链接路径中就包含 {{ USEID }} 。或者Docker搭建,映射出的data目录,里面有一个文件夹,文件夹名就是 {{ USEID }}。形如 01MQCWFXER7J0VT0NNYV2XQ6Q2
内容字段 data[0].text
时间字段 data[0].created_at
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| [
{
"id": "01G9BRZ4GBN1Q5Y5KD3APK1F85",
"created_at": "2022-08-01T04:00:03.083Z",
"in_reply_to_id": "",
"in_reply_to_account_id": "",
"sensitive": false,
"spoiler_text": "",
"visibility": "public",
"language": "en",
"uri": "https://ftls.xyz/users/kkbt/statuses/01G9BRZ4GBN1Q5Y5KD3APK1F85",
"url": "https://ftls.xyz/@kkbt/statuses/01G9BRZ4GBN1Q5Y5KD3APK1F85",
"replies_count": 0,
"reblogs_count": 0,
"favourites_count": 0,
"favourited": false,
"reblogged": false,
"muted": false,
"bookmarked": false,
"pinned": false,
"content": "<p>111</p>",
"reblog": null,
"application": {
"name": "Tusky",
"website": "https://tusky.app"
},
"account": {
"id": "{{ USEID }}",
"username": "kkbt",
"acct": "kkbt",
"display_name": "恐咖兵糖",
"locked": false,
"bot": false,
"created_at": "2022-07-31T13:12:23.000Z",
"note": "<p>浮生若梦,为欢几何?<br/>个人网站 <a href=\"https://www.ftls.xyz\" rel=\"noopener nofollow noreferrer\" target=\"_blank\">www.ftls.xyz</a></p>",
"url": "https://ftls.xyz/@kkbt",
"avatar": "https://ftls.xyz/fileserver/{{ USEID }}/attachment/original/01NSEJRKBGDZ23ECNV838DJPWG.png",
"avatar_static": "https://ftls.xyz/fileserver/{{ USEID }}/attachment/small/01NSEJRKBGDZ23ECNV838DJPWG.jpeg",
"header": "https://ftls.xyz/fileserver/{{ USEID }}/attachment/original/01DJP5BYYAV057WS2M1PE3GHP0.png",
"header_static": "https://ftls.xyz/fileserver/{{ USEID }}/attachment/small/01DJP5BYYAV057WS2M1PE3GHP0.jpeg",
"followers_count": 0,
"following_count": 0,
"statuses_count": 7,
"last_status_at": "2022-08-01T04:00:03.083Z",
"emojis": [],
"fields": []
},
"media_attachments": [],
"mentions": [],
"tags": [],
"emojis": [],
"card": null,
"poll": null,
"text": "111"
}
]
|
html和上面的几乎一致,只要改post为get就可以了。