2024-11-21 08:00:00
一款 Chrome 扩展,支持在屏幕的任意位置进行精彩的录制和信息标注,您可以同时录入清晰的麦克风音频或系统内部音频,并且还可享受便捷的点击高亮效果。此外,录制的视频能够轻松导出为 MP4、gif、webm 等多种流行文件格式,并且还提供简单易用的视频编辑功能,让您的创作更加完美!
https://github.com/janarosmonaliev/github-globe
Github 主页上的地球仪是用 ThreeJS 实现的,具有漂亮的阴影。
一个基于 Chrome 浏览器的扩展,可以用来临时记笔记。
https://toexcel.zhiyakeji.com/
图片转 excel 使用了先进的 OCR 识别技术,能够精准的识别图片中的表格和文字,并将其还原并转成可编辑的 excel 文件。
免费在线记事本,可即时共享,无需安装,点开即可使用。
只需输入目标网址,点击检测,即可快速获知该网址是否支持 iframe 嵌套。
https://github.com/HCLonely/awesome-bilibili-extra
Bilibili 脚本合集,收集一些让我们在使用 B 站时更加方便的浏览器扩展/脚本/程序。
https://github.com/realvjy/coolshapes-demo
该代码库包含一个简单的演示项目,用于检查来自 coolshapes-react 包的所有形状。
2024-11-14 08:00:00
https://github.com/Ray-D-Song/web-archive
Web Archive 是基于 Cloudflare 的免费网页归档和共享服务,将网页保存为单个 html 文件并上传到服务器,服务器接收浏览器插件上传的 html 文件,并存储到数据库和存储桶中,最终在 Web 客户端显示这些文件。
https://www.techbrood.com/tool?p=css-clip-path
可以在线通过拖拽画幅节点,利用 Clip-path 属性剪切各种形状的图形,非常好用的工具。
https://github.com/imtaotao/danmu
danmu 是一个在 GitHub 上开源的弹幕项目,提供了碰撞检测和高度自定义的弹幕屏幕样式,旨在为用户提供一个轻量级、高度可定制且易于集成的弹幕解决方案。
https://github.com/JasonGrass/auto-extension-manager
auto-extension-manager 是一个开源的浏览器扩展管理器,支持自定义规则自动启用或禁用扩展,提供多种匹配条件和动作,以及批量导出 / 导入扩展功能,同时支持多语言和丰富的配置选项。
优雅的查看照片的专业信息 EXIF,本地运行不上传云端,还是比较安全的。
经典街机糖豆人游戏在线版本。
https://github.com/blinko-space/blinko
Blinko 是一个创新的开源项目,专为那些想要快速捕捉和组织转瞬即逝的想法的个人而设计。Blinko 允许用户在想到想法的那一刻就无缝地记下想法,确保不丢失任何创造力的火花。
2024-11-12 08:00:00
Lobechat 就不做过多介绍了,一个开源、现代设计的人工智能聊天框架。
今天就来聊聊同步的问题,Lobechat 分为社区版和正式版,正式版需要付费订阅套餐,支持全局云同步,但是最便宜的套餐都要 4.9 刀,这让我 API 用户感觉有点难以接受。因为我需要的功能社区版都已经满足了,并不打算单独对云同步付费。
官方之前有通过 WebRTC 同步数据的方案,但在某个版本被废弃了,其实我也能理解,WebRTC 同步方案太过麻烦,且具有不稳定性,必须保证同时两台设备在线,而且实现原理让我感觉有一丝不安全性。
对 WebRTC 概念感兴趣的话可以看下官方的一篇文章:
https://github.com/lobehub/lobe-chat/discussions/368
其实除了正式版之外,还有服务器自建数据库等同步方法,但都需要一定的成本和技术壁垒。
因此我在社区版的基础上构思了一个脚本,通过 Webdav 技术实现对话记录、设置等同步。此方案成本基本为零,坚果云免费额度都绰绰有余。
但研究开始之前,有两个概念需要先了解一下。
大多数网盘都支持通过 Webdav 技术进行同步,网盘会提供一套账号密码以及服务器地址,在前端调用 API,能够实现增删改查等操作。
油猴管理器(Tampermonkey)无疑是浏览器插件的伟大创作之一,可以对网页注入 js 脚本来实现一些功能。
我研究过 Lobechat 源码,它数据都存放在本地的 IndexedDB 数据库中,这是浏览器的一个存储机制,可以存放大量的数据,显示则是以数据库的格式。
然后我先手动导出一份 json 格式的全局数据(社区版只支持手动导入导出文件),拿这份文件跟 IndexedDB 数据库 做对比,发现字段基本保持一致,数据格式也不用转,全部都在其中。
于是我翻阅了一下官方文档,有可以利用的 API,操作查询这些数据,下面是我的一些思路。
先声明我想要拿到的数据,这些都在上面的截图中存在。
const dbName = "LOBE_CHAT_DB";
const storeNames = ["messages", "sessionGroups", "sessions", "topics", "users"];
let request = indexedDB.open(dbName);
request.onsuccess = (event) => {
const db = event.target.result;
let state = {
messages: [],
sessionGroups: [],
sessions: [],
topics: [],
users: [],
};
let pendingStores = 0;
storeNames.forEach((storeName) => {
if (db.objectStoreNames.contains(storeName)) {
pendingStores++;
const transaction = db.transaction([storeName], "readonly");
const objectStore = transaction.objectStore(storeName);
const allRecords = objectStore.getAll();
allRecords.onsuccess = (event) => {
const result = event.target.result;
state[storeName] = result;
pendingStores--;
if (pendingStores === 0) {
/*
* 整个数据库的数据都可以导出
* 在此回调执行操作
*/
}
};
}
});
};
既然可以查询,就可以覆盖,同样也有 API 支持,所以我就构思了一下流程,利用 Webdav 的增删改查,把这些数据传到网盘中,然后在另一台设备拉取,最后优化一下整个流程,让它更加可视化。
大致原型如下:
点击同步到云端,会通过 Webdav API 在网盘创建一个指定的文件夹 lobechat-webdav-backup
(我自己随意命名的),在本地程序中生成一个 json 文件,IndexedDB 数据会被放入该文件中,然后通过 Webdav API 传输到网盘中。
点击下载到本地,会先通过 Webdav API 获取lobechat-webdav-backup
下的 json 文件内容,利用 IndexedDB API 覆盖在浏览器 IndexedDB 数据库中。
在实际体验中,可以随时保存本地数据到云端,下载数据到本地,同步就很方便,使用了三天,没有出现同步出错的问题,脚本很稳定。
最终我把该脚本发布到 Greasyfork,可供大家直接使用,代码也已开源。
2024-11-09 08:00:00
大慈岩位于浙江建德,半山腰有一座悬空庙,同时也是庆余年 2 的取景地,今天来到这里爬爬山打打卡。
用无人机拍出了全貌,地势也是十分惊险。
依山而建。
“重岩叠嶂。”
2024-11-07 08:00:00
安装浏览器插件后,在需要剪藏的文章页面打开扩展即可,可以自定义文档属性等功能。
https://github.com/YOYZHANG/PodCastLM
https://ai.podcastlm.fun/
通过处理 PDF 的内容,生成适合音频播客的自然对话,并将其输出为 MP3 文件。
https://githubtollm.replit.app/
支持整个项目、文件夹或单个文件,比如,你想用 LLM 阅读分析 GitHub 上的代码时,不用手动复制粘贴代码来转换了,直接输入 GitHub 地址它可以自动转换。
https://github.com/barry-ran/QtScrcpy
支持通过 USB 或 WIFI 一键连接 Android 设备到电脑,实现屏幕显示和控制,无需 root 权限。并提供了丰富功能,包括实时屏幕显示、键鼠控制、屏幕录制、截图、批量操作、文件传输、剪贴板同步等。
https://animate-avatar.netlify.app/
能够生成头像绘制过程的动画,而且也可以将动画 svg 导出,直接应用在博客或各种社交平台上。