# 手机发布微语 这几天研究一下长毛象,和 Misskey。发现这开源微博是一个很适合发碎碎念的东西。而且我自己搭的实例就我一个人怎么发也无所谓。在另外的账号,另外的社区内潜水。事实证明,人与人的悲欢并不相同。 ​研究active hub过程中,发现了一个go写的。据说能和长毛象互联。而且很适合替代微语js。正好与js所用的云服务国际版不对国内提供服务了。顺手换掉。 ​记下使用的相关代码和部署过程。​看了一下misskey和gotosociety的api。 成果: [https://www.ftls.xyz/whispers/](https://www.ftls.xyz/whispers/) ## 相关资料 ### Misskey 有PWA,可安装到手机电脑。像普通软件一样。 [https://github.com/misskey-dev/misskey/](https://github.com/misskey-dev/misskey/) [Fediverse不止Mastodon——Misskey介绍](https://akaito.xyz/post/misskey/#top) [Docker 搭建去中心化的微博客平台 Misskey](https://www.zatp.com/post/build-misskey-docker/) Misskey 部署好之后,打开 https://example.com/api-doc 可打开内置API文档,https://example.com/ 主页登录后侧边栏也有api调试工具。Misskey的缺点就是Docker镜像就2G。如果仅仅一个人使用,作为微语,有点浪费。 **API**: POST https://fimb.ftls.xyz/api/users/notes body: body json ```json { "userId": "93ckt7gzby", "untilDate": 2659324635043, // 13位时间戳 "limit": 5 } ``` return 说明: 无需认证。请求最新的5条,数据依据时间逆序输出。只会显示public. 内容字段 data[0].text 时间字段 data[0].createdAt ```json [ { "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** ```html 我的第一个 HTML 页面
  • {{ it.text }}
  • ``` ### gotosocial 开源长毛象同类软件。可使用Tusky长毛象客户端,也就是说可以在手机上使用客户端发微语,说说。Docker镜像60M+。基本只有API,可使用。很轻量。 #### 资料 开源地址 https://github.com/superseriousbusiness/gotosocial 文档 https://docs.gotosocial.org/en/latest/ API文档 https://docs.gotosocial.org/en/latest/api/swagger/ #### API 说明: 无需认证。请求最新的5条,数据依据时间逆序输出。只会显示public.也就是说,在客户端写微语的时候需要特别注明公开。这个GotoSocial注册完之后,反向代理几个用到的路径就可以了。 {{< image src="https://cdn.ftls.xyz/images/2022/06/20220802120034.png" caption="反向代理几个用到的路径" >}} **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 ```json [ { "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": "

    111

    ", "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": "

    浮生若梦,为欢几何?
    个人网站 www.ftls.xyz

    ", "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就可以了。