MoreRSS

site iconZiShu | 子舒修改

本RSS包含了奇趣周刊。前端程序员,骑行爱好者,摄影爱好者,INFJ 。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

ZiShu | 子舒的 RSS 预览

如何导出 GitHub Discussions / Giscus 数据

2025-11-21 08:00:00

如果你的静态博客使用了 Giscus 作为评论系统,那么所有评论内容实际上都会存储在你对应仓库的 GitHub Discussions 中。 这种方式免去了自建数据库和后端的麻烦,但很多人会关心一个问题:能否把评论备份导出? 答案是:可以!因为 GitHub 提供了完整的 API 来读取 Discussions 的全部数据。下面是一份 python 脚本,可以一键导出 Discussions 的数据成 json 格式。 **准备工作:** 脚本放在最下方,我们先需要得到几个关键数据: - token(GITHUB_TOKEN)只需 `read:discussion` 权限 - 用户名(REPO_OWNER) - 仓库名(REPO_NAME) - Giscus 分类 ID(CATEGORY_ID) 前三者很好得到,暂不提,分类 ID 可以在之前部署 Giscus 看到,也就是 `data-category-id` 的值。 ![](https://imgurl.zishu.me/2025/11/1763689961720.webp) **开始爬取** 在本地新建一个 `export_giscus.py` 文件,复制下面的代码进去,然后将这几个信息都填到配置中,最后在终端执行 `python export_giscus.py`。 程序会生成一个 `.json`文件,里面就是所有的 Giscus 评论数据。 ```py import requests import json # 配置 GITHUB_TOKEN = "YOUR_GITHUB_TOKEN" # 填你的 token REPO_OWNER = "your_owner" # 仓库 owner REPO_NAME = "your_repo" # 仓库名 CATEGORY_ID = "your_category_id" # 绑定 giscus 的 Discussion 分类 ID # GraphQL Endpoint API_URL = "https://api.github.com/graphql" HEADERS = {"Authorization": f"Bearer {GITHUB_TOKEN}"} def run_query(query, variables=None): r = requests.post(API_URL, headers=HEADERS, json={'query': query, 'variables': variables}) if r.status_code != 200: raise Exception(f"Query failed with status code {r.status_code}: {r.text}") return r.json() def export_discussions(): discussions_data = [] has_next_page = True end_cursor = None query = """ query($owner:String!, $name:String!, $categoryId:ID!, $after:String) { repository(owner: $owner, name: $name) { discussions(first: 50, categoryId: $categoryId, after: $after) { nodes { id title url createdAt author { login, url } body comments(first: 100) { nodes { id createdAt author { login, url } body } } } pageInfo { endCursor hasNextPage } } } } """ while has_next_page: variables = { "owner": REPO_OWNER, "name": REPO_NAME, "categoryId": CATEGORY_ID, "after": end_cursor } result = run_query(query, variables) repo_data = result["data"]["repository"]["discussions"] for discussion in repo_data["nodes"]: discussions_data.append(discussion) end_cursor = repo_data["pageInfo"]["endCursor"] has_next_page = repo_data["pageInfo"]["hasNextPage"] with open(f"{REPO_OWNER}-{REPO_NAME}-giscus.json", "w", encoding="utf-8") as f: json.dump(discussions_data, f, ensure_ascii=False, indent=2) print(f"导出完成,共 {len(discussions_data)} 个 Discussion,保存到 {REPO_OWNER}-{REPO_NAME}-giscus.json") if __name__ == "__main__": export_discussions() ```

小区门口的烩面

2025-10-24 08:00:00

很久没有在小区门口看到摆摊的小贩了,之前还有很多,最近一个月突然销声匿迹,经常能看到城管在巡逻,应该是维持卫生秩序,不让摆摊。 然后昨天晚上下班后,和女友路过小区门口看到一家摆着河南烩面招牌的小摊,价格很公道只需要 12 元,来自家乡的味道,本来晚上不打算吃东西的,但是激烈思考了几秒钟后,决定和女友一起吃一碗。 毕竟也好久没吃了,我都记不起上次吃河南烩面是什么时候。 大致看了一下确实是羊肉汤煮的,能闻到些许羊膻味,感觉还是蛮正宗的。当时阿姨正在做的时候没怎么关注,只顾着和女友聊天了。 等到做完之后发现用一个塑料袋打包的,我们还略微吐槽了一下,第一次见用塑料袋打包汤面的,往常都会给一个塑料盒,不过也没怎么在意,分量还是很大的,想着是缩减成本然后就回家了。 等到家之后,拿出一个大碗把袋子套在里面,一打开就能闻到非常香的羊肉味(膻味),点缀着一些葱花香菜,看起来非常有食欲,汤里还带有一些羊杂、千张,甚至还有一颗鸡蛋,这让我们很惊喜。 虽然说成本不高,但是在杭州这个地方,遇到这个价位的食物,里面给出这些配料,非常之良心了。最后我们几乎是把汤都喝的干干净净。 ps: 另外想起来上回女友在公司楼下吃的一碗招牌牛肉面,25 元一碗,真的是清汤清水,喝了一口汤尝尝味道,连面都没吃直接走了。 哎,一言难尽。

局域网用 Gitea 同步代码 --- 纯图形界面

2025-10-22 08:00:00

因为一些需求,需要和同事之间同步一些代码,但是前提是不上云,也不想走公司内部的 svn 存储。因此打算在本地局域网起一个 git 服务,想要多台电脑像操作 GitHub 一样在本地执行各种拉取合并操作。 我锁定了开源项目 [Gitea](https://github.com/go-gitea/gitea),可以在任何一台机器上部署类似 GitHub 的服务,支持各个系统。当然也支持我的电脑环境本地 Windows。 只需要一台电脑长期开着充当服务器的角色,其他电脑在同一个局域网下就可以连接。 打开网站 https://dl.gitea.com/gitea/ ,找到最新版本,此时我的最新版本是 `1.24.6`,进去之后找到符合我电脑的版本。 ![](https://imgurl.zishu.me/2025/10/1761123101201.webp) 搜索 `windows-4.0-amd64.exe`,找到 `gitea-1.24.6-windows-4.0-amd64.exe`,点击下载,然后把这个文件放在一个指定的位置,比如我放在了 `D:\Gitea\` 目录下,然后再双击运行,就会弹出一个 cmd 窗口,不要关闭放在那里即可。 接下来打开 `http://localhost:3000/` ,就可以看到本地运行的服务。 ![](https://imgurl.zishu.me/2025/10/1761123704853.webp) 此时已经成功了一半,接下来就是配置时间。 - 数据库类型选择 SQLite3,不需要另外安装数据库 - 服务器域名填写本地 ip:192.168.xx.xx 这个(在终端执行 ipconfig 可以看到) - SSH 端口留空不写,因为我们只走 http,禁用 ssh 即可,HTTP 服务端口默认 3000 - 其他程序配置保持默认即可 **注意:关于管理员账号** 如果没有在配置服务时填入管理员账号,那么默认第一个注册的用户就是管理员。 ![](https://imgurl.zishu.me/2025/10/1761124074379.webp) 一切准备就绪后就完成了,让同事登录 `http://192.168.xx.xx:3000`,使用方式和 GitHub 一致。 终于可以愉快的写代码了~

随手拍 - 山间高速风景

2025-10-09 08:00:00

好久没更新日常了,国庆出去耍了一下...不过不是旅行办了一些私事,因此也没有拍什么照片。 第一次跑全程 3000km 的高速路线,杭州 - 重庆 - 杭州,看到了路上很多不同的风景,穿梭在云端的高速,遇山钻洞,遇水架桥。 ![](https://imgurl.zishu.me/2025/10/1759981636595.webp) 中秋节后一天看到的月亮,又大又圆,不过手机像素限制了。 ![](https://imgurl.zishu.me/2025/10/1759982089638.webp)

大明山牵牛岗露营游记

2025-08-11 08:00:00

上周于天气太过炎热,不开空调几乎不能待,所以拉着对象说去大明山上露营看星星,最重要的是可以避暑,查了一下“天文通”APP,山顶温度刚过 20°。 这一次的行程安排的比较充分,带着帐篷,充气床垫(自从上次去过象山回来后下单,至今还未使用),厨具(卡式炉锅碗瓢盆等),以及一些食材,螺狮粉,火锅丸子若干,方便面,然后还买了西瓜和卤味,准备的是相当充分。 周六早上起个大早收拾了一下,顺便洗洗水果,原本想的是中午之前能到目的地,结果在城区堵车了将近一个小时,两个多小时的车程硬生生跑了三个多小时,将近四个小时。 不过也不着急,一边聊天一边慢慢跑,安全第一。大概在 12 点也是到达了大明山山脚下,看到很多民宿和旅游团,我们慢悠悠的晃。此时距离目的地还有 20km 左右,剩下的全是盘山公路,上次跑这种公路还是在去年 12 月份,去了一趟寺坞岭看日出。 从山脚下往上看,重岩叠嶂,非常雄壮。公路不是很宽,会车时需要停下来慢点过,并且弯道处视线很不好,原本是打算鸣笛示意的,但是考虑到山区落石比较多,非必要情况下就不鸣笛了,避免和落石发生共振(不知道这种做法有没有问题),反正就是开的很慢,安全第一。 一路上没有遇到上山的车,可能因为我们去的比较早,下山的车基本也很少,偶尔遇到几辆,问了一下山上人多吗,说现在人不多,我们还在庆幸。 ![](https://imgurl.zishu.me/2025/08/1754878425058.webp) 大概跑了半个小时终于看到山顶的气象台,我们的目的地就在这个气象台的旁边。 ![](https://imgurl.zishu.me/2025/08/1754878674744.webp) 基本没有车,随便找了个不碍事的位置停一下。跟对象溜达了一圈,感叹风景非常不错,也很凉快大概只有 20° 出头,想着晚上估计会很冷,不过我们带了被子也没有太担心。 ![](https://imgurl.zishu.me/2025/08/1754878704495.webp) ![](https://imgurl.zishu.me/2025/08/1754878857593.webp) 随后我们就从车里搬东西,拉着小推车到观景平台准备搭帐篷露营,旁边还有厕所,有水源,挺方便的不是很脏,还比较满意。 找了个宽敞的位置,没有遮挡,可以直接俯瞰群山,景色秀丽。 ![](https://imgurl.zishu.me/2025/08/1754878839930.webp) 花了半个小时把帐篷搭起来,桌子摆一下,食材收拾一下,终于可以坐下来休息休息了。我们一边吃一边聊天,此时平台的人也渐渐多了起来,很多人准备来露营。幸好我们来的早,位置也比较宽阔。 ![](https://imgurl.zishu.me/2025/08/1754880032401.webp) 等吃完饭收拾一下,也差不多三四点了,有些疲惫就躺帐篷休息了。 --- 说实话,去的那天晚上观星条件不是很好,因为正好赶上满月,月亮很圆很大,导致星星就被遮盖住了。终于理解了那句古话, “萤火之光岂能与皓月争辉。” 不过也没有太在意,本来就是打算出来玩露营的,避避暑凉快一些。 第二天早上起来发现好多帐篷,附上一张图,我们洗漱了一下准备看看日出。不是很浓郁,但也有一番风味。 ![](https://imgurl.zishu.me/2025/08/1754879201404.webp) ![](https://imgurl.zishu.me/2025/08/1754878795687.webp) 然后我们去停车的地方准备拿点东西,发现人非常之多,震惊到我了,听旁边人说,昨天夜里路边跟集市一样,人满为患,还好我们在观景平台,人相对来说比较少。 跟管理员聊了一下,说车都停到 2 公里之外了,本来都停在侧边的,后面上来的车直接把路堵住了,上面的车想走都走不掉,他已经疏通了不少,只剩下眼前这几百米了。 ![](https://imgurl.zishu.me/2025/08/1754879518248.webp) 然后我们在路边看到了一些露营的人垃圾都不收拾好,风一吹刮的到处都是,部分垃圾飞下山坡,想清理都做不到,非常污染环境。管理员在旁边看着等他们人出来沟通一下,事后不清楚怎么样了。 反正我是垃圾都时刻装在袋子里,每次出门都带着垃圾袋,方便一起扔掉,毕竟这种非运营的地方又不收费,全靠自觉了。 ![](https://imgurl.zishu.me/2025/08/1754879537127.webp) --- 回到我们的营地,吃了个早饭,风很大,就打算打道回府了,总体来说此次旅程还是比较满意的。

南京游八月三日

2025-08-03 08:00:00

很久没出去旅游,有事来了趟南京顺便玩两天。虽然离杭州很近,但一直没有机会。 预约了侵华日军南京大暑杀遇难同胞纪念馆,非常庄严肃穆,刚好赶上淅淅沥沥的小雨,心情也变得沉重起来,感叹和平来之不易。 随后逛了总统府,了解了民国这一块的相关史实。 天色渐晚,又下起小雨,打消了前往秦淮河夫子庙的旅程,再会。 --- **侵华日军南京大暑杀遇难同胞纪念馆** ![30 万遇难者](https://imgurl.zishu.me/2025/08/1754227832698.webp) ![](https://imgurl.zishu.me/2025/08/1754227945379.webp) ![雕像](https://imgurl.zishu.me/2025/08/1754227914143.webp) **总统府** ![临时大总统府办公室](https://imgurl.zishu.me/2025/08/1754227569953.webp) ![孙中山雕像](https://imgurl.zishu.me/2025/08/1754227586781.webp)