diff --git a/README.md b/README.md index 10682cf..7921561 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,7 @@ - 克隆项目 - 安装依赖 `` pnpm i `` 推荐使用 ``pnpm`` 其他方式自行配置 ``npm install ``、``cnpm install``、``yarn install`` - 数据库配置环境变量修改根目录 ``.env `` 文件 -- 启动测试环境 `` pnpm dev `` 注意,``frontend`` 目录下需要单独执行一边 `` pnpm i `` 安装依赖 -- 后端端口号默认 ``9528`` +- 启动测试环境 `` pnpm dev `` 注意,``frontend`` 目录下需要单独执行一边 `` pnpm i `` 安装依赖 ## 运行项目 diff --git a/app_tags/app.js b/app_tags/app.js new file mode 100644 index 0000000..2d519e3 --- /dev/null +++ b/app_tags/app.js @@ -0,0 +1,5 @@ +// 导入chat_apps_bd.json +const chat_apps_bd = require('./chat_apps_bd.json'); +// 导入 chat_apps.json +const chat_apps = require('./chat_apps.json'); + diff --git a/app_tags/chat_apps.json b/app_tags/chat_apps.json new file mode 100644 index 0000000..cfa1333 --- /dev/null +++ b/app_tags/chat_apps.json @@ -0,0 +1,2598 @@ +[ + { + "id": 2, + "app_id": "APPID_EZPokDLFmz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://hong.greatdk.com/", + "title": "哄哄模拟器Web版 – 你的AI对象生气了,快哄哄TA", + "icon": "APPICON_nOlKeFJOgo.ico", + "desc": "哄哄模拟器Web版基于AI技术,让你进入到不同场景之中,用语言技巧和沟通能力去哄你的对象", + "source": "hong.greatdk.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.746+08", + "updatedAt": "9/2/2025 10:59:10.746+08" + }, + { + "id": 3, + "app_id": "APPID_I0On2pDsOF", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.lupingwang.com/screen-record/", + "title": "免费在线录屏", + "icon": "lupingwang_com.ico", + "desc": "免费的在线录屏工具无需下载软件", + "source": "www.lupingwang.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.747+08", + "updatedAt": "9/2/2025 10:59:10.747+08" + }, + { + "id": 6, + "app_id": "APPID_e0Lhy3FtFD", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://warframe.huijiwiki.com/wiki/Mainpage", + "title": "非官方WARFRAME中文维基 | 星际战甲", + "icon": "APPICON_sWfJcRxm6t.png", + "desc": "玩家维护的WARFRAME(星际战甲)非官方性质中文维基。", + "source": "warframe.huijiwiki.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd02.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd02.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.749+08", + "updatedAt": "9/2/2025 10:59:10.749+08" + }, + { + "id": 10, + "app_id": "APPID_TLppC3Losm", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://h5mota.com/games/Antimatter/", + "title": "HTML5魔塔", + "icon": "app.svg", + "desc": "HTML5魔塔", + "source": "h5mota.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.752+08", + "updatedAt": "9/2/2025 10:59:10.752+08" + }, + { + "id": 11, + "app_id": "APPID_aRtmFYjL6L", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://toutai.cc/", + "title": "投胎模拟器「中国版」", + "icon": "APPICON_fM2E2uAbWA.svg", + "desc": "如果来世还在种花家,你会出生在哪里? - 投胎模拟器「中国版」", + "source": "toutai.cc", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd03.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd03.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.753+08", + "updatedAt": "9/2/2025 10:59:10.753+08" + }, + { + "id": 12, + "app_id": "APPID_u8bHzCdPYp", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://tuxun.fun/", + "title": "图寻", + "icon": "APPICON_hsFmQol7CF.ico", + "desc": "探索真实世界,收集线索,找出自己的位置。", + "source": "tuxun.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd04.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd04.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.754+08", + "updatedAt": "9/2/2025 10:59:10.754+08" + }, + { + "id": 14, + "app_id": "APPID__kkffNpCjz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://rili.zhuayuya.com/", + "title": "摸鱼日历 - 抓鱼鸭出品", + "icon": "APPICON_wIuRJ-59h1.svg", + "desc": "【摸鱼中国】抓鱼鸭 - 摸鱼日历,摸鱼日历API接口,打工人,工作再累,一定不要忘记摸鱼哦!", + "source": "rili.zhuayuya.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.755+08", + "updatedAt": "9/2/2025 10:59:10.755+08" + }, + { + "id": 15, + "app_id": "APPID_RZkk6O7kZq", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.speedtest.cn/", + "title": "测速网 - 专业测网速", + "icon": "APPICON_XTmbPnolkt.ico", + "desc": "测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测,Wi-Fi 7,Wi-Fi 6,FTTR - SpeedTest.cn", + "source": "www.speedtest.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd06.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd06.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.755+08", + "updatedAt": "9/2/2025 10:59:10.755+08" + }, + { + "id": 16, + "app_id": "APPID_smpEujRSar", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://fishing.florastudio.app/", + "title": "偷偷钓个鱼", + "icon": "APPICON_5athrtyrG2.png", + "desc": "偷偷钓个鱼", + "source": "fishing.florastudio.app", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.756+08", + "updatedAt": "9/2/2025 10:59:10.756+08" + }, + { + "id": 17, + "app_id": "APPID_oYeygQ07rl", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "http://comictv.top/", + "title": "摸鱼神器", + "icon": "comictv_top.ico", + "desc": "ComicTv,摸鱼神器", + "source": "comictv.top", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.756+08", + "updatedAt": "9/2/2025 10:59:10.756+08" + }, + { + "id": 18, + "app_id": "APPID_Pt6w77W50d", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://123apps.com/cn/", + "title": "免费的各种格式在线转换工具", + "icon": "123apps_com.svg", + "desc": "Web Apps by 123apps 编辑、转换、创建", + "source": "123apps.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.757+08", + "updatedAt": "9/2/2025 10:59:10.757+08" + }, + { + "id": 20, + "app_id": "APPID_UimKqv7j_i", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.mycode.ltd/", + "title": "轻连", + "icon": "mycode_ltd.webp", + "desc": "可视化编程做手机APP", + "source": "www.mycode.ltd", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0b.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0b.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.758+08", + "updatedAt": "9/2/2025 10:59:10.758+08" + }, + { + "id": 21, + "app_id": "APPID_lYc5Y-fcL_", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.16personalities.com/ch/%E4%BA%BA%E6%A0%BC%E6%B5%8B%E8%AF%95", + "title": "性格测试", + "icon": "16personalities_com.png", + "desc": "免费性格测试 | 16Personalities", + "source": "www.16personalities.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd10.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd10.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.758+08", + "updatedAt": "9/2/2025 10:59:10.758+08" + }, + { + "id": 7, + "app_id": "APPID_XCFzbWZAkX", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://haiyong.site/win12/", + "title": "Windows 12 网页版", + "icon": "APPICON__UDCrmPIE1.png", + "desc": "Windows 12 网页版", + "source": "haiyong.site", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.75+08", + "updatedAt": "24/2/2025 11:36:57.956+08" + }, + { + "id": 5, + "app_id": "APPID_tto_Ve2Eto", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://m.bjzf.org/217382/1127690.html", + "title": "爱看漫画", + "icon": "APPICON_CufbST9EV3.ico", + "desc": "国内原创在线漫画平台_好看的免费漫画大全 - 爱看漫画", + "source": "m.bjzf.org", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.748+08", + "updatedAt": "24/2/2025 11:37:11.068+08" + }, + { + "id": 4, + "app_id": "APPID_wnH0VIfhBo", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://fakeupdate.net/", + "title": "模拟系统更新", + "icon": "app.svg", + "desc": "恶作剧你的朋友和同事与假的更新屏幕!", + "source": "fakeupdate.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd41.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd41.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.748+08", + "updatedAt": "24/2/2025 11:37:37.246+08" + }, + { + "id": 1, + "app_id": "APPID__K4XtoApNP", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://g1tyx.github.io/pokemon/", + "title": "口袋妖怪放置 - Pokeidle", + "icon": "APPICON_YE1i3WeZdn.png", + "desc": "口袋妖怪放置 - Pokeidle", + "source": "g1tyx.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd09.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd09.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.742+08", + "updatedAt": "24/2/2025 11:37:51.99+08" + }, + { + "id": 13, + "app_id": "APPID_cxP9384I31", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://cultivation-simulato.g8hh.com.cn/", + "title": "模拟修仙", + "icon": "app.svg", + "desc": "放置类文字游戏,模拟修仙,摸鱼神器", + "source": "cultivation-simulato.g8hh.com.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd40.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd40.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.754+08", + "updatedAt": "24/2/2025 11:38:16.637+08" + }, + { + "id": 19, + "app_id": "APPID_guawxGe412", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://ywyj.cn/posts/5448", + "title": "电脑博物馆 - 一网一匠极速版", + "icon": "ywyj_cn.ico", + "desc": "一网一匠极速版是一个产品发现社区,发现最新的网站,移动 App和技术产品", + "source": "ywyj.cn", + "status": 2, + "sort": 0, + "interact": "{\"like\": []}", + "category": "重复", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.757+08", + "updatedAt": "24/2/2025 11:54:48.823+08" + }, + { + "id": 22, + "app_id": "APPID_VhPs6hQAWb", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://endfield.hypergryph.com/", + "title": "《明日方舟:终末地》官方网站-Arknights: Endfield", + "icon": "hycdn_cn.ico", + "desc": "跨越边境 直至前线", + "source": "endfield.hypergryph.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.761+08", + "updatedAt": "24/2/2025 11:56:48.75+08" + }, + { + "id": 23, + "app_id": "APPID_EOHUPoYSea", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.goenhance.ai/", + "title": "Ai动画生成", + "icon": "APPICON_kurSLIyS5U.png", + "desc": "在几分钟内创建 AI 动画短片您的一体化 AI", + "source": "www.goenhance.ai", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd18.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd18.png\"}, {\"url\": \"c871bfc29f512b85238abbd19.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd19.png\"}, {\"url\": \"c871bfc29f512b85238abbd1a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.759+08", + "updatedAt": "9/2/2025 10:59:10.759+08" + }, + { + "id": 24, + "app_id": "APPID_rUIzJFqSfr", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://earth.nullschool.net/zh-cn/", + "title": "一个在线的全球气象云图", + "icon": "nullschool_net.ico", + "desc": "通过超级计算机的预告,可以在这个交互的动画地图上查看现在的风,天气,海洋和污染状况。每三个小时更新一次。", + "source": "earth.nullschool.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd23.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd23.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.761+08", + "updatedAt": "9/2/2025 10:59:10.761+08" + }, + { + "id": 27, + "app_id": "APPID_V5y2mCM4Xz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://dccxi.com/trust/", + "title": "小游戏信任的进化", + "icon": "dccxi_com.png", + "desc": "这是一个互动的博弈论指南,告诉我们为什么和如何相互信任", + "source": "dccxi.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.77+08", + "updatedAt": "9/2/2025 10:59:10.77+08" + }, + { + "id": 29, + "app_id": "APPID_kGz-MfY8dK", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://mac-os.leiyihan.com/", + "title": "网页版macOS", + "icon": "leiyihan_com.png", + "desc": "一个网页版的macos系统,在线体验mac", + "source": "mac-os.leiyihan.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "模拟系统", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd15.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd15.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.776+08", + "updatedAt": "9/2/2025 10:59:10.776+08" + }, + { + "id": 33, + "app_id": "APPID_zqfAQTHvtA", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://www.simcompanies.com/", + "title": "商业模拟游戏-模拟公司", + "icon": "APPICON_DaGd16FEEv.png", + "desc": "《模拟公司》是一款慢节奏的多人经济模拟游戏。你可以从零开始建立自己的企业,并与其他人进行贸易。", + "source": "www.simcompanies.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd29.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd29.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.789+08", + "updatedAt": "9/2/2025 10:59:10.789+08" + }, + { + "id": 25, + "app_id": "APPID_VZFKGGX8hR", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://typing.xiaomawang.com", + "title": "小码王指法练习", + "icon": "xiaomawang_com.png", + "desc": "小码王打字工具", + "source": "typing.xiaomawang.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.765+08", + "updatedAt": "24/2/2025 11:39:19.165+08" + }, + { + "id": 36, + "app_id": "APPID_p9MpCev4QB", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://ass.m-j.bond/", + "title": "明日方舟剧情站", + "icon": "APPICON_cQu2WEYKQS.png", + "desc": "ASS——明日方舟剧情站", + "source": "ass.m-j.bond", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.805+08", + "updatedAt": "24/2/2025 11:47:08.33+08" + }, + { + "id": 32, + "app_id": "APPID_jbGb_30m6Y", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://d.design/", + "title": "堆友-设计师网站", + "icon": "alicdn_com.png", + "desc": "堆友是Alibaba Design打造的设计师全成长周期服务平台,围绕品质、效率、技能、成就、收入五大用户价值布局平台能力,全力服务设计师,旨在成为设计师的好朋友。\n堆友历经大厂设计师团队多轮打磨雕刻,集海量高品质3D素材、实时在线渲染、多元场景功能应用、轻便好学易上手等多重优势于一身的设计神器,更自带免费可商用属性,为专业设计师、运营工友、学生小白、社交达人提供了一个零成本的在线设计站点和资源库。", + "source": "d.design", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd30.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd30.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.785+08", + "updatedAt": "24/2/2025 11:50:08.824+08" + }, + { + "id": 30, + "app_id": "APPID_089jlKcmDy", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://quzuotu.com/home", + "title": "趣作图—免费在线抠图工具网站", + "icon": "quzuotu_com.ico", + "desc": "趣作图专注于人像、宠物、汽车等物品的智能抠图,具备透明背景、场景切换、证件照制作等功能,是UP主、微商、淘宝店家、运营人员和产品美术必备的图片编辑器。", + "source": "quzuotu.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd20.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd20.png\"}, {\"url\": \"c871bfc29f512b85238abbd21.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd21.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.778+08", + "updatedAt": "24/2/2025 11:50:30.122+08" + }, + { + "id": 28, + "app_id": "APPID_xQ4inL3YQV", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://ywyj.cn/", + "title": "一网一匠发现有趣的新产品", + "icon": "ywyj_cn.ico", + "desc": "B站UP一网一匠创建的产品发现社区,旨在打造一个服务于产品创造者和爱好者分享和交流社区,如果恰巧你是这样的人,那么欢迎你加入我们", + "source": "ywyj.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[]", + "placard": "[{\"url\": \"831169f54645131e9c9c0880d.png\", \"type\": \"preview\", \"title\": \"831169f54645131e9c9c0880d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.774+08", + "updatedAt": "24/2/2025 11:50:56.739+08" + }, + { + "id": 26, + "app_id": "APPID__sN1EdIIAm", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://kickassapp.com/?route=%2F", + "title": "Kick Ass - Destroy the web", + "icon": "kickassapp_com.ico", + "desc": "不知道是啥", + "source": "kickassapp.com", + "status": 2, + "sort": 0, + "interact": "{\"like\": []}", + "category": "未知", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.767+08", + "updatedAt": "24/2/2025 11:54:13.115+08" + }, + { + "id": 38, + "app_id": "APPID_M9bbc8W8M1", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://shareduck.fun/", + "title": "分享鸭 - 极简风分享优质资源网站", + "icon": "shareduck_fun.png", + "desc": "一个致力于分享高质量资源的平台,包括但不限于文章、视频、图片、音乐等多种形式。我们的目标是帮助用户发现并分享有价值的资源,让更多人受益。", + "source": "shareduck.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "导航网站", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.762+08", + "updatedAt": "24/2/2025 11:56:41.496+08" + }, + { + "id": 39, + "app_id": "APPID_jgLTsvfCWX", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://chat.furrybar.com/", + "title": "FurryBar | Ai 聊天", + "icon": "furrybar_com.png", + "desc": "FurryBar是一个毛茸茸的AI聊天项目,允许用户与精心调整的毛茸茸的AI字符聊天!", + "source": "chat.furrybar.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.765+08", + "updatedAt": "24/2/2025 11:58:30.254+08" + }, + { + "id": 31, + "app_id": "APPID_l9AGAxl3a_", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://magicstudio.com/zh/magiceraser/", + "title": "删除照片中的物体 | Magic Eraser by Magic Studio", + "icon": "magicstudio_com.png", + "desc": "只需几秒钟就能编辑图片,用画笔选择并用 AI 擦除图片上的物体、人物、文字、瑕疵和图案。无限制免费使用,无需注册。", + "source": "magicstudio.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.781+08", + "updatedAt": "24/2/2025 11:58:44.287+08" + }, + { + "id": 40, + "app_id": "APPID_FA4mWKJUA_", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://newoether.github.io/Lagrangian/", + "title": "三体问题模拟器", + "icon": "github_io.ico", + "desc": "三体问题模拟器,限制性三体问题模型", + "source": "newoether.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.768+08", + "updatedAt": "9/2/2025 10:59:10.768+08" + }, + { + "id": 43, + "app_id": "APPID_LLGGEtC7ry", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://my.tgbotss.cn/", + "title": "📍小霸王游戏机-在线版", + "icon": "tgbotss_cn.ico", + "desc": "可在手机电脑上在线玩fc游戏的网站,近乎完美的还原任天堂FC/NES原版ROM游戏的视频和声音。", + "source": "my.tgbotss.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.777+08", + "updatedAt": "9/2/2025 10:59:10.777+08" + }, + { + "id": 44, + "app_id": "APPID_5UGeVLxCdb", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://github.com/BewlyBewly/BewlyBewly", + "title": "B站-Ui重置版插件", + "icon": "APPICON_MeeOoO41yj.svg", + "desc": "BewlyBewly 是 BiliBili 的浏览器扩展,旨在通过重新设计 BiliBili UI 来增强用户体验。 ", + "source": "github.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1b.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1b.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.779+08", + "updatedAt": "9/2/2025 10:59:10.779+08" + }, + { + "id": 45, + "app_id": "APPID_3kQMFDQ_tl", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.diydoutu.com/", + "title": "DIY斗图表情 表情包制作", + "icon": "diydoutu_com.png", + "desc": "DIY斗图,无水印表情包图片下载分享与在线制作字幕GIF、gif制作、动图加字恶搞制作、来diy属于自己的表情包吧!", + "source": "www.diydoutu.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.782+08", + "updatedAt": "9/2/2025 10:59:10.782+08" + }, + { + "id": 46, + "app_id": "APPID_c8WVw7Zp5r", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.cvh.ac.cn/spms/list.php", + "title": "植物标本-国家植物标本资源库", + "icon": "ac_cn.ico", + "desc": "国家植物标本资源库(National Plant Specimen Resource Center,NPSRC)是科技部和财政部批准的国家科技资源共享服务平台之一,主要是在全国16家馆藏量影响力较大和特色显著的植物(菌物)标本馆和原NSII 4个子平台(植物、教学、保护区和极地子)基础上建设的,依托单位为中国科学院植物研究所,以中国数字植物标本馆(Chinese Virtual Herbarium,CVH)作为在线共享平台。", + "source": "www.cvh.ac.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.783+08", + "updatedAt": "9/2/2025 10:59:10.783+08" + }, + { + "id": 47, + "app_id": "APPID_5ZNnlRpVFj", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://yikm.net/netplaylist", + "title": "小霸王,其乐无穷 。红白机,FC在线游戏,街机游戏,街机在线", + "icon": "APPICON_TPCXnw5FD4.png", + "desc": "魂斗罗,超级玛丽,热血足球,三国志,合金弹头,拳皇。这些小时候的回忆,黑白电视机前玩着小霸王游戏机的那种感觉令人怀念,希望大家可以找回童年的快乐", + "source": "yikm.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd07.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd07.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.786+08", + "updatedAt": "9/2/2025 10:59:10.786+08" + }, + { + "id": 48, + "app_id": "APPID_R4y5nO5mfA", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://www.skylinewebcams.com/", + "title": "▶️ 自世界的实时高清摄头", + "icon": "app.svg", + "desc": "高清网络摄像头从世界上最好的景点和目的地直播", + "source": "www.skylinewebcams.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"86bc7cf40421f97b2e709f001.png\", \"type\": \"preview\", \"title\": \"86bc7cf40421f97b2e709f001.png\"}, {\"url\": \"86bc7cf40421f97b2e709f002.png\", \"type\": \"preview\", \"title\": \"86bc7cf40421f97b2e709f002.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.794+08", + "updatedAt": "9/2/2025 10:59:10.794+08" + }, + { + "id": 52, + "app_id": "APPID_9S-rlH8Vin", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.ccw.site/detail/653dfdf65101d866e71a31e0", + "title": "几何幸存者小游戏", + "icon": "ccw_site.png", + "desc": "共创世界(CCW)是下一代 ACGN(游戏、动画、漫画、小说)内容创作社区。这里有强大易用的 Scratch 编程创作工具、十万开发者、百万独立游戏。想创作、学习、试玩独立游戏都可以来这里。", + "source": "www.ccw.site", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd13.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd13.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.76+08", + "updatedAt": "9/2/2025 10:59:10.76+08" + }, + { + "id": 53, + "app_id": "APPID_jlhx3n5Dbh", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.ra2web.com/", + "title": "网页红井-联机对战平台", + "icon": "ra2web_com.ico", + "desc": "An unofficial remake of the classic \"Command & Conquer: Red Alert 2\" RTS game, playable online in the web browser.", + "source": "www.ra2web.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.76+08", + "updatedAt": "9/2/2025 10:59:10.76+08" + }, + { + "id": 49, + "app_id": "APPID_pJIVAWKY0u", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.taptap.cn/", + "title": "TapTap - 发现好游戏", + "icon": "APPICON_YAjSFUrZe0.ico", + "desc": "TapTap 专为中国手游玩家打造的推荐高品质手游的分享社区。我们拥有超过 2 万款可玩游戏,超过 1 亿玩家在我们平台上完成了 30 亿次游戏下载,发布了超过 3500 万条真实客观的游戏评价,并为玩家提供了 50 万篇优质内容。目前已有超过 10 万个游戏开发者入驻了 TapTap 玩家社区。立即下载 TapTap,与我们一起体验最顶级的手游乐趣吧!", + "source": "www.taptap.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.799+08", + "updatedAt": "24/2/2025 11:49:14.206+08" + }, + { + "id": 42, + "app_id": "APPID__iuApk8vww", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://dimtown.com/", + "title": "次元小镇 – 动漫爱好者分享社区ヽ(✿゜▽゜)ノ", + "icon": "dimtown_com.png", + "desc": "次元小镇是一个动漫爱好者分享社区,动漫资源、资讯、动漫美图壁纸、音乐和cosplay资源小站,阿宅们快到碗里来ヽ(✿゜▽゜)ノ", + "source": "dimtown.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.774+08", + "updatedAt": "24/2/2025 11:50:48.826+08" + }, + { + "id": 41, + "app_id": "APPID_KS7sxJqiAd", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "http://www.dzkbw.com/", + "title": "电子课本-电子课本网", + "icon": "dzkbw_com.ico", + "desc": "各个版本的教材电子版,小初高都有,非常全", + "source": "www.dzkbw.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd27.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd27.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.771+08", + "updatedAt": "24/2/2025 11:53:29.991+08" + }, + { + "id": 54, + "app_id": "APPID_9fpJajNr-3", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://limaoqiu.com/i", + "title": "你好,我是李猫球。 - 猫球博客", + "icon": "limaoqiu_com.ico", + "desc": "这里是李猫球的个人博客,记录着猫球和二扯的日常、作品、笔记、小工具。", + "source": "limaoqiu.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "个人博客", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.762+08", + "updatedAt": "24/2/2025 11:55:02.323+08" + }, + { + "id": 58, + "app_id": "APPID_En9hHHprYI", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://zw.deadahead.zone/", + "title": "一款在线的僵尸生存游戏", + "icon": "website_files_com.png", + "desc": "面对无情的不死族在这个惊心动魄的免费僵尸生存游戏今天在网上!你能坚持到最后吗?学习更多的知识。", + "source": "zw.deadahead.zone", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.766+08", + "updatedAt": "9/2/2025 10:59:10.766+08" + }, + { + "id": 59, + "app_id": "APPID_SfGaXAh48V", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://blog.jixiaob.cn/backup/hertakuru/", + "title": "转圈圈~", + "icon": "jixiaob_cn.ico", + "desc": "无聊的转圈圈,巨吵注意音箱", + "source": "blog.jixiaob.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.766+08", + "updatedAt": "9/2/2025 10:59:10.766+08" + }, + { + "id": 61, + "app_id": "APPID_JR-A9d9jUr", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://lab.magiconch.com/homo/", + "title": "恶臭数字论证器", + "icon": "magiconch_com.ico", + "desc": "输入一个数字可以用复杂的方法证明出来,简单问题复杂化神器", + "source": "lab.magiconch.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd25.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd25.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.769+08", + "updatedAt": "9/2/2025 10:59:10.769+08" + }, + { + "id": 63, + "app_id": "APPID_TVXlgNma4m", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.tbtool.cn/", + "title": "图吧工具箱", + "icon": "tbtool_cn.ico", + "desc": "图吧工具箱 - 最纯净的硬件工具箱", + "source": "www.tbtool.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd16.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd16.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.77+08", + "updatedAt": "9/2/2025 10:59:10.77+08" + }, + { + "id": 68, + "app_id": "APPID_AKWgpxoHwf", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://app.tangoapp.dev/", + "title": "无需下载在线安卓工具", + "icon": "tangoapp_dev.svg", + "desc": "Tango:浏览器中的 Android 工具", + "source": "app.tangoapp.dev", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd14.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd14.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.773+08", + "updatedAt": "9/2/2025 10:59:10.773+08" + }, + { + "id": 70, + "app_id": "APPID_xhxtLSB3-O", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://appshare.muge.info/", + "title": "AppShare", + "icon": "muge_info.ico", + "desc": "一个用户自主分享及下载App的平台", + "source": "appshare.muge.info", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.775+08", + "updatedAt": "9/2/2025 10:59:10.775+08" + }, + { + "id": 71, + "app_id": "APPID_4nX_Pf4TXL", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://lab.magiconch.com/nbnhhsh/", + "title": "能不能好好说话?", + "icon": "app.svg", + "desc": "社交平台上通过拼音首字母缩写指代特定词句的情况越来越多,为了让更多人能勉强理解这一门另类沟通方式、做了这一个划词转义工具。", + "source": "lab.magiconch.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd28.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd28.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.779+08", + "updatedAt": "9/2/2025 10:59:10.779+08" + }, + { + "id": 67, + "app_id": "APPID_VwQUu-G-jE", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://regex101.com/?utm_source=xinquji", + "title": "regex101: build, test, and debug regex", + "icon": "regex101_com.ico", + "desc": "Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.", + "source": "regex101.com", + "status": 2, + "sort": 0, + "interact": "{\"like\": []}", + "category": "1", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.773+08", + "updatedAt": "24/2/2025 11:51:45.703+08" + }, + { + "id": 66, + "app_id": "APPID_hLQR6F5txM", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.geo-fs.com/", + "title": "模拟飞行", + "icon": "geo_fs_com.ico", + "desc": "GeoFS is a free flight simulator using global satellite images and running in your web browser or as a mobile app. Realistic and multiplayer, GeoFS provides real-life commercial traffic (ADS-B) and local weather conditions wherever you fly in the world.", + "source": "www.geo-fs.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.772+08", + "updatedAt": "24/2/2025 11:52:37.587+08" + }, + { + "id": 65, + "app_id": "APPID_1NG_FsFZE3", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://bedrocklauncher.github.io/?utm_source=xinquji", + "title": "在线MC", + "icon": "github_io.ico", + "desc": "Official Bedrock Launcher Website", + "source": "bedrocklauncher.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.772+08", + "updatedAt": "24/2/2025 11:53:05.584+08" + }, + { + "id": 62, + "app_id": "APPID_CnyWyu1DLn", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://xn--o1qx19eeqi.cn/000000", + "title": "小黑点 - 认养一个像素", + "icon": "xn__o1qx19eeqi_cn.ico", + "desc": "认养一个像素一点点把他喂大", + "source": "xn--o1qx19eeqi.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd38.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd38.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.769+08", + "updatedAt": "24/2/2025 11:53:37.359+08" + }, + { + "id": 60, + "app_id": "APPID_dtvVctAr6X", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://img.logosc.cn/cartoon", + "title": "AI卡通头像生成器;人像照片一键变漫画头像 - AI改图神器", + "icon": "logosc_cn.png", + "desc": "上传个人照片就能生成迪士尼人物卡通漫画风格头像。您还可以通过AI提示词生成无限创意。快来试试我们的AI人物头像生成器吧!", + "source": "img.logosc.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.766+08", + "updatedAt": "24/2/2025 11:54:22.185+08" + }, + { + "id": 55, + "app_id": "APPID_Iu_mp79X41", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://choa.fun/all", + "title": "炒饭网-有个有趣的社区论坛", + "icon": "chao_fan_com", + "desc": "兴趣聚合的优质内容社区,每个兴趣都值得被尊重,在这里,一起讨论问题、分享趣事、了解最新时事,世界-尽在眼下", + "source": "choa.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd24.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd24.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.763+08", + "updatedAt": "24/2/2025 11:57:04.405+08" + }, + { + "id": 57, + "app_id": "APPID_RY7RNjEZqo", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.hsmy.fun/news/weibo", + "title": "微博热搜榜 - 浑水阅读", + "icon": "hsmy_fun.svg", + "desc": "浑水阅读(hsmy.fun)是一个热搜榜单聚合网站,汇集知乎、微博、虎扑、抖音、今日头条、微博、贴吧、豆瓣等多个主流平台的热门话题。无论您对新闻、科技、娱乐、体育或其他领域感兴趣,浑水阅读都能为您呈现最新的热门信息,让您轻松畅享高效的阅读体验。", + "source": "www.hsmy.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd17.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd17.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.764+08", + "updatedAt": "24/2/2025 11:57:24.103+08" + }, + { + "id": 72, + "app_id": "APPID_BivupWCyPR", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.compumuseum.com/index.html", + "title": "电脑博物馆", + "icon": "compumuseum_com.ico", + "desc": "云端的计算机博物馆,在网页模拟器中重现电脑发展史", + "source": "www.compumuseum.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd12.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd12.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.782+08", + "updatedAt": "24/2/2025 11:59:52.472+08" + }, + { + "id": 69, + "app_id": "APPID_vActOhgzM4", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://krunker.io/", + "title": "Krunker-在线枪战游戏", + "icon": "krunker_io.png", + "desc": "是一个免费的多人在线游戏枪战游戏。无需下载", + "source": "krunker.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd33.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd33.png\"}, {\"url\": \"c871bfc29f512b85238abbd34.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd34.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.775+08", + "updatedAt": "24/2/2025 12:00:09.434+08" + }, + { + "id": 73, + "app_id": "APPID_HgaJfV_nDe", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.mcmod.cn/tools/cbcreator/", + "title": "命令方块指令生成器 - MC百科", + "icon": "mcmod_cn.ico", + "desc": "这个命令方块指令生成器能够使你快速完成命令方块开发或是快速适应游戏环境,它支持多个MC版本,覆盖了MC基础命令、命令方块高级命令、插件命令、MOD命令,并且支持多语言切换,无论你是有经验的老玩家或地图制作者,还是刚入MC的新人,相信这款工具总会有适合你的功能。", + "source": "www.mcmod.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3b.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3b.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.785+08", + "updatedAt": "9/2/2025 10:59:10.785+08" + }, + { + "id": 74, + "app_id": "APPID__kd-lrwS2B", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://ai-bot.cn/", + "title": "AI工具集 | 700+ AI工具集合官网,国内外AI工具集导航大全", + "icon": "APPICON_Xwq8h70Rrp.png", + "desc": "AI工具集导航官网收录了国内外数百个AI工具,包括AI写作工具、AI图像生成和背景移除、AI视频制作、AI音频转录、AI辅助编程、AI音乐生成、AI绘画设计、AI对话聊天等AI工具集合大全,以及AI学习开发的常用网站、框架和模型,帮助你加入人工智能浪潮,自动化高效完成任务!", + "source": "ai-bot.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd08.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd08.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.793+08", + "updatedAt": "9/2/2025 10:59:10.793+08" + }, + { + "id": 76, + "app_id": "APPID_sENnq__rs9", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://enazo.cn/", + "title": "绘谜画猜 - 你画我猜", + "icon": "enazo_cn.ico", + "desc": "支持 断线重连、无限撤销、压感笔刷、智能提示、智能参考、画廊投稿、导出视频 的在线多人你画我猜 ", + "source": "enazo.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd39.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd39.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.801+08", + "updatedAt": "9/2/2025 10:59:10.801+08" + }, + { + "id": 81, + "app_id": "APPID_slKbDk8QoO", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://aspoem.com/zh-Hans", + "title": "AsPoem | 现代化诗词学习网站", + "icon": "aspoem_com.ico", + "desc": "aspoem.com 是现代化的诗词学习网站,提供全站搜索,提供便捷的全站搜索功能,让您更快地查询律诗、绝句和各位诗人的作品。我们还优化了拼音标注、注释和白话文等的展示方式,使诗词更加易于阅读。此外,我们还提供了诗词打印工具,助您更好地学习古代诗词。快来体验我们网站的魅力吧!", + "source": "aspoem.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.784+08", + "updatedAt": "9/2/2025 10:59:10.784+08" + }, + { + "id": 82, + "app_id": "APPID_RkPyC2jkzA", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://nazo.one-story.cn/", + "title": "nazo解密游戏", + "icon": "APPICON_xdJHAIsYB1.ico", + "desc": "看看你能过几关", + "source": "nazo.one-story.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.787+08", + "updatedAt": "9/2/2025 10:59:10.787+08" + }, + { + "id": 85, + "app_id": "APPID_QdGWsnZyKW", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.zhuayuya.com/", + "title": "抓鱼鸭 - 专注于摸鱼的新标签页", + "icon": "APPICON_4GqbDdw6l4.svg", + "desc": "【摸鱼中国】抓鱼鸭 - 不仅仅是起始页,它能帮你收藏网站,还能帮你找到好玩的网站,还有聚合搜索帮你快速找到自己想要的,还有弹幕功能,跟小伙伴一起分享点有趣的事", + "source": "www.zhuayuya.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd05.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd05.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.804+08", + "updatedAt": "9/2/2025 10:59:10.804+08" + }, + { + "id": 87, + "app_id": "APPID_dPNEad9u1j", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://tools.miku.ac/", + "title": "MikuTools - 一个神奇的工具集合", + "icon": "hatsune_tech.png", + "desc": "一个神器且轻量的工具集合", + "source": "tools.miku.ac", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd37.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd37.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.777+08", + "updatedAt": "9/2/2025 10:59:10.777+08" + }, + { + "id": 86, + "app_id": "APPID_GySQkNgAd_", + "user_id": "uid_do4ywwoe69", + "username": "1205558", + "room_id": "", + "type": "web", + "url": "https://iirose.com/", + "title": "蔷薇花园 IIROSE ( i站 ) - 树洞 | i站官网", + "icon": "APPICON_LIYw4amSM8.ico", + "desc": "蔷薇花园 IIROSE ( i站 ) 是一个正在不断完善的虚拟世界 , 您可以把这里当做树洞亦或者是一个网络上的家 , 在这里您能找到属于自己的树洞和归属感 , 还能遇到各样性情的伙伴 , 开始一段旅程吧 。", + "source": "iirose.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.804+08", + "updatedAt": "24/2/2025 11:47:46.182+08" + }, + { + "id": 84, + "app_id": "APPID_NE1PW53A7i", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://zaixianwan.app/", + "title": "老游戏在线玩", + "icon": "APPICON_xClRqAHAMr.ico", + "desc": "在电脑和手机浏览器里畅玩 2500+ 中文老游戏,支持触屏、键盘、存档!包括 FC, SFC, N64, GB, GBC, GBA, NDS 等多种游戏机平台。", + "source": "zaixianwan.app", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"2ba030a98c59aa56858c30001.png\", \"type\": \"preview\", \"title\": \"2ba030a98c59aa56858c30001.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.8+08", + "updatedAt": "24/2/2025 11:48:23.422+08" + }, + { + "id": 75, + "app_id": "APPID_ZYrPwC1-r2", + "user_id": "uid_kquu2nmd9u", + "username": "45170", + "room_id": "", + "type": "web", + "url": "https://www.flysheep6.com/", + "title": "flysheep资源避难所", + "icon": "APPICON_uJv9PtG1AK.jpg", + "desc": "一个免费的二次元风格下载站 收录steam epic 单机资源 switch游戏 ChatGPT", + "source": "www.flysheep6.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.798+08", + "updatedAt": "24/2/2025 11:48:39.95+08" + }, + { + "id": 83, + "app_id": "APPID_YhGu5DPLjt", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://seaside-station.com/region/recommended-whole-of-japan/", + "title": "日本从景区步行十分钟到达的海景车站", + "icon": "APPICON_y1LyIw7BWV.ico", + "desc": "从日本全国的能看见海的车站中,严选了39个车站,和很多照片一起介绍。网站上一共有241个可以看到海的车站。", + "source": "seaside-station.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.796+08", + "updatedAt": "24/2/2025 11:49:23.611+08" + }, + { + "id": 79, + "app_id": "APPID_lkrpFxqKUz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://regex101.com/", + "title": "测试和调试正则表达式", + "icon": "regex101_com.ico", + "desc": "正则表达式测试与语法高亮,解释,小抄表PHP/PCRE, Python, GO, JavaScript, Java, c# /。净,生锈。", + "source": "regex101.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.778+08", + "updatedAt": "24/2/2025 11:50:22.893+08" + }, + { + "id": 78, + "app_id": "APPID_En5Faxr5ex", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://mail.tm/zh/", + "title": "临时邮件", + "icon": "mail_tm.ico", + "desc": "随时使用临时电子邮件在可疑的网站、论坛或社交网络上注册。保护您的个人电子邮件地址免受垃圾邮件.", + "source": "mail.tm", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.776+08", + "updatedAt": "24/2/2025 11:50:37.89+08" + }, + { + "id": 80, + "app_id": "APPID_jSosqlg4ea", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.aigei.com/sound/", + "title": "爱给网-音效下载网站", + "icon": "aigei_com.ico", + "desc": "爱给网-游戏音效素材下载专区提供,为游戏制作和开发提供:系统;战争;生活;环境;打斗;配音;自然;交通;动物;魔法;乐器;等多个分类音效素材下载", + "source": "www.aigei.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd35.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd35.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.78+08", + "updatedAt": "24/2/2025 11:58:50.82+08" + }, + { + "id": 88, + "app_id": "APPID_jX6VMh3LGY", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://railmapgen.github.io/", + "title": "在线地铁线路编辑器", + "icon": "github_io.ico", + "desc": "一个开源的在线地铁线路编辑器,可以自己设计地铁线路,无聊的时候摸鱼玩玩挺好的", + "source": "railmapgen.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.78+08", + "updatedAt": "9/2/2025 10:59:10.78+08" + }, + { + "id": 90, + "app_id": "APPID_k7Q4VqV6D0", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://cam.lvwzhen.com/", + "title": "小米水印生成器", + "icon": "lvwzhen_com.ico", + "desc": "小米相机水印生成器", + "source": "cam.lvwzhen.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "小工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.786+08", + "updatedAt": "9/2/2025 10:59:10.786+08" + }, + { + "id": 92, + "app_id": "APPID_a5FBWbze4k", + "user_id": "uid_evpqt66ips", + "username": "1205217", + "room_id": "", + "type": "web", + "url": "https://yunge.in/", + "title": "云鸽 - 文件传输助手网页版", + "icon": "APPICON_LtG_tmAhBx.png", + "desc": "云鸽是一款方便、快速、安全的文件传输助手。让您可以在不同设备之间轻松共享文件,它提供了简单直观的界面和高速稳定的传输速度,无需下载或登录,非常适合在日常生活和工作中共享文件。", + "source": "yunge.in", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.8+08", + "updatedAt": "9/2/2025 10:59:10.8+08" + }, + { + "id": 93, + "app_id": "APPID_0LDqDyy_Td", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://mc.js.cool/", + "title": "在线版MC", + "icon": "js_cool.ico", + "desc": "无需下载直接开玩", + "source": "mc.js.cool", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd26.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd26.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.802+08", + "updatedAt": "9/2/2025 10:59:10.802+08" + }, + { + "id": 91, + "app_id": "APPID_hoamel5g5c", + "user_id": "uid_2baks6abco", + "username": "20305", + "room_id": "", + "type": "web", + "url": "https://www.shj.work/tools/secha/", + "title": "找色差小游戏", + "icon": "app.svg", + "desc": "测测你的眼睛对色差的辨识度,所有的色块中有一个方块的颜色有稍微的不同,你要把它挑出来,在一分钟的时间里,看你能通过多少关,16关以下不要再玩手机了!", + "source": "www.shj.work", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.795+08", + "updatedAt": "24/2/2025 11:49:28.518+08" + }, + { + "id": 89, + "app_id": "APPID_Bg-e6MRa9q", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.minesweeper.cn/", + "title": "扫雷游戏网页版 - Minesweeper", + "icon": "minesweeper_cn.ico", + "desc": "本站提供了经典扫雷游戏,并略作改进,在电脑或手机上打开网页就可以玩,无需下载安装。增加了满屏级别,自适应屏幕大小。成绩榜实时显示大家的在线扫雷成绩。", + "source": "www.minesweeper.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd36.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd36.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.783+08", + "updatedAt": "24/2/2025 11:58:58.645+08" + }, + { + "id": 95, + "app_id": "app_lh5ck83xp4", + "user_id": "uid_qfhk17q9iz", + "username": "1210284", + "room_id": null, + "type": "web", + "url": "http://hi.pcmoe.net/", + "title": "与熊论道", + "icon": "", + "desc": "与熊论道,这是什么?", + "source": "hi.pcmoe.net", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:31.287Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:32.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:32.992Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.149Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.331Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.496Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.668Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.823Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.985Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.121Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.270Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.572Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.742Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.882Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.059Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.192Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.350Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.539Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.709Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.889Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.087Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.234Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.705Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.746Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.919Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.073Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.286Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.435Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.614Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.794Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.962Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:52.580Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:52.810Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:52.988Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.166Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.339Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.493Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.809Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.013Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.313Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.481Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.847Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.972Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:55.210Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:55.618Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:56.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:57.065Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:57.456Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:36.510Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:36.685Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:36.885Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.078Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.271Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.488Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.818Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:38.019Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:38.240Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:38.797Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:39.894Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:40.078Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:40.312Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:40.816Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:41.423Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:41.646Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:41.814Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:42.294Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:42.704Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:42.904Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.061Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.228Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.395Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.579Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.753Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.948Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.128Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.559Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.744Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.961Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.134Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.341Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.526Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.933Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.120Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.312Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.496Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.878Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:47.055Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:47.236Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:47.421Z\"}], \"share\": [], \"comment\": 0}", + "category": "不知道是什么", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "10/2/2025 13:48:19.28+08", + "updatedAt": "24/2/2025 11:46:19.972+08" + }, + { + "id": 34, + "app_id": "APPID_FN91SHfHSu", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.lddgo.net/string/duplicate-remove", + "title": "在线文本去重工具", + "icon": "APPICON_7ywPh3Q6nB.png", + "desc": "在线文本去重工具,去除全局重复的行或者连续重复的行。支持自定义行拆分字符,是否去除行首行尾空白等自定义参数。", + "source": "www.lddgo.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_9evopnp6fj\", \"creatdAt\": \"2025-02-10T01:36:34.660Z\"}]}", + "category": "实用工具", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.797+08", + "updatedAt": "10/2/2025 09:36:34.66+08" + }, + { + "id": 9, + "app_id": "APPID_w_kU86lIcS", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://lolitalibrary.com/maomao/#", + "title": "猫国建设者-猫猫国", + "icon": "APPICON_fKrKLzzF5b.gif", + "desc": "一款最适合摸鱼,还巨上头的文字放置类游戏", + "source": "lolitalibrary.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_rcto9kzggy\", \"creatdAt\": \"2025-02-10T01:40:56.058Z\"}, {\"ip\": \"\", \"user_id\": \"uid_rcto9kzggy\", \"creatdAt\": \"2025-02-10T01:40:56.756Z\"}]}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd01.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd01.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.752+08", + "updatedAt": "24/2/2025 12:13:53.473+08" + }, + { + "id": 8, + "app_id": "APPID_EmWLeZ2XTH", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://game.ur1.fun/adarkroom", + "title": "小黑屋游戏汉化版", + "icon": "APPICON_OjsFHVnj9q.ico", + "desc": "一款经典耐玩的文字冒险游戏,放置类", + "source": "game.ur1.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:50.197Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:51.120Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:51.621Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:51.780Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.210Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.246Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.494Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.691Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.820Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.987Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:53.140Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:53.454Z\"}, {\"ip\": \"\", \"user_id\": \"uid_b4k0vddamw\", \"creatdAt\": \"2025-02-14T02:29:42.970Z\"}]}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.751+08", + "updatedAt": "24/2/2025 11:38:03.578+08" + }, + { + "id": 100, + "app_id": "app_nq2y3kdv0l", + "user_id": "uid_sxtdgbbj2y", + "username": "1216448", + "room_id": null, + "type": "web", + "url": "https://www.baidu.com/", + "title": "百度", + "icon": "", + "desc": "你就知道", + "source": "www.baidu.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "搜索引擎", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 16:42:28.334+08", + "updatedAt": "24/2/2025 11:28:43.198+08" + }, + { + "id": 101, + "app_id": "app_2sdn3bivx2", + "user_id": "uid_bx299v9log", + "username": "1206760", + "room_id": null, + "type": "web", + "url": "https://mail.qq.com/", + "title": "QQ邮箱", + "icon": "", + "desc": "456", + "source": "mail.qq.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "邮箱", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "13/2/2025 09:22:38.562+08", + "updatedAt": "24/2/2025 11:29:09.457+08" + }, + { + "id": 99, + "app_id": "app_dv1isye39w", + "user_id": "uid_m0wux1qutd", + "username": "1208318", + "room_id": null, + "type": "web", + "url": "https://www.hifast.cn/", + "title": "快导航网", + "icon": "", + "desc": "一个导航网站", + "source": "www.hifast.cn", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "导航网站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 13:27:08.766+08", + "updatedAt": "24/2/2025 11:34:50.17+08" + }, + { + "id": 98, + "app_id": "app_uiw0r3icb5", + "user_id": "uid_m0wux1qutd", + "username": "1208318", + "room_id": null, + "type": "web", + "url": "http://www.muyao.site/noname/", + "title": "无名杀", + "icon": "", + "desc": "无名杀", + "source": "www.muyao.site", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 13:12:06.298+08", + "updatedAt": "24/2/2025 11:41:44.98+08" + }, + { + "id": 96, + "app_id": "app_zh2s0h0fa4", + "user_id": "uid_r5n0tqc5er", + "username": "1216432", + "room_id": null, + "type": "web", + "url": "https://by.symnq2022.com/qqyxdt/hlddz/?msclkid=50f751822fcd1bf8ee6b362e3976f7ab", + "title": "斗地主", + "icon": "", + "desc": "1", + "source": "by.symnq2022.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 11:34:43.914+08", + "updatedAt": "24/2/2025 11:42:51.1+08" + }, + { + "id": 94, + "app_id": "app_2lyo2jld8d", + "user_id": "uid_8a6gs7psll", + "username": "5236", + "room_id": null, + "type": "web", + "url": "https://game.ur1.fun/adarkroom/", + "title": "小黑屋游戏汉化版", + "icon": "", + "desc": "小黑屋游戏汉化版", + "source": "game.ur1.fun", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:39.023Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:40.489Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:40.981Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:41.281Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:41.507Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.108Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.123Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.133Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.150Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.164Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.382Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.655Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.987Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:44.461Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:44.705Z\"}], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "10/2/2025 09:20:14.035+08", + "updatedAt": "24/2/2025 11:45:42.929+08" + }, + { + "id": 104, + "app_id": "app_75ml64f9rn", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://tuostudy.com/", + "title": "图欧学习资源库", + "icon": "", + "desc": "上万款精品网盘学习资源免费无偿分享!", + "source": "tuostudy.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:36.070Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:36.226Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:36.897Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:37.099Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:37.377Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:37.728Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-20T00:55:26.320Z\"}], \"share\": [], \"comment\": 0}", + "category": "资源站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:55:59.597+08", + "updatedAt": "24/2/2025 11:33:33.238+08" + }, + { + "id": 35, + "app_id": "APPID__NNpuohnKX", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://darkmap.cn/", + "title": "天文通 - 全球光污染地图 - Light Pollution Map", + "icon": "APPICON_RJxfSR_hNT.ico", + "desc": "通过波特尔光害等级展示交互式全球光污染地图,帮助你选择全国光污染最少的地方观测星空,为天文摄影爱好者提供SQM在内的光污染指数,找到哪里可以肉眼看到银河。", + "source": "darkmap.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:58.612Z\"}]}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"2ba030a98c59aa56858c30000.png\", \"type\": \"preview\", \"title\": \"2ba030a98c59aa56858c30000.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.801+08", + "updatedAt": "24/2/2025 11:48:13.874+08" + }, + { + "id": 106, + "app_id": "app_2n0hfzt4gy", + "user_id": "uid_kjkm9f2v2n", + "username": "27990", + "room_id": null, + "type": "web", + "url": "https://www.lezhugame.com/", + "title": "乐猪游戏", + "icon": "", + "desc": "PC、stream游戏资源下载站", + "source": "www.lezhugame.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.052Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.195Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.476Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.780Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:03.069Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:03.378Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:03.692Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.021Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.345Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.667Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.998Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:05.337Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:05.673Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.025Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.219Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.590Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.931Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:07.451Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:07.554Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:07.683Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.002Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.359Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.886Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:09.054Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:09.422Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:09.727Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.232Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.424Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.646Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.827Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:11.199Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:11.551Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:11.872Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:12.262Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:12.705Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:12.845Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.046Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.436Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.836Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.843Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.403Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.571Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.916Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:15.114Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:15.700Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.306Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.507Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.866Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.087Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.352Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.766Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.980Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:18.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:18.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:19.089Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:19.487Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:19.820Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:20.174Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:20.559Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:20.881Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:21.242Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:21.846Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:22.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:22.375Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:22.706Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:23.244Z\"}], \"share\": [], \"comment\": 0}", + "category": "资源站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "21/2/2025 10:11:50.046+08", + "updatedAt": "24/2/2025 11:32:04.389+08" + }, + { + "id": 105, + "app_id": "app_l3631p0in2", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://dokidokiweb.com/", + "title": "好东西", + "icon": "", + "desc": "123", + "source": "dokidokiweb.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:59.806Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:00.175Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:00.487Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:00.829Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.177Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.564Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.832Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.991Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.180Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.412Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.576Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.721Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.892Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.040Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.212Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.410Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.552Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.742Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.908Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.103Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.255Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.413Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.606Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.769Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.107Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.307Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.475Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.807Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.953Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.967Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.307Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.546Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.653Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.777Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.892Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.064Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.315Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.441Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.633Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.862Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:08.194Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:08.553Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:08.887Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.071Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.287Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.630Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.817Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.998Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.189Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.361Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.569Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.716Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.913Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.088Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.275Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.439Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.629Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.897Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.017Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.213Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.418Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.618Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.789Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.125Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.226Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.402Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.590Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.793Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.979Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.311Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.503Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.681Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.867Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.056Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.234Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.642Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.673Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.819Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.019Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.203Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.403Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.605Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.787Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.101Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.178Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.753Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.932Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.110Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.308Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.496Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.691Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.903Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:19.059Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:19.274Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:19.694Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.062Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.256Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.485Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.634Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.873Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:21.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:21.952Z\"}], \"share\": [], \"comment\": 0}", + "category": "未知", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:57:27.772+08", + "updatedAt": "24/2/2025 11:33:48.704+08" + }, + { + "id": 77, + "app_id": "APPID_TWkysF35lE", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://komiic.com/", + "title": "Komiic-免费在线看漫画", + "icon": "app.svg", + "desc": "漫畫網站,現在努力的在經營這個網站,想把它做到最好,目前漫畫數不多,大多在1400本漫畫, 陸續增加中,會定期更新,會努力的給你最好的體驗", + "source": "komiic.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[]", + "placard": "[{\"url\": \"86bc7cf40421f97b2e709f000.png\", \"type\": \"preview\", \"title\": \"86bc7cf40421f97b2e709f000.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.807+08", + "updatedAt": "24/2/2025 11:46:59.361+08" + }, + { + "id": 50, + "app_id": "APPID_Zhc_xgw5Op", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.geo-fs.com/", + "title": "网页版无障碍模拟飞行", + "icon": "geo_fs_com.ico", + "desc": "GeoFS是一个免费的飞行模拟器使用全球卫星图像和运行在您的网络浏览器或作为移动应用程序。现实和多人,GeoFS提供真实的商业交通(ADS-B)和当地的天气条件,无论你在世界上飞行。", + "source": "www.geo-fs.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd31.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd31.png\"}, {\"url\": \"c871bfc29f512b85238abbd32.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd32.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.802+08", + "updatedAt": "24/2/2025 11:47:53.048+08" + }, + { + "id": 109, + "app_id": "app_m673fd59f7", + "user_id": "uid_8a6gs7psll", + "username": "5236", + "room_id": null, + "type": "web", + "url": "https://haiyong.site/moyu/", + "title": "摸鱼小游戏", + "icon": "", + "desc": "复古摸鱼游戏合集", + "source": "haiyong.site", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼\", \"小游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "24/2/2025 09:08:49.169+08", + "updatedAt": "24/2/2025 11:22:28.501+08" + }, + { + "id": 108, + "app_id": "app_8n507yuume", + "user_id": "uid_f9ih6h2y0i", + "username": "1212862", + "room_id": null, + "type": "web", + "url": "https://minesweeper.online/cn/?ref=www.jspoo.com", + "title": "扫雷", + "icon": "", + "desc": "扫雷的规则很简单。盘面上有许多方格,方格中随机分布着一些雷。你的目标是避开雷,打开其他所有格子。一个非雷格中的数字表示其相邻8格中的雷数,你可以利用这个信息推导出安全格和雷的位置。你可以用右键在你认为是雷的地方插旗(称为标雷)。你可以用左键打开安全的地方,左键打开雷将被判定为失败。", + "source": "minesweeper.online", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_f9ih6h2y0i\", \"creatdAt\": \"2025-02-23T05:49:57.687Z\"}], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "23/2/2025 13:49:48.162+08", + "updatedAt": "24/2/2025 11:30:17.366+08" + }, + { + "id": 107, + "app_id": "app_dwj2kue7hi", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://gitcode.com/open-source-toolkit/e7e59/?utm_source=tools_gitcode&index=bottom&type=card&", + "title": "wifi打卡神器", + "icon": "", + "desc": "开源的钉钉远程打卡WiFi参数模拟工具", + "source": "gitcode.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "21/2/2025 10:36:05.757+08", + "updatedAt": "24/2/2025 11:30:55.736+08" + }, + { + "id": 102, + "app_id": "app_e4utdtogbp", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://superboard.win/join", + "title": "隐私留言板", + "icon": "", + "desc": "这是一个完全完全完全匿名的留言板", + "source": "superboard.win", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:36.808Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.520Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.932Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:38.129Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:38.480Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:38.879Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:39.063Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:39.489Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:39.673Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:59:08.509Z\"}], \"share\": [], \"comment\": 0}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:51:46.82+08", + "updatedAt": "24/2/2025 11:35:38.901+08" + }, + { + "id": 64, + "app_id": "APPID_ZfrEv36_iu", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.aconvert.com/cn/", + "title": "在线转换文档,图像,视频,音频文件", + "icon": "aconvert_com.ico", + "desc": "在线转换PDF,在线转换文档,在线转换电子书,在线转换图像,在线转换视频,在线转换音频。", + "source": "www.aconvert.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_zxj0w023yo\", \"creatdAt\": \"2025-03-24T09:02:27.494Z\"}]}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.771+08", + "updatedAt": "24/3/2025 17:02:27.494+08" + }, + { + "id": 56, + "app_id": "APPID_sKk8QMZ0s5", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://aaronos.dev/AaronOS/aosBeta.php", + "title": "AaronOS", + "icon": "aaronos_dev.ico", + "desc": "一个在线的网页版操作系统", + "source": "aaronos.dev", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd22.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd22.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.763+08", + "updatedAt": "24/2/2025 11:39:01.081+08" + }, + { + "id": 51, + "app_id": "APPID_hDtCh-AzF7", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://yinghe.tv/", + "title": "硬核影视指南 - 够高清才是真硬核!", + "icon": "APPICON_hmWzDgOhw_.png", + "desc": "硬核影视指南是一家专注于收录高清影视站的网站,为用户提供高清、免费的优质影视网站,无论是高清免费在线观看,还是各种网盘下载,全部都可以找到。硬核影视指南,够高清才是真硬核!", + "source": "yinghe.tv", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "导航网站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.812+08", + "updatedAt": "24/2/2025 11:46:42.643+08" + }, + { + "id": 103, + "app_id": "app_rwm860cbqp", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://plonkloving.github.io/AnAn/", + "title": "安安知识库", + "icon": "", + "desc": "摸鱼神器,知识宝库", + "source": "plonkloving.github.io", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:30.704Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:30.736Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:30.924Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.135Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.331Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.502Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.698Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.895Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.059Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.265Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.509Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.650Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.857Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.067Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.249Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.455Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.631Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.888Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.032Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.270Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.437Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.714Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:35.037Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.833Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.435Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.590Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.741Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.909Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.069Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.231Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.414Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.872Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.046Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.374Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.558Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.752Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.113Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.295Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.505Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.688Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.904Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.111Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.323Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.693Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.894Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:09.062Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.013Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.023Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.031Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.040Z\"}], \"share\": [], \"comment\": 0}", + "category": "个人博客", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:53:51.607+08", + "updatedAt": "20/3/2025 16:34:42.04+08" + }, + { + "id": 110, + "app_id": "app_1v76tsw2zs", + "user_id": "uid_jakcofeaw5", + "username": "1216796", + "room_id": null, + "type": "web", + "url": "https://tool.liumingye.cn/music/?page=searchPage#/", + "title": "MyFreeMp3", + "icon": "", + "desc": "音乐神器", + "source": "tool.liumingye.cn", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:22.134Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:22.571Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:22.789Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.342Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.215Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.688Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.981Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:24.301Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:24.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.005Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.391Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.570Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:26.265Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:26.628Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:26.951Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.114Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.436Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.619Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.940Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:28.280Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:28.642Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:53.468Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:53.639Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:53.950Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:54.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:54.344Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:54.544Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "24/2/2025 15:45:59.082+08", + "updatedAt": "21/3/2025 11:51:54.545+08" + }, + { + "id": 37, + "app_id": "APPID_A_I3syM7gM", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://map.bemanicn.com/?utm_source", + "title": "全国音游地图", + "icon": "bemanicn_com.png", + "desc": "全国音游地图", + "source": "map.bemanicn.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:25.434Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:26.844Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:27.198Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:27.541Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:27.871Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.206Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.368Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.543Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.743Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.880Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.047Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.220Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.745Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:30.124Z\"}]}", + "category": "摸鱼游戏", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd11.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd11.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.759+08", + "updatedAt": "1/3/2025 18:16:30.124+08" + }, + { + "id": 113, + "app_id": "app_ag8l8c52fv", + "user_id": "uid_m0wux1qutd", + "username": "1208318", + "room_id": null, + "type": "web", + "url": "http://www.ychy.org/", + "title": "海洋听书网", + "icon": "", + "desc": "海洋听书网", + "source": "www.ychy.org", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "10/3/2025 10:17:50.375+08", + "updatedAt": "10/3/2025 10:17:50.375+08" + }, + { + "id": 114, + "app_id": "app_pwkhvb1xtk", + "user_id": "uid_0ug0zj7n70", + "username": "1218468", + "room_id": null, + "type": "web", + "url": "http://www.baidu.com", + "title": "123", + "icon": "", + "desc": "321", + "source": "www.baidu.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "18/3/2025 10:08:48.84+08", + "updatedAt": "18/3/2025 10:08:48.84+08" + }, + { + "id": 112, + "app_id": "app_l4hybd9ar0", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": null, + "type": "web", + "url": "https://gityx.com/index.html", + "title": "放置网站", + "icon": "", + "desc": "放置游戏合集", + "source": "gityx.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:50.684Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:50.871Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.080Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.345Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.539Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.773Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:52.000Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:35.634Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:35.776Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:35.963Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:36.145Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:36.323Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:36.533Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "2/3/2025 22:08:48.98+08", + "updatedAt": "23/3/2025 10:25:36.533+08" + }, + { + "id": 97, + "app_id": "app_bjpcxsca5g", + "user_id": "uid_kjkm9f2v2n", + "username": "27990", + "room_id": null, + "type": "web", + "url": "https://chat.deepseek.com/sign_in", + "title": "deepseek", + "icon": "", + "desc": "我是 DeepSeek,很高兴见到你!", + "source": "chat.deepseek.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:06.395Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:07.716Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:07.725Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:07.759Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:10.991Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:11.288Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:11.652Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:11.909Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:12.244Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:12.527Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:34.934Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:35.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.079Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.275Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.470Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.853Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:37.545Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:37.684Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:37.858Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.026Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.186Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.372Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.552Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.903Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.223Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.422Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.649Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.866Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:40.247Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:40.738Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.052Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.378Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.557Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.722Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.042Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.229Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.585Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.777Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.974Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:43.168Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:43.541Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:43.923Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.285Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.507Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.677Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.877Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:45.306Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:45.661Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:45.808Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:59.391Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:59.641Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.224Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.576Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.674Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.878Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.043Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.275Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.473Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.790Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:02.017Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:02.192Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:03.310Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:03.658Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.048Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.368Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.698Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.922Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.171Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.391Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.631Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.855Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.067Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.477Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.657Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.922Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.277Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.460Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.670Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.895Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.078Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.325Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.676Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.780Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.017Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.244Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.523Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.843Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.084Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.296Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.650Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.918Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:12.421Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:12.917Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:13.316Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:14.700Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:15.204Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:15.504Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:16.057Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:16.240Z\"}, {\"ip\": \"\", \"user_id\": \"uid_njbhv05xsp\", \"creatdAt\": \"2025-02-24T01:38:18.516Z\"}, {\"ip\": \"\", \"user_id\": \"uid_g6jrtour2o\", \"creatdAt\": \"2025-02-24T15:54:51.537Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:17.442Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:18.515Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:19.184Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:19.584Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:19.829Z\"}], \"share\": [], \"comment\": 0}", + "category": "Ai网站", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 11:47:39.508+08", + "updatedAt": "20/3/2025 16:33:19.829+08" + }, + { + "id": 115, + "app_id": "app_aoddab8cnw", + "user_id": "uid_dqffm3tyz0", + "username": "1213760", + "room_id": null, + "type": "web", + "url": "https://kdocs点cn/l/caIQmNYPaCIC", + "title": "曰记", + "icon": "", + "desc": "曰记", + "source": "xn--kdocscn-1v1q", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "21/3/2025 09:33:48.481+08", + "updatedAt": "21/3/2025 09:33:48.481+08" + }, + { + "id": 116, + "app_id": "app_x1exezit9w", + "user_id": "uid_dqffm3tyz0", + "username": "1213760", + "room_id": null, + "type": "web", + "url": "https://kdocs.cn/l/caIQmNYPaCIC", + "title": "曰记2.0", + "icon": "", + "desc": "曰记2.0", + "source": "kdocs.cn", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:48.651Z\"}, {\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:50.912Z\"}, {\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:51.252Z\"}, {\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:51.642Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "21/3/2025 09:34:52.458+08", + "updatedAt": "25/3/2025 13:21:51.642+08" + }, + { + "id": 118, + "app_id": "app_17cqjtlxmp", + "user_id": "uid_08ybi8rqiq", + "username": "1218416", + "room_id": null, + "type": "web", + "url": "https://www.gying.net/", + "title": "免费影视", + "icon": "", + "desc": "需要登陆,资源全免费", + "source": "www.gying.net", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "22/3/2025 15:42:52.485+08", + "updatedAt": "22/3/2025 15:42:52.485+08" + }, + { + "id": 111, + "app_id": "app_n3ajcc8lpk", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "http://www.bookshuku.org/", + "title": "小说电子版获取", + "icon": "", + "desc": "123", + "source": "www.bookshuku.org", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:23.157Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:23.358Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:23.775Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:24.144Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:24.513Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:24.924Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.049Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.389Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.583Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.944Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.314Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.488Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.653Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.880Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:27.238Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:27.604Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:27.997Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.315Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.410Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.593Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.764Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.947Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:29.303Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:29.669Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.006Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.200Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.380Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.564Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.737Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.093Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.468Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.637Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.818Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.002Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.318Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.509Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.695Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.839Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.196Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.526Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.547Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.668Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.839Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:34.008Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:34.304Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:34.454Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:35.545Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:36.009Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:36.662Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:36.858Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.051Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.244Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.423Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.598Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.769Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.949Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:38.118Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:38.448Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:38.809Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.076Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.398Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.567Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.739Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.879Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.065Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.232Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.382Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.519Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.674Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.850Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.041Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.182Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.499Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.663Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.972Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.109Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.619Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.765Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.309Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.378Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.518Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.788Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.457Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.587Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.763Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.929Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.129Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.263Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.467Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.583Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.750Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:46.489Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:46.813Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:47.267Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:47.739Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:48.280Z\"}, {\"ip\": \"\", \"user_id\": \"uid_7pqc042fdu\", \"creatdAt\": \"2025-03-25T02:08:08.348Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:33.614Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:34.332Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:34.781Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:34.969Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "26/2/2025 09:06:52.562+08", + "updatedAt": "25/3/2025 10:14:34.97+08" + }, + { + "id": 117, + "app_id": "app_rhzft8pdgw", + "user_id": "uid_08ybi8rqiq", + "username": "1218416", + "room_id": null, + "type": "web", + "url": "https://www.gamer520.com/", + "title": "游戏分享", + "icon": "", + "desc": "游戏分享", + "source": "www.gamer520.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:28.693Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:30.789Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.041Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.262Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.453Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.667Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.840Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.030Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.237Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.426Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.598Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.824Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.976Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.322Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.493Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.687Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:25.353Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:26.669Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:27.086Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:27.656Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:28.003Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:28.362Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "21/3/2025 21:37:48.928+08", + "updatedAt": "25/3/2025 15:26:28.362+08" + } +] \ No newline at end of file diff --git a/app_tags/chat_apps_bd.json b/app_tags/chat_apps_bd.json new file mode 100644 index 0000000..e06f3d3 --- /dev/null +++ b/app_tags/chat_apps_bd.json @@ -0,0 +1,2598 @@ +[ + { + "id": 19, + "app_id": "APPID_guawxGe412", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://ywyj.cn/posts/5448", + "title": "电脑博物馆 - 一网一匠极速版", + "icon": "ywyj_cn.ico", + "desc": "一网一匠极速版是一个产品发现社区,发现最新的网站,移动 App和技术产品", + "source": "ywyj.cn", + "status": 2, + "sort": 0, + "interact": "{\"like\": []}", + "category": "重复", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.757+08", + "updatedAt": "24/2/2025 11:54:48.823+08" + }, + { + "id": 4, + "app_id": "APPID_wnH0VIfhBo", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://fakeupdate.net/", + "title": "模拟系统更新", + "icon": "app.svg", + "desc": "恶作剧你的朋友和同事与假的更新屏幕!", + "source": "fakeupdate.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd41.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd41.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.748+08", + "updatedAt": "28/3/2025 21:32:03.125+08" + }, + { + "id": 2, + "app_id": "APPID_EZPokDLFmz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://hong.greatdk.com/", + "title": "哄哄模拟器Web版 – 你的AI对象生气了,快哄哄TA", + "icon": "APPICON_nOlKeFJOgo.ico", + "desc": "哄哄模拟器Web版基于AI技术,让你进入到不同场景之中,用语言技巧和沟通能力去哄你的对象", + "source": "hong.greatdk.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\", \"摸鱼游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.746+08", + "updatedAt": "28/3/2025 21:31:40.986+08" + }, + { + "id": 3, + "app_id": "APPID_I0On2pDsOF", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.lupingwang.com/screen-record/", + "title": "免费在线录屏", + "icon": "lupingwang_com.ico", + "desc": "免费的在线录屏工具无需下载软件", + "source": "www.lupingwang.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_hf99ke15ac\", \"creatdAt\": \"2025-03-28T13:44:39.849Z\"}, {\"ip\": \"\", \"user_id\": \"uid_hf99ke15ac\", \"creatdAt\": \"2025-03-28T13:44:42.408Z\"}]}", + "category": "实用工具", + "tag": "[\"效率工具\", \"工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.747+08", + "updatedAt": "28/3/2025 21:44:42.408+08" + }, + { + "id": 5, + "app_id": "APPID_tto_Ve2Eto", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://m.bjzf.org/217382/1127690.html", + "title": "爱看漫画", + "icon": "APPICON_CufbST9EV3.ico", + "desc": "国内原创在线漫画平台_好看的免费漫画大全 - 爱看漫画", + "source": "m.bjzf.org", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.748+08", + "updatedAt": "28/3/2025 21:32:07.346+08" + }, + { + "id": 7, + "app_id": "APPID_XCFzbWZAkX", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://haiyong.site/win12/", + "title": "Windows 12 网页版", + "icon": "APPICON__UDCrmPIE1.png", + "desc": "Windows 12 网页版", + "source": "haiyong.site", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.75+08", + "updatedAt": "28/3/2025 21:32:17.495+08" + }, + { + "id": 10, + "app_id": "APPID_TLppC3Losm", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://h5mota.com/games/Antimatter/", + "title": "HTML5魔塔", + "icon": "app.svg", + "desc": "HTML5魔塔", + "source": "h5mota.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.752+08", + "updatedAt": "28/3/2025 21:32:31.51+08" + }, + { + "id": 15, + "app_id": "APPID_RZkk6O7kZq", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.speedtest.cn/", + "title": "测速网 - 专业测网速", + "icon": "APPICON_XTmbPnolkt.ico", + "desc": "测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测,Wi-Fi 7,Wi-Fi 6,FTTR - SpeedTest.cn", + "source": "www.speedtest.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"效率工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd06.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd06.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.755+08", + "updatedAt": "28/3/2025 21:32:59.358+08" + }, + { + "id": 11, + "app_id": "APPID_aRtmFYjL6L", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://toutai.cc/", + "title": "投胎模拟器「中国版」", + "icon": "APPICON_fM2E2uAbWA.svg", + "desc": "如果来世还在种花家,你会出生在哪里? - 投胎模拟器「中国版」", + "source": "toutai.cc", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd03.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd03.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.753+08", + "updatedAt": "28/3/2025 21:32:40.65+08" + }, + { + "id": 13, + "app_id": "APPID_cxP9384I31", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://cultivation-simulato.g8hh.com.cn/", + "title": "模拟修仙", + "icon": "app.svg", + "desc": "放置类文字游戏,模拟修仙,摸鱼神器", + "source": "cultivation-simulato.g8hh.com.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd40.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd40.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.754+08", + "updatedAt": "28/3/2025 21:32:50.722+08" + }, + { + "id": 14, + "app_id": "APPID__kkffNpCjz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://rili.zhuayuya.com/", + "title": "摸鱼日历 - 抓鱼鸭出品", + "icon": "APPICON_wIuRJ-59h1.svg", + "desc": "【摸鱼中国】抓鱼鸭 - 摸鱼日历,摸鱼日历API接口,打工人,工作再累,一定不要忘记摸鱼哦!", + "source": "rili.zhuayuya.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.755+08", + "updatedAt": "28/3/2025 21:33:28.235+08" + }, + { + "id": 12, + "app_id": "APPID_u8bHzCdPYp", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://tuxun.fun/", + "title": "图寻", + "icon": "APPICON_hsFmQol7CF.ico", + "desc": "探索真实世界,收集线索,找出自己的位置。", + "source": "tuxun.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd04.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd04.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.754+08", + "updatedAt": "28/3/2025 21:33:06.281+08" + }, + { + "id": 20, + "app_id": "APPID_UimKqv7j_i", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.mycode.ltd/", + "title": "轻连", + "icon": "mycode_ltd.webp", + "desc": "可视化编程做手机APP", + "source": "www.mycode.ltd", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"开发者工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0b.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0b.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.758+08", + "updatedAt": "28/3/2025 21:36:31.469+08" + }, + { + "id": 16, + "app_id": "APPID_smpEujRSar", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://fishing.florastudio.app/", + "title": "偷偷钓个鱼", + "icon": "APPICON_5athrtyrG2.png", + "desc": "偷偷钓个鱼", + "source": "fishing.florastudio.app", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.756+08", + "updatedAt": "28/3/2025 21:33:41.981+08" + }, + { + "id": 17, + "app_id": "APPID_oYeygQ07rl", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "http://comictv.top/", + "title": "摸鱼神器", + "icon": "comictv_top.ico", + "desc": "ComicTv,摸鱼神器", + "source": "comictv.top", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.756+08", + "updatedAt": "28/3/2025 21:33:50.778+08" + }, + { + "id": 18, + "app_id": "APPID_Pt6w77W50d", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://123apps.com/cn/", + "title": "免费的各种格式在线转换工具", + "icon": "123apps_com.svg", + "desc": "Web Apps by 123apps 编辑、转换、创建", + "source": "123apps.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\", \"效率工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.757+08", + "updatedAt": "28/3/2025 21:36:17.377+08" + }, + { + "id": 21, + "app_id": "APPID_lYc5Y-fcL_", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.16personalities.com/ch/%E4%BA%BA%E6%A0%BC%E6%B5%8B%E8%AF%95", + "title": "性格测试", + "icon": "16personalities_com.png", + "desc": "免费性格测试 | 16Personalities", + "source": "www.16personalities.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd10.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd10.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.758+08", + "updatedAt": "28/3/2025 21:37:06.387+08" + }, + { + "id": 22, + "app_id": "APPID_VhPs6hQAWb", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://endfield.hypergryph.com/", + "title": "《明日方舟:终末地》官方网站-Arknights: Endfield", + "icon": "hycdn_cn.ico", + "desc": "跨越边境 直至前线", + "source": "endfield.hypergryph.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.761+08", + "updatedAt": "28/3/2025 21:38:17.321+08" + }, + { + "id": 26, + "app_id": "APPID__sN1EdIIAm", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://kickassapp.com/?route=%2F", + "title": "Kick Ass - Destroy the web", + "icon": "kickassapp_com.ico", + "desc": "不知道是啥", + "source": "kickassapp.com", + "status": 2, + "sort": 0, + "interact": "{\"like\": []}", + "category": "未知", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.767+08", + "updatedAt": "24/2/2025 11:54:13.115+08" + }, + { + "id": 44, + "app_id": "APPID_5UGeVLxCdb", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://github.com/BewlyBewly/BewlyBewly", + "title": "B站-Ui重置版插件", + "icon": "APPICON_MeeOoO41yj.svg", + "desc": "BewlyBewly 是 BiliBili 的浏览器扩展,旨在通过重新设计 BiliBili UI 来增强用户体验。 ", + "source": "github.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1b.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1b.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.779+08", + "updatedAt": "9/2/2025 10:59:10.779+08" + }, + { + "id": 24, + "app_id": "APPID_rUIzJFqSfr", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://earth.nullschool.net/zh-cn/", + "title": "一个在线的全球气象云图", + "icon": "nullschool_net.ico", + "desc": "通过超级计算机的预告,可以在这个交互的动画地图上查看现在的风,天气,海洋和污染状况。每三个小时更新一次。", + "source": "earth.nullschool.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd23.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd23.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.761+08", + "updatedAt": "28/3/2025 21:38:29.186+08" + }, + { + "id": 38, + "app_id": "APPID_M9bbc8W8M1", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://shareduck.fun/", + "title": "分享鸭 - 极简风分享优质资源网站", + "icon": "shareduck_fun.png", + "desc": "一个致力于分享高质量资源的平台,包括但不限于文章、视频、图片、音乐等多种形式。我们的目标是帮助用户发现并分享有价值的资源,让更多人受益。", + "source": "shareduck.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "导航网站", + "tag": "[\"资源站\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.762+08", + "updatedAt": "28/3/2025 21:38:43.312+08" + }, + { + "id": 39, + "app_id": "APPID_jgLTsvfCWX", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://chat.furrybar.com/", + "title": "FurryBar | Ai 聊天", + "icon": "furrybar_com.png", + "desc": "FurryBar是一个毛茸茸的AI聊天项目,允许用户与精心调整的毛茸茸的AI字符聊天!", + "source": "chat.furrybar.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[\"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.765+08", + "updatedAt": "28/3/2025 21:39:34.66+08" + }, + { + "id": 25, + "app_id": "APPID_VZFKGGX8hR", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://typing.xiaomawang.com", + "title": "小码王指法练习", + "icon": "xiaomawang_com.png", + "desc": "小码王打字工具", + "source": "typing.xiaomawang.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.765+08", + "updatedAt": "28/3/2025 21:39:40.851+08" + }, + { + "id": 30, + "app_id": "APPID_089jlKcmDy", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://quzuotu.com/home", + "title": "趣作图—免费在线抠图工具网站", + "icon": "quzuotu_com.ico", + "desc": "趣作图专注于人像、宠物、汽车等物品的智能抠图,具备透明背景、场景切换、证件照制作等功能,是UP主、微商、淘宝店家、运营人员和产品美术必备的图片编辑器。", + "source": "quzuotu.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd20.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd20.png\"}, {\"url\": \"c871bfc29f512b85238abbd21.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd21.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.778+08", + "updatedAt": "28/3/2025 21:41:30.993+08" + }, + { + "id": 40, + "app_id": "APPID_FA4mWKJUA_", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://newoether.github.io/Lagrangian/", + "title": "三体问题模拟器", + "icon": "github_io.ico", + "desc": "三体问题模拟器,限制性三体问题模型", + "source": "newoether.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\", \"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.768+08", + "updatedAt": "28/3/2025 21:40:09.448+08" + }, + { + "id": 28, + "app_id": "APPID_xQ4inL3YQV", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://ywyj.cn/", + "title": "一网一匠发现有趣的新产品", + "icon": "ywyj_cn.ico", + "desc": "B站UP一网一匠创建的产品发现社区,旨在打造一个服务于产品创造者和爱好者分享和交流社区,如果恰巧你是这样的人,那么欢迎你加入我们", + "source": "ywyj.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[\"社区论坛\"]", + "placard": "[{\"url\": \"831169f54645131e9c9c0880d.png\", \"type\": \"preview\", \"title\": \"831169f54645131e9c9c0880d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.774+08", + "updatedAt": "28/3/2025 21:43:05.036+08" + }, + { + "id": 27, + "app_id": "APPID_V5y2mCM4Xz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://dccxi.com/trust/", + "title": "小游戏信任的进化", + "icon": "dccxi_com.png", + "desc": "这是一个互动的博弈论指南,告诉我们为什么和如何相互信任", + "source": "dccxi.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.77+08", + "updatedAt": "28/3/2025 21:40:19.033+08" + }, + { + "id": 29, + "app_id": "APPID_kGz-MfY8dK", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://mac-os.leiyihan.com/", + "title": "网页版macOS", + "icon": "leiyihan_com.png", + "desc": "一个网页版的macos系统,在线体验mac", + "source": "mac-os.leiyihan.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "模拟系统", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd15.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd15.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.776+08", + "updatedAt": "28/3/2025 21:42:43.431+08" + }, + { + "id": 45, + "app_id": "APPID_3kQMFDQ_tl", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.diydoutu.com/", + "title": "DIY斗图表情 表情包制作", + "icon": "diydoutu_com.png", + "desc": "DIY斗图,无水印表情包图片下载分享与在线制作字幕GIF、gif制作、动图加字恶搞制作、来diy属于自己的表情包吧!", + "source": "www.diydoutu.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.782+08", + "updatedAt": "28/3/2025 21:43:42.557+08" + }, + { + "id": 43, + "app_id": "APPID_LLGGEtC7ry", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://my.tgbotss.cn/", + "title": "📍小霸王游戏机-在线版", + "icon": "tgbotss_cn.ico", + "desc": "可在手机电脑上在线玩fc游戏的网站,近乎完美的还原任天堂FC/NES原版ROM游戏的视频和声音。", + "source": "my.tgbotss.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.777+08", + "updatedAt": "28/3/2025 21:43:22.55+08" + }, + { + "id": 31, + "app_id": "APPID_l9AGAxl3a_", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://magicstudio.com/zh/magiceraser/", + "title": "删除照片中的物体 | Magic Eraser by Magic Studio", + "icon": "magicstudio_com.png", + "desc": "只需几秒钟就能编辑图片,用画笔选择并用 AI 擦除图片上的物体、人物、文字、瑕疵和图案。无限制免费使用,无需注册。", + "source": "magicstudio.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[\"Ai网站\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.781+08", + "updatedAt": "28/3/2025 21:43:29.81+08" + }, + { + "id": 71, + "app_id": "APPID_4nX_Pf4TXL", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://lab.magiconch.com/nbnhhsh/", + "title": "能不能好好说话?", + "icon": "app.svg", + "desc": "社交平台上通过拼音首字母缩写指代特定词句的情况越来越多,为了让更多人能勉强理解这一门另类沟通方式、做了这一个划词转义工具。", + "source": "lab.magiconch.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd28.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd28.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.779+08", + "updatedAt": "9/2/2025 10:59:10.779+08" + }, + { + "id": 48, + "app_id": "APPID_R4y5nO5mfA", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://www.skylinewebcams.com/", + "title": "▶️ 自世界的实时高清摄头", + "icon": "app.svg", + "desc": "高清网络摄像头从世界上最好的景点和目的地直播", + "source": "www.skylinewebcams.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"86bc7cf40421f97b2e709f001.png\", \"type\": \"preview\", \"title\": \"86bc7cf40421f97b2e709f001.png\"}, {\"url\": \"86bc7cf40421f97b2e709f002.png\", \"type\": \"preview\", \"title\": \"86bc7cf40421f97b2e709f002.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.794+08", + "updatedAt": "28/3/2025 21:28:11.603+08" + }, + { + "id": 53, + "app_id": "APPID_jlhx3n5Dbh", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.ra2web.com/", + "title": "网页红井-联机对战平台", + "icon": "ra2web_com.ico", + "desc": "An unofficial remake of the classic \"Command & Conquer: Red Alert 2\" RTS game, playable online in the web browser.", + "source": "www.ra2web.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.76+08", + "updatedAt": "28/3/2025 21:38:04.068+08" + }, + { + "id": 47, + "app_id": "APPID_5ZNnlRpVFj", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://yikm.net/netplaylist", + "title": "小霸王,其乐无穷 。红白机,FC在线游戏,街机游戏,街机在线", + "icon": "APPICON_TPCXnw5FD4.png", + "desc": "魂斗罗,超级玛丽,热血足球,三国志,合金弹头,拳皇。这些小时候的回忆,黑白电视机前玩着小霸王游戏机的那种感觉令人怀念,希望大家可以找回童年的快乐", + "source": "yikm.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd07.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd07.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.786+08", + "updatedAt": "28/3/2025 21:34:35.753+08" + }, + { + "id": 52, + "app_id": "APPID_9S-rlH8Vin", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.ccw.site/detail/653dfdf65101d866e71a31e0", + "title": "几何幸存者小游戏", + "icon": "ccw_site.png", + "desc": "共创世界(CCW)是下一代 ACGN(游戏、动画、漫画、小说)内容创作社区。这里有强大易用的 Scratch 编程创作工具、十万开发者、百万独立游戏。想创作、学习、试玩独立游戏都可以来这里。", + "source": "www.ccw.site", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd13.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd13.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.76+08", + "updatedAt": "28/3/2025 21:38:10.277+08" + }, + { + "id": 54, + "app_id": "APPID_9fpJajNr-3", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://limaoqiu.com/i", + "title": "你好,我是李猫球。 - 猫球博客", + "icon": "limaoqiu_com.ico", + "desc": "这里是李猫球的个人博客,记录着猫球和二扯的日常、作品、笔记、小工具。", + "source": "limaoqiu.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "个人博客", + "tag": "[\"个人博客\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.762+08", + "updatedAt": "28/3/2025 21:38:37.358+08" + }, + { + "id": 58, + "app_id": "APPID_En9hHHprYI", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://zw.deadahead.zone/", + "title": "一款在线的僵尸生存游戏", + "icon": "website_files_com.png", + "desc": "面对无情的不死族在这个惊心动魄的免费僵尸生存游戏今天在网上!你能坚持到最后吗?学习更多的知识。", + "source": "zw.deadahead.zone", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.766+08", + "updatedAt": "28/3/2025 21:39:47.877+08" + }, + { + "id": 59, + "app_id": "APPID_SfGaXAh48V", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://blog.jixiaob.cn/backup/hertakuru/", + "title": "转圈圈~", + "icon": "jixiaob_cn.ico", + "desc": "无聊的转圈圈,巨吵注意音箱", + "source": "blog.jixiaob.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.766+08", + "updatedAt": "28/3/2025 21:39:54.308+08" + }, + { + "id": 63, + "app_id": "APPID_TVXlgNma4m", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.tbtool.cn/", + "title": "图吧工具箱", + "icon": "tbtool_cn.ico", + "desc": "图吧工具箱 - 最纯净的硬件工具箱", + "source": "www.tbtool.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd16.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd16.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.77+08", + "updatedAt": "28/3/2025 21:40:26.239+08" + }, + { + "id": 42, + "app_id": "APPID__iuApk8vww", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://dimtown.com/", + "title": "次元小镇 – 动漫爱好者分享社区ヽ(✿゜▽゜)ノ", + "icon": "dimtown_com.png", + "desc": "次元小镇是一个动漫爱好者分享社区,动漫资源、资讯、动漫美图壁纸、音乐和cosplay资源小站,阿宅们快到碗里来ヽ(✿゜▽゜)ノ", + "source": "dimtown.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.774+08", + "updatedAt": "28/3/2025 21:43:10.103+08" + }, + { + "id": 61, + "app_id": "APPID_JR-A9d9jUr", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://lab.magiconch.com/homo/", + "title": "恶臭数字论证器", + "icon": "magiconch_com.ico", + "desc": "输入一个数字可以用复杂的方法证明出来,简单问题复杂化神器", + "source": "lab.magiconch.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd25.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd25.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.769+08", + "updatedAt": "28/3/2025 21:40:50.508+08" + }, + { + "id": 41, + "app_id": "APPID_KS7sxJqiAd", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "http://www.dzkbw.com/", + "title": "电子课本-电子课本网", + "icon": "dzkbw_com.ico", + "desc": "各个版本的教材电子版,小初高都有,非常全", + "source": "www.dzkbw.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\", \"学习工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd27.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd27.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.771+08", + "updatedAt": "28/3/2025 21:40:39.452+08" + }, + { + "id": 70, + "app_id": "APPID_xhxtLSB3-O", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://appshare.muge.info/", + "title": "AppShare", + "icon": "muge_info.ico", + "desc": "一个用户自主分享及下载App的平台", + "source": "appshare.muge.info", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"资源站\", \"社区论坛\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.775+08", + "updatedAt": "28/3/2025 21:43:00.003+08" + }, + { + "id": 68, + "app_id": "APPID_AKWgpxoHwf", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://app.tangoapp.dev/", + "title": "无需下载在线安卓工具", + "icon": "tangoapp_dev.svg", + "desc": "Tango:浏览器中的 Android 工具", + "source": "app.tangoapp.dev", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd14.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd14.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.773+08", + "updatedAt": "28/3/2025 21:43:15.882+08" + }, + { + "id": 67, + "app_id": "APPID_VwQUu-G-jE", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://regex101.com/?utm_source=xinquji", + "title": "regex101: build, test, and debug regex", + "icon": "regex101_com.ico", + "desc": "Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.", + "source": "regex101.com", + "status": 2, + "sort": 0, + "interact": "{\"like\": []}", + "category": "1", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.773+08", + "updatedAt": "24/2/2025 11:51:45.703+08" + }, + { + "id": 76, + "app_id": "APPID_sENnq__rs9", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://enazo.cn/", + "title": "绘谜画猜 - 你画我猜", + "icon": "enazo_cn.ico", + "desc": "支持 断线重连、无限撤销、压感笔刷、智能提示、智能参考、画廊投稿、导出视频 的在线多人你画我猜 ", + "source": "enazo.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd39.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd39.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.801+08", + "updatedAt": "28/3/2025 21:20:40.997+08" + }, + { + "id": 55, + "app_id": "APPID_Iu_mp79X41", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://choa.fun/all", + "title": "炒饭网-有个有趣的社区论坛", + "icon": "chao_fan_com", + "desc": "兴趣聚合的优质内容社区,每个兴趣都值得被尊重,在这里,一起讨论问题、分享趣事、了解最新时事,世界-尽在眼下", + "source": "choa.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[\"社区论坛\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd24.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd24.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.763+08", + "updatedAt": "28/3/2025 21:39:00.848+08" + }, + { + "id": 82, + "app_id": "APPID_RkPyC2jkzA", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://nazo.one-story.cn/", + "title": "nazo解密游戏", + "icon": "APPICON_xdJHAIsYB1.ico", + "desc": "看看你能过几关", + "source": "nazo.one-story.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.787+08", + "updatedAt": "28/3/2025 21:28:44.321+08" + }, + { + "id": 73, + "app_id": "APPID_HgaJfV_nDe", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.mcmod.cn/tools/cbcreator/", + "title": "命令方块指令生成器 - MC百科", + "icon": "mcmod_cn.ico", + "desc": "这个命令方块指令生成器能够使你快速完成命令方块开发或是快速适应游戏环境,它支持多个MC版本,覆盖了MC基础命令、命令方块高级命令、插件命令、MOD命令,并且支持多语言切换,无论你是有经验的老玩家或地图制作者,还是刚入MC的新人,相信这款工具总会有适合你的功能。", + "source": "www.mcmod.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3b.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3b.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.785+08", + "updatedAt": "28/3/2025 21:34:26.962+08" + }, + { + "id": 81, + "app_id": "APPID_slKbDk8QoO", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://aspoem.com/zh-Hans", + "title": "AsPoem | 现代化诗词学习网站", + "icon": "aspoem_com.ico", + "desc": "aspoem.com 是现代化的诗词学习网站,提供全站搜索,提供便捷的全站搜索功能,让您更快地查询律诗、绝句和各位诗人的作品。我们还优化了拼音标注、注释和白话文等的展示方式,使诗词更加易于阅读。此外,我们还提供了诗词打印工具,助您更好地学习古代诗词。快来体验我们网站的魅力吧!", + "source": "aspoem.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"资源站\", \"学习工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd0c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd0c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.784+08", + "updatedAt": "28/3/2025 21:35:08.018+08" + }, + { + "id": 57, + "app_id": "APPID_RY7RNjEZqo", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.hsmy.fun/news/weibo", + "title": "微博热搜榜 - 浑水阅读", + "icon": "hsmy_fun.svg", + "desc": "浑水阅读(hsmy.fun)是一个热搜榜单聚合网站,汇集知乎、微博、虎扑、抖音、今日头条、微博、贴吧、豆瓣等多个主流平台的热门话题。无论您对新闻、科技、娱乐、体育或其他领域感兴趣,浑水阅读都能为您呈现最新的热门信息,让您轻松畅享高效的阅读体验。", + "source": "www.hsmy.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"社区论坛\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd17.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd17.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.764+08", + "updatedAt": "28/3/2025 21:39:27.387+08" + }, + { + "id": 60, + "app_id": "APPID_dtvVctAr6X", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://img.logosc.cn/cartoon", + "title": "AI卡通头像生成器;人像照片一键变漫画头像 - AI改图神器", + "icon": "logosc_cn.png", + "desc": "上传个人照片就能生成迪士尼人物卡通漫画风格头像。您还可以通过AI提示词生成无限创意。快来试试我们的AI人物头像生成器吧!", + "source": "img.logosc.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.766+08", + "updatedAt": "28/3/2025 21:40:00.178+08" + }, + { + "id": 66, + "app_id": "APPID_hLQR6F5txM", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.geo-fs.com/", + "title": "模拟飞行", + "icon": "geo_fs_com.ico", + "desc": "GeoFS is a free flight simulator using global satellite images and running in your web browser or as a mobile app. Realistic and multiplayer, GeoFS provides real-life commercial traffic (ADS-B) and local weather conditions wherever you fly in the world.", + "source": "www.geo-fs.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.772+08", + "updatedAt": "28/3/2025 21:41:06.618+08" + }, + { + "id": 62, + "app_id": "APPID_CnyWyu1DLn", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://xn--o1qx19eeqi.cn/000000", + "title": "小黑点 - 认养一个像素", + "icon": "xn__o1qx19eeqi_cn.ico", + "desc": "认养一个像素一点点把他喂大", + "source": "xn--o1qx19eeqi.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd38.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd38.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.769+08", + "updatedAt": "28/3/2025 21:40:14.88+08" + }, + { + "id": 87, + "app_id": "APPID_dPNEad9u1j", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://tools.miku.ac/", + "title": "MikuTools - 一个神奇的工具集合", + "icon": "hatsune_tech.png", + "desc": "一个神器且轻量的工具集合", + "source": "tools.miku.ac", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd37.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd37.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.777+08", + "updatedAt": "28/3/2025 21:41:25.871+08" + }, + { + "id": 65, + "app_id": "APPID_1NG_FsFZE3", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://bedrocklauncher.github.io/?utm_source=xinquji", + "title": "在线MC", + "icon": "github_io.ico", + "desc": "Official Bedrock Launcher Website", + "source": "bedrocklauncher.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.772+08", + "updatedAt": "28/3/2025 21:41:11.068+08" + }, + { + "id": 69, + "app_id": "APPID_vActOhgzM4", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://krunker.io/", + "title": "Krunker-在线枪战游戏", + "icon": "krunker_io.png", + "desc": "是一个免费的多人在线游戏枪战游戏。无需下载", + "source": "krunker.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd33.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd33.png\"}, {\"url\": \"c871bfc29f512b85238abbd34.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd34.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.775+08", + "updatedAt": "28/3/2025 21:42:51.897+08" + }, + { + "id": 72, + "app_id": "APPID_BivupWCyPR", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.compumuseum.com/index.html", + "title": "电脑博物馆", + "icon": "compumuseum_com.ico", + "desc": "云端的计算机博物馆,在网页模拟器中重现电脑发展史", + "source": "www.compumuseum.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd12.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd12.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.782+08", + "updatedAt": "28/3/2025 21:43:46.427+08" + }, + { + "id": 95, + "app_id": "app_lh5ck83xp4", + "user_id": "uid_qfhk17q9iz", + "username": "1210284", + "room_id": null, + "type": "web", + "url": "http://hi.pcmoe.net/", + "title": "与熊论道", + "icon": "", + "desc": "与熊论道,这是什么?", + "source": "hi.pcmoe.net", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:31.287Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:32.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:32.992Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.149Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.331Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.496Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.668Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.823Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:33.985Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.121Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.270Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.572Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.742Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:34.882Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.059Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.192Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.350Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.539Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.709Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:35.889Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.087Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.234Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.705Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.746Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:36.919Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.073Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.286Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.435Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.614Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.794Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:37.962Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:52.580Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:52.810Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:52.988Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.166Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.339Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.493Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:53.809Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.013Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.313Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.481Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.847Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:54.972Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:55.210Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-10T13:30:55.618Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:56.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:57.065Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:57.456Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:36.510Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:36.685Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:36.885Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.078Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.271Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.488Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:37.818Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:38.019Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:38.240Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:38.797Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:39.894Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:40.078Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:40.312Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:40.816Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:41.423Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:41.646Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:41.814Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:42.294Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:42.704Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:42.904Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.061Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.228Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.395Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.579Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.753Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:43.948Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.128Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.559Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.744Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:44.961Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.134Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.341Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.526Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:45.933Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.120Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.312Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.496Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:46.878Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:47.055Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:47.236Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:47.421Z\"}], \"share\": [], \"comment\": 0}", + "category": "不知道是什么", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "10/2/2025 13:48:19.28+08", + "updatedAt": "24/2/2025 11:46:19.972+08" + }, + { + "id": 118, + "app_id": "app_17cqjtlxmp", + "user_id": "uid_08ybi8rqiq", + "username": "1218416", + "room_id": null, + "type": "web", + "url": "https://www.gying.net/", + "title": "免费影视", + "icon": "", + "desc": "需要登陆,资源全免费", + "source": "www.gying.net", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "22/3/2025 15:42:52.485+08", + "updatedAt": "28/3/2025 18:47:33.308+08" + }, + { + "id": 93, + "app_id": "APPID_0LDqDyy_Td", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://mc.js.cool/", + "title": "在线版MC", + "icon": "js_cool.ico", + "desc": "无需下载直接开玩", + "source": "mc.js.cool", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd26.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd26.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.802+08", + "updatedAt": "28/3/2025 21:20:30.508+08" + }, + { + "id": 92, + "app_id": "APPID_a5FBWbze4k", + "user_id": "uid_evpqt66ips", + "username": "1205217", + "room_id": "", + "type": "web", + "url": "https://yunge.in/", + "title": "云鸽 - 文件传输助手网页版", + "icon": "APPICON_LtG_tmAhBx.png", + "desc": "云鸽是一款方便、快速、安全的文件传输助手。让您可以在不同设备之间轻松共享文件,它提供了简单直观的界面和高速稳定的传输速度,无需下载或登录,非常适合在日常生活和工作中共享文件。", + "source": "yunge.in", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"效率工具\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.8+08", + "updatedAt": "28/3/2025 21:21:31.33+08" + }, + { + "id": 84, + "app_id": "APPID_NE1PW53A7i", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://zaixianwan.app/", + "title": "老游戏在线玩", + "icon": "APPICON_xClRqAHAMr.ico", + "desc": "在电脑和手机浏览器里畅玩 2500+ 中文老游戏,支持触屏、键盘、存档!包括 FC, SFC, N64, GB, GBC, GBA, NDS 等多种游戏机平台。", + "source": "zaixianwan.app", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"2ba030a98c59aa56858c30001.png\", \"type\": \"preview\", \"title\": \"2ba030a98c59aa56858c30001.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.8+08", + "updatedAt": "28/3/2025 21:21:43.541+08" + }, + { + "id": 75, + "app_id": "APPID_ZYrPwC1-r2", + "user_id": "uid_kquu2nmd9u", + "username": "45170", + "room_id": "", + "type": "web", + "url": "https://www.flysheep6.com/", + "title": "flysheep资源避难所", + "icon": "APPICON_uJv9PtG1AK.jpg", + "desc": "一个免费的二次元风格下载站 收录steam epic 单机资源 switch游戏 ChatGPT", + "source": "www.flysheep6.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.798+08", + "updatedAt": "28/3/2025 21:27:35.453+08" + }, + { + "id": 34, + "app_id": "APPID_FN91SHfHSu", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.lddgo.net/string/duplicate-remove", + "title": "在线文本去重工具", + "icon": "APPICON_7ywPh3Q6nB.png", + "desc": "在线文本去重工具,去除全局重复的行或者连续重复的行。支持自定义行拆分字符,是否去除行首行尾空白等自定义参数。", + "source": "www.lddgo.net", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_9evopnp6fj\", \"creatdAt\": \"2025-02-10T01:36:34.660Z\"}]}", + "category": "实用工具", + "tag": "[\"效率工具\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.797+08", + "updatedAt": "28/3/2025 21:27:45.955+08" + }, + { + "id": 91, + "app_id": "APPID_hoamel5g5c", + "user_id": "uid_2baks6abco", + "username": "20305", + "room_id": "", + "type": "web", + "url": "https://www.shj.work/tools/secha/", + "title": "找色差小游戏", + "icon": "app.svg", + "desc": "测测你的眼睛对色差的辨识度,所有的色块中有一个方块的颜色有稍微的不同,你要把它挑出来,在一分钟的时间里,看你能通过多少关,16关以下不要再玩手机了!", + "source": "www.shj.work", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.795+08", + "updatedAt": "28/3/2025 21:28:05.954+08" + }, + { + "id": 83, + "app_id": "APPID_YhGu5DPLjt", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://seaside-station.com/region/recommended-whole-of-japan/", + "title": "日本从景区步行十分钟到达的海景车站", + "icon": "APPICON_y1LyIw7BWV.ico", + "desc": "从日本全国的能看见海的车站中,严选了39个车站,和很多照片一起介绍。网站上一共有241个可以看到海的车站。", + "source": "seaside-station.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"摸鱼神器\", \"旅游攻略\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.796+08", + "updatedAt": "28/3/2025 21:27:56.002+08" + }, + { + "id": 78, + "app_id": "APPID_En5Faxr5ex", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://mail.tm/zh/", + "title": "临时邮件", + "icon": "mail_tm.ico", + "desc": "随时使用临时电子邮件在可疑的网站、论坛或社交网络上注册。保护您的个人电子邮件地址免受垃圾邮件.", + "source": "mail.tm", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2d.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2d.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.776+08", + "updatedAt": "28/3/2025 21:42:22.962+08" + }, + { + "id": 90, + "app_id": "APPID_k7Q4VqV6D0", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://cam.lvwzhen.com/", + "title": "小米水印生成器", + "icon": "lvwzhen_com.ico", + "desc": "小米相机水印生成器", + "source": "cam.lvwzhen.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "小工具", + "tag": "[\"工具\", \"效率工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2e.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2e.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.786+08", + "updatedAt": "28/3/2025 21:29:00.165+08" + }, + { + "id": 79, + "app_id": "APPID_lkrpFxqKUz", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://regex101.com/", + "title": "测试和调试正则表达式", + "icon": "regex101_com.ico", + "desc": "正则表达式测试与语法高亮,解释,小抄表PHP/PCRE, Python, GO, JavaScript, Java, c# /。净,生锈。", + "source": "regex101.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"实用工具\", \"开发者工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd3f.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd3f.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.778+08", + "updatedAt": "28/3/2025 21:42:14.248+08" + }, + { + "id": 88, + "app_id": "APPID_jX6VMh3LGY", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://railmapgen.github.io/", + "title": "在线地铁线路编辑器", + "icon": "github_io.ico", + "desc": "一个开源的在线地铁线路编辑器,可以自己设计地铁线路,无聊的时候摸鱼玩玩挺好的", + "source": "railmapgen.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd1c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.78+08", + "updatedAt": "28/3/2025 21:43:33.82+08" + }, + { + "id": 80, + "app_id": "APPID_jSosqlg4ea", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.aigei.com/sound/", + "title": "爱给网-音效下载网站", + "icon": "aigei_com.ico", + "desc": "爱给网-游戏音效素材下载专区提供,为游戏制作和开发提供:系统;战争;生活;环境;打斗;配音;自然;交通;动物;魔法;乐器;等多个分类音效素材下载", + "source": "www.aigei.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[\"资源站\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd35.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd35.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.78+08", + "updatedAt": "28/3/2025 21:43:38.649+08" + }, + { + "id": 100, + "app_id": "app_nq2y3kdv0l", + "user_id": "uid_sxtdgbbj2y", + "username": "1216448", + "room_id": null, + "type": "web", + "url": "https://www.baidu.com/", + "title": "百度", + "icon": "", + "desc": "你就知道", + "source": "www.baidu.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "搜索引擎", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 16:42:28.334+08", + "updatedAt": "24/2/2025 11:28:43.198+08" + }, + { + "id": 101, + "app_id": "app_2sdn3bivx2", + "user_id": "uid_bx299v9log", + "username": "1206760", + "room_id": null, + "type": "web", + "url": "https://mail.qq.com/", + "title": "QQ邮箱", + "icon": "", + "desc": "456", + "source": "mail.qq.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "邮箱", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "13/2/2025 09:22:38.562+08", + "updatedAt": "24/2/2025 11:29:09.457+08" + }, + { + "id": 96, + "app_id": "app_zh2s0h0fa4", + "user_id": "uid_r5n0tqc5er", + "username": "1216432", + "room_id": null, + "type": "web", + "url": "https://by.symnq2022.com/qqyxdt/hlddz/?msclkid=50f751822fcd1bf8ee6b362e3976f7ab", + "title": "斗地主", + "icon": "", + "desc": "1", + "source": "by.symnq2022.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "游戏", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 11:34:43.914+08", + "updatedAt": "24/2/2025 11:42:51.1+08" + }, + { + "id": 104, + "app_id": "app_75ml64f9rn", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://tuostudy.com/", + "title": "图欧学习资源库", + "icon": "", + "desc": "上万款精品网盘学习资源免费无偿分享!", + "source": "tuostudy.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:36.070Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:36.226Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:36.897Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:37.099Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:37.377Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T08:17:37.728Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-20T00:55:26.320Z\"}], \"share\": [], \"comment\": 0}", + "category": "资源站", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:55:59.597+08", + "updatedAt": "28/3/2025 19:06:41.115+08" + }, + { + "id": 98, + "app_id": "app_uiw0r3icb5", + "user_id": "uid_m0wux1qutd", + "username": "1208318", + "room_id": null, + "type": "web", + "url": "http://www.muyao.site/noname/", + "title": "无名杀", + "icon": "", + "desc": "无名杀", + "source": "www.muyao.site", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 13:12:06.298+08", + "updatedAt": "28/3/2025 21:19:12.683+08" + }, + { + "id": 35, + "app_id": "APPID__NNpuohnKX", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://darkmap.cn/", + "title": "天文通 - 全球光污染地图 - Light Pollution Map", + "icon": "APPICON_RJxfSR_hNT.ico", + "desc": "通过波特尔光害等级展示交互式全球光污染地图,帮助你选择全国光污染最少的地方观测星空,为天文摄影爱好者提供SQM在内的光污染指数,找到哪里可以肉眼看到银河。", + "source": "darkmap.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:58.612Z\"}]}", + "category": "实用工具", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"2ba030a98c59aa56858c30000.png\", \"type\": \"preview\", \"title\": \"2ba030a98c59aa56858c30000.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.801+08", + "updatedAt": "28/3/2025 21:21:11.224+08" + }, + { + "id": 9, + "app_id": "APPID_w_kU86lIcS", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://lolitalibrary.com/maomao/#", + "title": "猫国建设者-猫猫国", + "icon": "APPICON_fKrKLzzF5b.gif", + "desc": "一款最适合摸鱼,还巨上头的文字放置类游戏", + "source": "lolitalibrary.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_rcto9kzggy\", \"creatdAt\": \"2025-02-10T01:40:56.058Z\"}, {\"ip\": \"\", \"user_id\": \"uid_rcto9kzggy\", \"creatdAt\": \"2025-02-10T01:40:56.756Z\"}]}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd01.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd01.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.752+08", + "updatedAt": "28/3/2025 21:32:46.01+08" + }, + { + "id": 99, + "app_id": "app_dv1isye39w", + "user_id": "uid_m0wux1qutd", + "username": "1208318", + "room_id": null, + "type": "web", + "url": "https://www.hifast.cn/", + "title": "快导航网", + "icon": "", + "desc": "一个导航网站", + "source": "www.hifast.cn", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "导航网站", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 13:27:08.766+08", + "updatedAt": "28/3/2025 21:45:14.071+08" + }, + { + "id": 105, + "app_id": "app_l3631p0in2", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://dokidokiweb.com/", + "title": "好东西", + "icon": "", + "desc": "123", + "source": "dokidokiweb.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:57:59.806Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:00.175Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:00.487Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:00.829Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.177Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.564Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.832Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:01.991Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.180Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.412Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.576Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.721Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:02.892Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.040Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.212Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.410Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.552Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.742Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:03.908Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.103Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.255Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.413Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.606Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:04.769Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.107Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.307Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.475Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.807Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.953Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:05.967Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.307Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.546Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.653Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.777Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:06.892Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.064Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.315Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.441Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.633Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:07.862Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:08.194Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:08.553Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:08.887Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.071Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.287Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.630Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.817Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:09.998Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.189Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.361Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.569Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.716Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:10.913Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.088Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.275Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.439Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.629Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:11.897Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.017Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.213Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.418Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.618Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:12.789Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.125Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.226Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.402Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.590Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.793Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:13.979Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.311Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.503Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.681Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:14.867Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.056Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.234Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.642Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.673Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:15.819Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.019Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.203Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.403Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.605Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:16.787Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.101Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.178Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.753Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:17.932Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.110Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.308Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.496Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.691Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:18.903Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:19.059Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:19.274Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:19.694Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.062Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.256Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.485Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.634Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:20.873Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:21.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:21.952Z\"}], \"share\": [], \"comment\": 0}", + "category": "未知", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:57:27.772+08", + "updatedAt": "24/2/2025 11:33:48.704+08" + }, + { + "id": 109, + "app_id": "app_m673fd59f7", + "user_id": "uid_8a6gs7psll", + "username": "5236", + "room_id": null, + "type": "web", + "url": "https://haiyong.site/moyu/", + "title": "摸鱼小游戏", + "icon": "", + "desc": "复古摸鱼游戏合集", + "source": "haiyong.site", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼\", \"小游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "24/2/2025 09:08:49.169+08", + "updatedAt": "24/2/2025 11:22:28.501+08" + }, + { + "id": 107, + "app_id": "app_dwj2kue7hi", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://gitcode.com/open-source-toolkit/e7e59/?utm_source=tools_gitcode&index=bottom&type=card&", + "title": "wifi打卡神器", + "icon": "", + "desc": "开源的钉钉远程打卡WiFi参数模拟工具", + "source": "gitcode.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "21/2/2025 10:36:05.757+08", + "updatedAt": "28/3/2025 19:06:10.418+08" + }, + { + "id": 103, + "app_id": "app_rwm860cbqp", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://plonkloving.github.io/AnAn/", + "title": "安安知识库", + "icon": "", + "desc": "摸鱼神器,知识宝库", + "source": "plonkloving.github.io", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:30.704Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:30.736Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:30.924Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.135Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.331Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.502Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.698Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:31.895Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.059Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.265Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.509Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.650Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:32.857Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.067Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.249Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.455Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.631Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:33.888Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.032Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.270Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.437Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.714Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:35.037Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:34.833Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.435Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.590Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.741Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:04.909Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.069Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.231Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.414Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:05.872Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.046Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.374Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.558Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:06.752Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.113Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.295Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.505Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.688Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:07.904Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.111Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.323Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.693Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:08.894Z\"}, {\"ip\": \"\", \"user_id\": \"uid_qfhk17q9iz\", \"creatdAt\": \"2025-02-22T00:54:09.062Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.013Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.023Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.031Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:34:42.040Z\"}], \"share\": [], \"comment\": 0}", + "category": "个人博客", + "tag": "[\"摸鱼神器\", \"个人博客\"]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:53:51.607+08", + "updatedAt": "28/3/2025 19:06:53.427+08" + }, + { + "id": 51, + "app_id": "APPID_hDtCh-AzF7", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://yinghe.tv/", + "title": "硬核影视指南 - 够高清才是真硬核!", + "icon": "APPICON_hmWzDgOhw_.png", + "desc": "硬核影视指南是一家专注于收录高清影视站的网站,为用户提供高清、免费的优质影视网站,无论是高清免费在线观看,还是各种网盘下载,全部都可以找到。硬核影视指南,够高清才是真硬核!", + "source": "yinghe.tv", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "导航网站", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.812+08", + "updatedAt": "28/3/2025 21:19:37.039+08" + }, + { + "id": 77, + "app_id": "APPID_TWkysF35lE", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://komiic.com/", + "title": "Komiic-免费在线看漫画", + "icon": "app.svg", + "desc": "漫畫網站,現在努力的在經營這個網站,想把它做到最好,目前漫畫數不多,大多在1400本漫畫, 陸續增加中,會定期更新,會努力的給你最好的體驗", + "source": "komiic.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "资源站", + "tag": "[\"资源站\"]", + "placard": "[{\"url\": \"86bc7cf40421f97b2e709f000.png\", \"type\": \"preview\", \"title\": \"86bc7cf40421f97b2e709f000.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.807+08", + "updatedAt": "28/3/2025 21:19:46.987+08" + }, + { + "id": 50, + "app_id": "APPID_Zhc_xgw5Op", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.geo-fs.com/", + "title": "网页版无障碍模拟飞行", + "icon": "geo_fs_com.ico", + "desc": "GeoFS是一个免费的飞行模拟器使用全球卫星图像和运行在您的网络浏览器或作为移动应用程序。现实和多人,GeoFS提供真实的商业交通(ADS-B)和当地的天气条件,无论你在世界上飞行。", + "source": "www.geo-fs.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd31.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd31.png\"}, {\"url\": \"c871bfc29f512b85238abbd32.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd32.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.802+08", + "updatedAt": "28/3/2025 21:20:23.225+08" + }, + { + "id": 56, + "app_id": "APPID_sKk8QMZ0s5", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://aaronos.dev/AaronOS/aosBeta.php", + "title": "AaronOS", + "icon": "aaronos_dev.ico", + "desc": "一个在线的网页版操作系统", + "source": "aaronos.dev", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd22.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd22.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.763+08", + "updatedAt": "28/3/2025 21:39:09.676+08" + }, + { + "id": 64, + "app_id": "APPID_ZfrEv36_iu", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.aconvert.com/cn/", + "title": "在线转换文档,图像,视频,音频文件", + "icon": "aconvert_com.ico", + "desc": "在线转换PDF,在线转换文档,在线转换电子书,在线转换图像,在线转换视频,在线转换音频。", + "source": "www.aconvert.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_zxj0w023yo\", \"creatdAt\": \"2025-03-24T09:02:27.494Z\"}]}", + "category": "实用工具", + "tag": "[\"实用工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2c.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2c.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.771+08", + "updatedAt": "28/3/2025 21:40:58.223+08" + }, + { + "id": 114, + "app_id": "app_pwkhvb1xtk", + "user_id": "uid_0ug0zj7n70", + "username": "1218468", + "room_id": null, + "type": "web", + "url": "http://www.baidu.com", + "title": "123", + "icon": "", + "desc": "321", + "source": "www.baidu.com", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "18/3/2025 10:08:48.84+08", + "updatedAt": "28/3/2025 18:55:40.439+08" + }, + { + "id": 115, + "app_id": "app_aoddab8cnw", + "user_id": "uid_dqffm3tyz0", + "username": "1213760", + "room_id": null, + "type": "web", + "url": "https://kdocs点cn/l/caIQmNYPaCIC", + "title": "曰记", + "icon": "", + "desc": "曰记", + "source": "xn--kdocscn-1v1q", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[\"摸鱼神器\", \"社区论坛\"]", + "placard": "[]", + "top": 0, + "createdAt": "21/3/2025 09:33:48.481+08", + "updatedAt": "28/3/2025 18:52:09.085+08" + }, + { + "id": 111, + "app_id": "app_n3ajcc8lpk", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "http://www.bookshuku.org/", + "title": "小说电子版获取", + "icon": "", + "desc": "123", + "source": "www.bookshuku.org", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:23.157Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:23.358Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:23.775Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:24.144Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:24.513Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:24.924Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.049Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.389Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.583Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:25.944Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.314Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.488Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.653Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:26.880Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:27.238Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:27.604Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:27.997Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.315Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.410Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.593Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.764Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:28.947Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:29.303Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:29.669Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.006Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.200Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.380Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.564Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.737Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:30.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.093Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.468Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.637Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:31.818Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.002Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.318Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.509Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.695Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:32.839Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.196Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.526Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.547Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.668Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:33.839Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:34.008Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:34.304Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:34.454Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:35.545Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:36.009Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:36.662Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:36.858Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.051Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.244Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.423Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.598Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.769Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:37.949Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:38.118Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:38.448Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:38.809Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.076Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.398Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.567Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.739Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:39.879Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.065Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.232Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.382Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.519Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.674Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:40.850Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.041Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.182Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.499Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.663Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:41.972Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.109Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.619Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:42.765Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.309Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.378Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.518Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:43.788Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.457Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.587Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.763Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:44.929Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.129Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.263Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.467Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.583Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:45.750Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:46.489Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:46.813Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:47.267Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:47.739Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:48.280Z\"}, {\"ip\": \"\", \"user_id\": \"uid_7pqc042fdu\", \"creatdAt\": \"2025-03-25T02:08:08.348Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:33.614Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:34.332Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:34.781Z\"}, {\"ip\": \"\", \"user_id\": \"uid_x3pb54nsq8\", \"creatdAt\": \"2025-03-25T02:14:34.969Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[\"资源站\", \"小说\"]", + "placard": "[]", + "top": 0, + "createdAt": "26/2/2025 09:06:52.562+08", + "updatedAt": "28/3/2025 19:04:36.035+08" + }, + { + "id": 110, + "app_id": "app_1v76tsw2zs", + "user_id": "uid_jakcofeaw5", + "username": "1216796", + "room_id": null, + "type": "web", + "url": "https://tool.liumingye.cn/music/?page=searchPage#/", + "title": "MyFreeMp3", + "icon": "", + "desc": "音乐神器", + "source": "tool.liumingye.cn", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:22.134Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:22.571Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:22.789Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.342Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.215Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.688Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:23.981Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:24.301Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:24.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.005Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.391Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.570Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:25.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:26.265Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:26.628Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:26.951Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.114Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.436Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.619Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:27.940Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:28.280Z\"}, {\"ip\": \"\", \"user_id\": \"uid_jakcofeaw5\", \"creatdAt\": \"2025-02-24T07:46:28.642Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:53.468Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:53.639Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:53.950Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:54.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:54.344Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:54.544Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[]", + "placard": "[]", + "top": 0, + "createdAt": "24/2/2025 15:45:59.082+08", + "updatedAt": "28/3/2025 19:05:32.465+08" + }, + { + "id": 113, + "app_id": "app_ag8l8c52fv", + "user_id": "uid_m0wux1qutd", + "username": "1208318", + "room_id": null, + "type": "web", + "url": "http://www.ychy.org/", + "title": "海洋听书网", + "icon": "", + "desc": "海洋听书网", + "source": "www.ychy.org", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[\"资源站\", \"小说\", \"漫画与图画小说\"]", + "placard": "[]", + "top": 0, + "createdAt": "10/3/2025 10:17:50.375+08", + "updatedAt": "28/3/2025 19:02:47.107+08" + }, + { + "id": 97, + "app_id": "app_bjpcxsca5g", + "user_id": "uid_kjkm9f2v2n", + "username": "27990", + "room_id": null, + "type": "web", + "url": "https://chat.deepseek.com/sign_in", + "title": "deepseek", + "icon": "", + "desc": "我是 DeepSeek,很高兴见到你!", + "source": "chat.deepseek.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:06.395Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:07.716Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:07.725Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:07.759Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:10.991Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:11.288Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:11.652Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:11.909Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:12.244Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-12T04:29:12.527Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:34.934Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:35.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.079Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.275Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.470Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:36.853Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:37.545Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:37.684Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:37.858Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.026Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.186Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.372Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.552Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:38.903Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.223Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.422Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.649Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:39.866Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:40.247Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:40.738Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.052Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.378Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.557Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:41.722Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.042Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.229Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.585Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.777Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:42.974Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:43.168Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:43.541Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:43.923Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.285Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.507Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.677Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:44.877Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:45.306Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:45.661Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:45.808Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:59.391Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:51:59.641Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.224Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.576Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.674Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:00.878Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.043Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.275Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.473Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:01.790Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:02.017Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:02.192Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:03.310Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:03.658Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.048Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.368Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.698Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:04.922Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.171Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.391Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.631Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:05.855Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.067Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.477Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.657Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:06.922Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.277Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.460Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.670Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:07.895Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.078Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.325Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.676Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:08.780Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.017Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.244Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.523Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:09.843Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.084Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.296Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.650Z\"}, {\"ip\": \"\", \"user_id\": \"uid_nttwiwbvqx\", \"creatdAt\": \"2025-02-13T06:52:10.918Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:12.421Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:12.917Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:13.316Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:14.700Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:15.204Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:15.504Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:16.057Z\"}, {\"ip\": \"\", \"user_id\": \"uid_q7d18l2m8k\", \"creatdAt\": \"2025-02-13T09:26:16.240Z\"}, {\"ip\": \"\", \"user_id\": \"uid_njbhv05xsp\", \"creatdAt\": \"2025-02-24T01:38:18.516Z\"}, {\"ip\": \"\", \"user_id\": \"uid_g6jrtour2o\", \"creatdAt\": \"2025-02-24T15:54:51.537Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:17.442Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:18.515Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:19.184Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:19.584Z\"}, {\"ip\": \"\", \"user_id\": \"uid_m0wux1qutd\", \"creatdAt\": \"2025-03-20T08:33:19.829Z\"}], \"share\": [], \"comment\": 0}", + "category": "Ai网站", + "tag": "[\"Ai网站\"]", + "placard": "[]", + "top": 0, + "createdAt": "12/2/2025 11:47:39.508+08", + "updatedAt": "28/3/2025 21:19:22.431+08" + }, + { + "id": 117, + "app_id": "app_rhzft8pdgw", + "user_id": "uid_08ybi8rqiq", + "username": "1218416", + "room_id": null, + "type": "web", + "url": "https://www.gamer520.com/", + "title": "游戏分享", + "icon": "", + "desc": "游戏分享", + "source": "www.gamer520.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:28.693Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:30.789Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.041Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.262Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.453Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.667Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:31.840Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.030Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.237Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.426Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.598Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.824Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:32.976Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.322Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.493Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:33.687Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:25.353Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:26.669Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:27.086Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:27.656Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:28.003Z\"}, {\"ip\": \"\", \"user_id\": \"uid_om7hw58t2z\", \"creatdAt\": \"2025-03-25T07:26:28.362Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "21/3/2025 21:37:48.928+08", + "updatedAt": "28/3/2025 18:47:54.543+08" + }, + { + "id": 116, + "app_id": "app_x1exezit9w", + "user_id": "uid_dqffm3tyz0", + "username": "1213760", + "room_id": null, + "type": "web", + "url": "https://kdocs.cn/l/caIQmNYPaCIC", + "title": "曰记2.0", + "icon": "", + "desc": "曰记2.0", + "source": "kdocs.cn", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:48.651Z\"}, {\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:50.912Z\"}, {\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:51.252Z\"}, {\"ip\": \"\", \"user_id\": \"uid_0wda1jq8zy\", \"creatdAt\": \"2025-03-25T05:21:51.642Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[\"摸鱼神器\", \"社区论坛\"]", + "placard": "[]", + "top": 0, + "createdAt": "21/3/2025 09:34:52.458+08", + "updatedAt": "28/3/2025 18:51:54.61+08" + }, + { + "id": 108, + "app_id": "app_8n507yuume", + "user_id": "uid_f9ih6h2y0i", + "username": "1212862", + "room_id": null, + "type": "web", + "url": "https://minesweeper.online/cn/?ref=www.jspoo.com", + "title": "扫雷", + "icon": "", + "desc": "扫雷的规则很简单。盘面上有许多方格,方格中随机分布着一些雷。你的目标是避开雷,打开其他所有格子。一个非雷格中的数字表示其相邻8格中的雷数,你可以利用这个信息推导出安全格和雷的位置。你可以用右键在你认为是雷的地方插旗(称为标雷)。你可以用左键打开安全的地方,左键打开雷将被判定为失败。", + "source": "minesweeper.online", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_f9ih6h2y0i\", \"creatdAt\": \"2025-02-23T05:49:57.687Z\"}], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "23/2/2025 13:49:48.162+08", + "updatedAt": "28/3/2025 19:05:53.406+08" + }, + { + "id": 106, + "app_id": "app_2n0hfzt4gy", + "user_id": "uid_kjkm9f2v2n", + "username": "27990", + "room_id": null, + "type": "web", + "url": "https://www.lezhugame.com/", + "title": "乐猪游戏", + "icon": "", + "desc": "PC、stream游戏资源下载站", + "source": "www.lezhugame.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.052Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.195Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.476Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:02.780Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:03.069Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:03.378Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:03.692Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.021Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.345Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.667Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:04.998Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:05.337Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:05.673Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.025Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.219Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.590Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:06.931Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:07.451Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:07.554Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:07.683Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.002Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.359Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:08.886Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:09.054Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:09.422Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:09.727Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.232Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.424Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.646Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:10.827Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:11.199Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:11.551Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:11.872Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:12.262Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:12.705Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:12.845Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.046Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.436Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.836Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:13.843Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.403Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.571Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:14.916Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:15.114Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:15.700Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.306Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.507Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.675Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:16.866Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.087Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.352Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.766Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:17.980Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:18.269Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:18.905Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:19.089Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:19.487Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:19.820Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:20.174Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:20.559Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:20.881Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:21.242Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:21.846Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:22.155Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:22.375Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:22.706Z\"}, {\"ip\": \"\", \"user_id\": \"uid_kjkm9f2v2n\", \"creatdAt\": \"2025-02-21T02:12:23.244Z\"}], \"share\": [], \"comment\": 0}", + "category": "资源站", + "tag": "[\"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "21/2/2025 10:11:50.046+08", + "updatedAt": "28/3/2025 19:06:32.208+08" + }, + { + "id": 112, + "app_id": "app_l4hybd9ar0", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": null, + "type": "web", + "url": "https://gityx.com/index.html", + "title": "放置网站", + "icon": "", + "desc": "放置游戏合集", + "source": "gityx.com", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:50.684Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:50.871Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.080Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.345Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.539Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:51.773Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-03-21T03:51:52.000Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:35.634Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:35.776Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:35.963Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:36.145Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:36.323Z\"}, {\"ip\": \"\", \"user_id\": \"uid_ns9f09z4z6\", \"creatdAt\": \"2025-03-23T02:25:36.533Z\"}], \"share\": [], \"comment\": 0}", + "category": "", + "tag": "[\"摸鱼游戏\", \"社区论坛\", \"摸鱼神器\", \"资源站\"]", + "placard": "[]", + "top": 0, + "createdAt": "2/3/2025 22:08:48.98+08", + "updatedAt": "28/3/2025 18:58:54.615+08" + }, + { + "id": 102, + "app_id": "app_e4utdtogbp", + "user_id": "uid_auo277s63t", + "username": "857161", + "room_id": null, + "type": "web", + "url": "https://superboard.win/join", + "title": "隐私留言板", + "icon": "", + "desc": "这是一个完全完全完全匿名的留言板", + "source": "superboard.win", + "status": 1, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:36.808Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.148Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.520Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.718Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:37.932Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:38.129Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:38.480Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:38.879Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:39.063Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:39.489Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:58:39.673Z\"}, {\"ip\": \"\", \"user_id\": \"uid_auo277s63t\", \"creatdAt\": \"2025-02-19T07:59:08.509Z\"}], \"share\": [], \"comment\": 0}", + "category": "摸鱼神器", + "tag": "[\"社区论坛\", \"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "19/2/2025 15:51:46.82+08", + "updatedAt": "28/3/2025 21:18:34.423+08" + }, + { + "id": 33, + "app_id": "APPID_zqfAQTHvtA", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://www.simcompanies.com/", + "title": "商业模拟游戏-模拟公司", + "icon": "APPICON_DaGd16FEEv.png", + "desc": "《模拟公司》是一款慢节奏的多人经济模拟游戏。你可以从零开始建立自己的企业,并与其他人进行贸易。", + "source": "www.simcompanies.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd29.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd29.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.789+08", + "updatedAt": "28/3/2025 21:28:38.336+08" + }, + { + "id": 36, + "app_id": "APPID_p9MpCev4QB", + "user_id": "uid_sxkja561gl", + "username": "1203794", + "room_id": "", + "type": "web", + "url": "https://ass.m-j.bond/", + "title": "明日方舟剧情站", + "icon": "APPICON_cQu2WEYKQS.png", + "desc": "ASS——明日方舟剧情站", + "source": "ass.m-j.bond", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.805+08", + "updatedAt": "28/3/2025 21:19:57.33+08" + }, + { + "id": 85, + "app_id": "APPID_QdGWsnZyKW", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.zhuayuya.com/", + "title": "抓鱼鸭 - 专注于摸鱼的新标签页", + "icon": "APPICON_4GqbDdw6l4.svg", + "desc": "【摸鱼中国】抓鱼鸭 - 不仅仅是起始页,它能帮你收藏网站,还能帮你找到好玩的网站,还有聚合搜索帮你快速找到自己想要的,还有弹幕功能,跟小伙伴一起分享点有趣的事", + "source": "www.zhuayuya.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd05.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd05.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.804+08", + "updatedAt": "28/3/2025 21:20:03.4+08" + }, + { + "id": 86, + "app_id": "APPID_GySQkNgAd_", + "user_id": "uid_do4ywwoe69", + "username": "1205558", + "room_id": "", + "type": "web", + "url": "https://iirose.com/", + "title": "蔷薇花园 IIROSE ( i站 ) - 树洞 | i站官网", + "icon": "APPICON_LIYw4amSM8.ico", + "desc": "蔷薇花园 IIROSE ( i站 ) 是一个正在不断完善的虚拟世界 , 您可以把这里当做树洞亦或者是一个网络上的家 , 在这里您能找到属于自己的树洞和归属感 , 还能遇到各样性情的伙伴 , 开始一段旅程吧 。", + "source": "iirose.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.804+08", + "updatedAt": "28/3/2025 21:20:16.611+08" + }, + { + "id": 49, + "app_id": "APPID_pJIVAWKY0u", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.taptap.cn/", + "title": "TapTap - 发现好游戏", + "icon": "APPICON_YAjSFUrZe0.ico", + "desc": "TapTap 专为中国手游玩家打造的推荐高品质手游的分享社区。我们拥有超过 2 万款可玩游戏,超过 1 亿玩家在我们平台上完成了 30 亿次游戏下载,发布了超过 3500 万条真实客观的游戏评价,并为玩家提供了 50 万篇优质内容。目前已有超过 10 万个游戏开发者入驻了 TapTap 玩家社区。立即下载 TapTap,与我们一起体验最顶级的手游乐趣吧!", + "source": "www.taptap.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[\"社区论坛\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.799+08", + "updatedAt": "28/3/2025 21:27:26.929+08" + }, + { + "id": 74, + "app_id": "APPID__kd-lrwS2B", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://ai-bot.cn/", + "title": "AI工具集 | 700+ AI工具集合官网,国内外AI工具集导航大全", + "icon": "APPICON_Xwq8h70Rrp.png", + "desc": "AI工具集导航官网收录了国内外数百个AI工具,包括AI写作工具、AI图像生成和背景移除、AI视频制作、AI音频转录、AI辅助编程、AI音乐生成、AI绘画设计、AI对话聊天等AI工具集合大全,以及AI学习开发的常用网站、框架和模型,帮助你加入人工智能浪潮,自动化高效完成任务!", + "source": "ai-bot.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[\"资源站\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd08.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd08.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.793+08", + "updatedAt": "28/3/2025 21:28:32.462+08" + }, + { + "id": 32, + "app_id": "APPID_jbGb_30m6Y", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://d.design/", + "title": "堆友-设计师网站", + "icon": "alicdn_com.png", + "desc": "堆友是Alibaba Design打造的设计师全成长周期服务平台,围绕品质、效率、技能、成就、收入五大用户价值布局平台能力,全力服务设计师,旨在成为设计师的好朋友。\n堆友历经大厂设计师团队多轮打磨雕刻,集海量高品质3D素材、实时在线渲染、多元场景功能应用、轻便好学易上手等多重优势于一身的设计神器,更自带免费可商用属性,为专业设计师、运营工友、学生小白、社交达人提供了一个零成本的在线设计站点和资源库。", + "source": "d.design", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "论坛社区", + "tag": "[\"设计\", \"设计资源\", \"社区论坛\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd30.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd30.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.785+08", + "updatedAt": "28/3/2025 21:29:17.833+08" + }, + { + "id": 1, + "app_id": "APPID__K4XtoApNP", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://g1tyx.github.io/pokemon/", + "title": "口袋妖怪放置 - Pokeidle", + "icon": "APPICON_YE1i3WeZdn.png", + "desc": "口袋妖怪放置 - Pokeidle", + "source": "g1tyx.github.io", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd09.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd09.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.742+08", + "updatedAt": "28/3/2025 21:31:33.868+08" + }, + { + "id": 6, + "app_id": "APPID_e0Lhy3FtFD", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://warframe.huijiwiki.com/wiki/Mainpage", + "title": "非官方WARFRAME中文维基 | 星际战甲", + "icon": "APPICON_sWfJcRxm6t.png", + "desc": "玩家维护的WARFRAME(星际战甲)非官方性质中文维基。", + "source": "warframe.huijiwiki.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼神器", + "tag": "[\"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd02.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd02.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.749+08", + "updatedAt": "28/3/2025 21:32:13.41+08" + }, + { + "id": 8, + "app_id": "APPID_EmWLeZ2XTH", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://game.ur1.fun/adarkroom", + "title": "小黑屋游戏汉化版", + "icon": "APPICON_OjsFHVnj9q.ico", + "desc": "一款经典耐玩的文字冒险游戏,放置类", + "source": "game.ur1.fun", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:50.197Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:51.120Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:51.621Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:51.780Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.210Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.246Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.494Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.691Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.820Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:52.987Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:53.140Z\"}, {\"ip\": \"\", \"user_id\": \"uid_8a6gs7psll\", \"creatdAt\": \"2025-02-10T01:18:53.454Z\"}, {\"ip\": \"\", \"user_id\": \"uid_b4k0vddamw\", \"creatdAt\": \"2025-02-14T02:29:42.970Z\"}]}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.751+08", + "updatedAt": "28/3/2025 21:32:27.102+08" + }, + { + "id": 89, + "app_id": "APPID_Bg-e6MRa9q", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.minesweeper.cn/", + "title": "扫雷游戏网页版 - Minesweeper", + "icon": "minesweeper_cn.ico", + "desc": "本站提供了经典扫雷游戏,并略作改进,在电脑或手机上打开网页就可以玩,无需下载安装。增加了满屏级别,自适应屏幕大小。成绩榜实时显示大家的在线扫雷成绩。", + "source": "www.minesweeper.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd36.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd36.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.783+08", + "updatedAt": "28/3/2025 21:35:14.865+08" + }, + { + "id": 46, + "app_id": "APPID_c8WVw7Zp5r", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.cvh.ac.cn/spms/list.php", + "title": "植物标本-国家植物标本资源库", + "icon": "ac_cn.ico", + "desc": "国家植物标本资源库(National Plant Specimen Resource Center,NPSRC)是科技部和财政部批准的国家科技资源共享服务平台之一,主要是在全国16家馆藏量影响力较大和特色显著的植物(菌物)标本馆和原NSII 4个子平台(植物、教学、保护区和极地子)基础上建设的,依托单位为中国科学院植物研究所,以中国数字植物标本馆(Chinese Virtual Herbarium,CVH)作为在线共享平台。", + "source": "www.cvh.ac.cn", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "实用工具", + "tag": "[\"学习工具\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd2a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd2a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.783+08", + "updatedAt": "28/3/2025 21:35:40.055+08" + }, + { + "id": 37, + "app_id": "APPID_A_I3syM7gM", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://map.bemanicn.com/?utm_source", + "title": "全国音游地图", + "icon": "bemanicn_com.png", + "desc": "全国音游地图", + "source": "map.bemanicn.com", + "status": 1, + "sort": 0, + "interact": "{\"like\": [{\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:25.434Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:26.844Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:27.198Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:27.541Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:27.871Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.206Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.368Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.543Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.743Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:28.880Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.047Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.220Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.388Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:29.745Z\"}, {\"ip\": \"\", \"user_id\": \"uid_luq1isogwn\", \"creatdAt\": \"2025-03-01T10:16:30.124Z\"}]}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"摸鱼神器\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd11.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd11.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.759+08", + "updatedAt": "28/3/2025 21:37:50.449+08" + }, + { + "id": 23, + "app_id": "APPID_EOHUPoYSea", + "user_id": "uid_fv58yfu2s6", + "username": "10001", + "room_id": "", + "type": "web", + "url": "https://www.goenhance.ai/", + "title": "Ai动画生成", + "icon": "APPICON_kurSLIyS5U.png", + "desc": "在几分钟内创建 AI 动画短片您的一体化 AI", + "source": "www.goenhance.ai", + "status": 1, + "sort": 0, + "interact": "{\"like\": []}", + "category": "Ai网站", + "tag": "[\"Ai网站\"]", + "placard": "[{\"url\": \"c871bfc29f512b85238abbd18.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd18.png\"}, {\"url\": \"c871bfc29f512b85238abbd19.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd19.png\"}, {\"url\": \"c871bfc29f512b85238abbd1a.png\", \"type\": \"preview\", \"title\": \"c871bfc29f512b85238abbd1a.png\"}]", + "top": 0, + "createdAt": "9/2/2025 10:59:10.759+08", + "updatedAt": "28/3/2025 21:37:57.645+08" + }, + { + "id": 94, + "app_id": "app_2lyo2jld8d", + "user_id": "uid_8a6gs7psll", + "username": "5236", + "room_id": null, + "type": "web", + "url": "https://game.ur1.fun/adarkroom/", + "title": "小黑屋游戏汉化版", + "icon": "", + "desc": "小黑屋游戏汉化版", + "source": "game.ur1.fun", + "status": 2, + "sort": 0, + "interact": "{\"see\": [], \"like\": [{\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:39.023Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:40.489Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:40.981Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:41.281Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:41.507Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.108Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.123Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.133Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.150Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.164Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.382Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.655Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:43.987Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:44.461Z\"}, {\"ip\": \"\", \"user_id\": \"uid_u7th1x10o9\", \"creatdAt\": \"2025-02-11T08:03:44.705Z\"}], \"share\": [], \"comment\": 0}", + "category": "摸鱼游戏", + "tag": "[\"摸鱼游戏\", \"游戏\", \"儿童游戏\"]", + "placard": "[]", + "top": 0, + "createdAt": "10/2/2025 09:20:14.035+08", + "updatedAt": "28/3/2025 21:45:55.237+08" + } +] \ No newline at end of file diff --git a/app_tags/index.js b/app_tags/index.js new file mode 100644 index 0000000..2e456d0 --- /dev/null +++ b/app_tags/index.js @@ -0,0 +1,35 @@ +const fs = require('fs'); +const path = require('path'); + +const appCategories = [ + "摸鱼神器","摸鱼游戏","资源站","Ai网站","社区论坛","个人博客", + "iOS", "Android", "HarmonyOS", "web", "桌面端", "Mac", "Windows", "Linux", "小程序", "智能电视", "智能手表", "车载系统", "AR/VR", + "社交网络", "即时通讯", "视频直播", "短视频", "音乐播放", "音频娱乐", "游戏", "摄影摄像", "图片编辑", "视频编辑", + "外卖点餐", "出行打车", "酒店预订", "旅游攻略", "地图导航", "生活缴费", "二手交易", "家政服务", "宠物服务", "医疗服务", + "在线教育", "语言学习", "笔记工具", "思维导图", "办公软件", "项目管理", "团队协作", "效率工具", "文档编辑", "电子阅读", + "移动支付", "网上银行", "股票基金", "保险服务", "记账理财", "信用卡管理", + "系统工具", "安全防护", "网络加速", "文件管理", "压缩解压", "翻译工具", "天气预报", "计算器", "时钟日历", "健康运动", + "早教启蒙", "儿童游戏", "动画漫画", "学习工具", "考试备考", "校园生活", "职场社交", "健康养生", "休闲娱乐", "生活服务", + "中文", "英文", "中国大陆", "港澳台", "海外", "免费", "付费", "内购", "高频更新", "中频更新", "低频更新", "独立开发者", "开源项目", + "生产力", "开发者工具", "技术", "时尚", "金融", "旅行", "招聘", "搞笑", "开源", "人工智能", "统计分析", "网页应用", "Apple", "健康与健身", "表情符号", "增强现实", "家庭", "新闻", "社交媒体工具", "营销", "设计工具", "用户体验", "视频流", "硬件", "Android安卓", "iPhone", "区块链", "艺术", "摄影", "闹钟", "日历和日程安排", "品牌", "SaaS", "电子商务", "冒险游戏", "独立游戏", "益智游戏", "免费游戏", "Apple Watch", "GitHub", "机器人", "消息", "写作工具", "电子表格", "教育", "Firefox 扩展", "电影", "电视", "iPad", "虚拟助手", "无人机", "Chrome 扩展", "VR", "电子邮件", "法律", "复古游戏", "壁纸", "图书", "任务管理", "冥想", "广告", "草图", "棋盘游戏", "物联网", "电报", "隐私", "谷歌", "活动", "文字编辑", "篮球", "时间跟踪", "地图", "天气应用", "体育", "CSM 工具", "SEO 工具", "策略游戏", "冲浪", "电子邮件简报", "烹饪", "历史书籍", "动作类游戏", "艺术书籍", "图标", "匿名", "搞笑游戏", "战斗游戏", "原型", "漫画与图画小说", "纸牌游戏", "户外", "广告拦截", "汽车", "3D 打印", "无线上网", "网游", "Safari 扩展", "模拟游戏", "移动和存储", "首饰", "平台游戏", "制作游戏", "文字游戏", "RPG 游戏", "足球", "名人", "小说", "恐怖书籍", "桌面游戏", "幻想游戏", "网球", "体育游戏", "恐怖游戏", "拳击", "科幻游戏", "惊悚书籍", "星球大战", "犯罪书籍", "驾驶游戏", "等距游戏", "历史游戏", "FPS 游戏", "流行书籍", "PS VR", "模拟器", "社交", "效率", "商务", "工具", "购物", "摄影与录像", "生活", "参考", "财务", "软件开发工具", "图片", "远程工作工具", "音频和语音", "多元化", "参考资料", "Web3", "API", "Chrome 扩展程序", "浏览器扩展", "社区", "搜索", "时事通讯", "数据科学", "会议工具", "日历", "语言", "数据库", "社交媒体市场营销", "个人财务", "声音", "在线学习", "职业", "视频", "娱乐", "古典音乐", "设计", "健康", "用户体验设计", "菜单栏应用", "3D建模", "儿童与育儿", "数字艺术", "图形与设计", "设计资源", "数据", "生活方式", "插图", "影像艺术", "照片编辑", "数据与分析", "会计", "网页设计", "营养", "咨询", "聊天室", "电脑", "天气", "安全", "动画片", "手机", "去中心化APP", "收音机", "酒店", "喜剧", "线框图", "运营", "商业书籍", "设计模板", "家具", "科学", "赛车", "自然", "摩托车", "信用卡", "农业", "婴儿", "平面设计", "电子音乐", "DIY", "绘画", "室内设计", "二次元", "白噪音", "小米" + ]; + + const appTags = [] + + + for (let i = 0; i < appCategories.length; i++) { + const tag = { + tag_name: appCategories[i], + tag_color: "", + tag_icon: "", + app_num: 0, + status: 1, + other:[], + createdAt:new Date().toISOString().replace('T','').replace('Z', ''), + updatedAt:new Date().toISOString().replace('T','').replace('Z', '') + } + appTags.push(tag) + } + + const appTagsJson = JSON.stringify(appTags, null, 2); + fs.writeFileSync(path.join(__dirname, 'app_tags.json'), appTagsJson); \ No newline at end of file diff --git a/frontend.zip b/frontend.zip new file mode 100644 index 0000000..dbe3a34 Binary files /dev/null and b/frontend.zip differ diff --git a/package.json b/package.json index 96a0719..28c3686 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "marked": "^15.0.6", "mint-filter": "^4.0.3", "nanoid": "3", + "node-cache": "^5.1.2", "node-cron": "^3.0.3", "npm": "^10.9.2", "pg": "^8.13.1", @@ -57,6 +58,7 @@ "playwright": "^1.49.1", "rollup-plugin-visualizer": "^5.14.0", "sequelize": "^6.37.5", + "sharp": "^0.33.5", "socket.io": "^4.8.1", "socket.io-client": "^4.8.1", "systeminformation": "^5.25.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 180fb40..e6d05e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,15 +104,12 @@ importers: mint-filter: specifier: ^4.0.3 version: 4.0.3 - moment: - specifier: ^2.30.1 - version: 2.30.1 - moment-timezone: - specifier: ^0.5.47 - version: 0.5.47 nanoid: specifier: '3' version: 3.3.8 + node-cache: + specifier: ^5.1.2 + version: 5.1.2 node-cron: specifier: ^3.0.3 version: 3.0.3 @@ -134,6 +131,9 @@ importers: sequelize: specifier: ^6.37.5 version: 6.37.5(pg@8.13.1) + sharp: + specifier: ^0.33.5 + version: 0.33.5 socket.io: specifier: ^4.8.1 version: 4.8.1 @@ -249,6 +249,9 @@ packages: peerDependencies: vue: ^3.2.0 + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} @@ -426,6 +429,123 @@ packages: '@imengyu/vue3-context-menu@1.4.4': resolution: {integrity: sha512-Zjh1BbrvcNbZvsWr9IJl9KQUomf50EeP2GT+mWk63sqatDZxG7ZFX1eltrwRyfSBr+SuFpMvdYv/yRxpBsyw6w==} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -851,6 +971,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + co-body@6.2.0: resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} engines: {node: '>=8.0.0'} @@ -881,6 +1005,10 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + colorspace@1.1.4: resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} @@ -993,6 +1121,10 @@ packages: detect-europe-js@0.1.2: resolution: {integrity: sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow==} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} @@ -1524,6 +1656,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + node-cache@5.1.2: + resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} + engines: {node: '>= 8.0.0'} + node-cron@3.0.3: resolution: {integrity: sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==} engines: {node: '>=6.0.0'} @@ -1897,6 +2033,10 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shell-quote@1.8.2: resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} engines: {node: '>= 0.4'} @@ -2363,6 +2503,11 @@ snapshots: dependencies: vue: 3.5.13 + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.24.2': optional: true @@ -2463,6 +2608,81 @@ snapshots: '@imengyu/vue3-context-menu@1.4.4': {} + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -2903,6 +3123,8 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone@2.1.2: {} + co-body@6.2.0: dependencies: '@hapi/bourne': 3.0.0 @@ -2937,6 +3159,11 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + colorspace@1.1.4: dependencies: color: 3.2.1 @@ -3024,6 +3251,8 @@ snapshots: detect-europe-js@0.1.2: {} + detect-libc@2.0.3: {} + dezalgo@1.0.4: dependencies: asap: 2.0.6 @@ -3644,6 +3873,10 @@ snapshots: negotiator@0.6.3: {} + node-cache@5.1.2: + dependencies: + clone: 2.1.2 + node-cron@3.0.3: dependencies: uuid: 8.3.2 @@ -3926,6 +4159,32 @@ snapshots: setprototypeof@1.2.0: {} + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + shell-quote@1.8.2: {} side-channel-list@1.0.0: diff --git a/server/app.js b/server/app.js index 8e847f5..a78203b 100644 --- a/server/app.js +++ b/server/app.js @@ -29,7 +29,7 @@ const { initSocket } = require('./routes/socket'); const robotRouter = require('./routes/robot'); const mount = require('koa-mount'); require('dotenv').config(); // 引入dotenv来加载.env文件中的环境变量 -const secret = '@5.0.0node_mdex.js:109:16'; +const secret = '@5.0.0node_modules@koacorsindex.js:109:16'; const app = new Koa(); @@ -122,6 +122,12 @@ app.use(async (ctx, next) => { } + // 来源非mychat.zhuayuya.com的请求直接跳过 + if (ctx.headers.referer && !ctx.headers.referer.includes('mychat.zhuayuya.com') && !ctx.headers.referer.includes('localhost')) { + await next(); + return; + } + // 判断是否为post if (ctx.method === 'POST') { let token = ctx.request.headers.authorization; @@ -139,7 +145,7 @@ app.use(async (ctx, next) => { username: decoded.username }; }else{ - return ctx.status = 401, ctx.body = { message: '请登录' }; + return ctx.status = 401, ctx.body = { message: '请登录', code: 401 }; } } catch (err) { @@ -211,13 +217,14 @@ onerror(app, { // 处理 ECONNRESET 错误 if (err.code === 'ECONNRESET') { ctx.status = 500; - ctx.body = 'Connection reset by peer'; + ctx.body = { message: 'Connection reset by peer', code: 500 }; } else { // 处理其他未知错误 ctx.status = err.status || 500; ctx.body = { - message: err.message || 'Internal Server Error', - stack: process.env.NODE_ENV === 'development' ? err.stack : undefined, // 开发环境显示堆栈信息 + code: err.status || 500, + message: err.message || 'Internal Server Error', + stack: process.env.NODE_ENV === 'development' ? err.stack : undefined, // 开发环境显示堆栈信息 }; } }, @@ -274,7 +281,9 @@ async function startServer() { if(robotData[key]){ if(robotData[key].robot_id != robot_id){ // 机器人id错误 + ctx.status = 400; ctx.body = { + code: 400, message: '机器人id错误', } return; @@ -282,7 +291,9 @@ async function startServer() { // 状态判断 if(robotData[key].status != 1){ + ctx.status = 400; ctx.body = { + code: 400, message: '机器人未启用状态', } return; @@ -301,12 +312,14 @@ async function startServer() { }else{ // 不包含则返回错误信息 ctx.body = { + code: 400, message: '机器人未加入该房间或不支持此消息类型', } return; } }else{ ctx.body = { + code: 400, message: 'key错误', } return; @@ -328,6 +341,7 @@ async function startServer() { if(item.user_id == ctx.state.user.user_id||item.ip == realIp){ // 封禁用户 ctx.body = { + code: 400, message: '你已被封禁,请联系管理员', } return; diff --git a/server/models/models.js b/server/models/models.js index cc6aef9..5e87140 100644 --- a/server/models/models.js +++ b/server/models/models.js @@ -742,6 +742,44 @@ const Badge = sequelize.define('Badge', { }); +// 应用标签表 +const AppTag = sequelize.define('AppTag', { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true + }, + tag_name: { // 标签名称 + type: DataTypes.STRING(255), + allowNull: false + }, + tag_color: { // 标签颜色 + type: DataTypes.STRING(255), + allowNull: false + }, + app_num: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: 0 + }, + tag_icon: { // 标签图标 + type: DataTypes.STRING(255), + allowNull: false + }, + status: { // 状态 1-正常 2-禁用 3-删除 + type: DataTypes.INTEGER, + allowNull: false + }, + other: { // 冗余字段 + type: DataTypes.JSONB, + allowNull: true, + }, +}, { + schema: process.env.MODE_NAME, + tableName: 'app_tags' +}); + + const initializeDatabase = async () => { try { console.log('正在同步数据库...'); @@ -754,6 +792,7 @@ const initializeDatabase = async () => { }; + module.exports = { User, Room, @@ -768,5 +807,6 @@ module.exports = { DataStatistics, SignIn, Badge, + AppTag, initializeDatabase }; diff --git a/server/public/data/dau.json b/server/public/data/dau.json index 17b6c17..90f5541 100644 --- a/server/public/data/dau.json +++ b/server/public/data/dau.json @@ -1,5 +1 @@ -{ - "2025-01-31":{ - "dau":10 - } -} \ No newline at end of file +{"2025-01-31":{"dau":10},"2025-03-01":{"active_count":0}} \ No newline at end of file diff --git a/server/public/data/payment.json b/server/public/data/payment.json index ff98167..85c47d6 100644 --- a/server/public/data/payment.json +++ b/server/public/data/payment.json @@ -1,4 +1,4 @@ { - "mch_id": "*******", - "developer_appid": "*******" + "mch_id": "xxxxxxxx", + "developer_appid": "xxxxxxxx" } \ No newline at end of file diff --git a/server/public/data/peakOnline.json b/server/public/data/peakOnline.json index 594eab2..943ff1c 100644 --- a/server/public/data/peakOnline.json +++ b/server/public/data/peakOnline.json @@ -1 +1 @@ -{"2025-02-01":{"online":6},"2025-02-02":{"online":6},"2025-02-03":{"online":5},"2025-02-04":{"online":7},"2025-02-05":{"online":3},"2025-02-06":{"online":4},"2025-02-07":{"online":4},"2025-02-08":{"online":3},"2025-02-09":{"online":2},"2025-02-10":{"online":2},"2025-02-11":{"online":3},"2025-02-12":{"online":2},"2025-02-13":{"online":2},"2025-02-14":{"online":2},"2025-02-22":{"online":2},"2025-02-23":{"online":2},"2025-02-24":{"online":2}} \ No newline at end of file +{"2025-02-01":{"online":6},"2025-02-02":{"online":6},"2025-02-03":{"online":5},"2025-02-04":{"online":7},"2025-02-05":{"online":3},"2025-02-06":{"online":4},"2025-02-07":{"online":4},"2025-02-08":{"online":3},"2025-02-09":{"online":2},"2025-02-10":{"online":2},"2025-02-11":{"online":3},"2025-02-12":{"online":2},"2025-02-13":{"online":2},"2025-02-14":{"online":2},"2025-02-22":{"online":2},"2025-02-23":{"online":2},"2025-02-24":{"online":2},"2025-02-25":{"online":2},"2025-02-26":{"online":1},"2025-02-28":{"online":2},"2025-03-02":{"online":2},"2025-03-03":{"online":3},"2025-03-04":{"online":3},"2025-03-28":{"online":4},"2025-04-05":{"online":4},"2025-04-08":{"online":4},"2025-04-09":{"online":4},"2025-04-10":{"online":4}} \ No newline at end of file diff --git a/server/public/data/robot.json b/server/public/data/robot.json index 90709f0..05c7b01 100644 --- a/server/public/data/robot.json +++ b/server/public/data/robot.json @@ -3,7 +3,7 @@ "user_id":"5646825156", "username":"PonyRobot", - "robot_id":"*******", + "robot_id":"123456789", "nickname":"PonyRobot", "avatar":"https://cdn.jsdelivr.net/gh/PonyCui/PonyCui.github.io/img/avatar/robot.png", "desc":"I'm a robot, I can help you with your daily work.", @@ -17,7 +17,7 @@ "user_id":"pony", "username":"pony", - "robot_id":"*******", + "robot_id":"19970720", "nickname":"PonyRobot", "avatar":"https://cdn.jsdelivr.net/gh/PonyCui/PonyCui.github.io/img/avatar/robot.png", "desc":"I'm a robot, I can help you with your daily work.", @@ -31,7 +31,7 @@ "user_id":"tianrandai", "username":"tianrandai", - "robot_id":"*******", + "robot_id":"tianrandai20250209", "nickname":"天然呆", "avatar":"https://cdn.jsdelivr.net/gh/PonyCui/PonyCui.github.io/img/avatar/robot.png", "desc":"I'm a robot, I can help you with your daily work.", diff --git a/server/public/data/users.json b/server/public/data/users.json index 5b5a6a6..4b03e79 100644 --- a/server/public/data/users.json +++ b/server/public/data/users.json @@ -1 +1 @@ -{"uid_0i4v2gmsx7":"1SndIHBDraeGuyp4AAAB"} \ No newline at end of file +{"uid_sddtwy659e":"N0coo6_1pazoWw6AAAAJ","uid_hf99ke15ac":"OmpNYRevKxjPNvhNAAAD"} \ No newline at end of file diff --git a/server/public/jwt.json b/server/public/jwt.json index d8d6b93..a553996 100644 --- a/server/public/jwt.json +++ b/server/public/jwt.json @@ -1,6 +1 @@ -{ - "uid_0i4v2gmsx7": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidWlkXzBpNHYyZ21zeDciLCJ1c2VybmFtZSI6IjQ4ODAiLCJ0b2tlbiI6ImY3YjVkYjVkNmMxNThhZDZkZmM3YTM0NjJiZTY0NDgzIiwiaWF0IjoxNzQwMzE2ODkwLCJleHAiOjE3NDA5MjE2OTB9.iCSjjITfi0Wd0LYUOvqcJE-E-JEn4g1kbcI--zr3cBY", - "username": "4880" - } -} \ No newline at end of file +{"uid_0i4v2gmsx7":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidWlkXzBpNHYyZ21zeDciLCJ1c2VybmFtZSI6IjQ4ODAiLCJ0b2tlbiI6Ik56UTJNMk5rWVRCak0yVmpaVFJtTmpObE1UUTVNalkwWXpNM1ltWmpaV1F1TkRnNE1BPT0iLCJpYXQiOjE3NDQxMDc5ODMsImV4cCI6MTc0NDcxMjc4M30.4xNKkLKkh55ZzKBg8-twxPj2id-be_--EsRUMidDT0A","username":"4880"},"uid_sddtwy659e":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidWlkX3NkZHR3eTY1OWUiLCJ1c2VybmFtZSI6IjEyMTYyMDQiLCJ0b2tlbiI6IjkwZWIzMTYzNjhmOTMxYTBiZTg5NjI5MmQyZGQwNDNjIiwiaWF0IjoxNzQxMDEzODY0LCJleHAiOjE3NDE2MTg2NjR9.wXWbp9IRwH5ElTsbQhWJHdtgsASqYPz7talUSEwAsxs","username":"1216204"},"uid_hf99ke15ac":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidWlkX2hmOTlrZTE1YWMiLCJ1c2VybmFtZSI6IjQ4ODAiLCJ0b2tlbiI6Ik1UUmtNRFV4T0dFMk5qazJNR1EwWm1SaVpXWTBOMkk0T0RCaFpUVTVZMkV1TkRnNE1BPT0iLCJpYXQiOjE3NDMxNDkxODYsImV4cCI6MTc0Mzc1Mzk4Nn0.Gz6zKUCSqdD7o2SugnW3YlwvwSAz93jF1deh1AwrWEk","username":4880}} \ No newline at end of file diff --git a/server/routes/admin.js b/server/routes/admin.js index 2e17d67..379dcd7 100644 --- a/server/routes/admin.js +++ b/server/routes/admin.js @@ -1,4 +1,4 @@ -const { User, Room, chatOrder,chatReport, Feedback, ChatRecord, AdminUser, chatAppComment, chatEmoticon, chatApp } = require('../models/models'); +const { User, Room, AppTag, chatOrder,chatReport, Feedback, ChatRecord, AdminUser, chatAppComment, chatEmoticon, chatApp } = require('../models/models'); const { Op, Sequelize, where } = require('sequelize'); const Router = require('koa-router'); const Joi = require('joi'); @@ -14,7 +14,7 @@ const utc = require("dayjs/plugin/utc"); const timezone = require("dayjs/plugin/timezone"); // dependent on utc plugin const router = new Router(); -const secret = '@5.0.0node_mdex.js:109:16'; +const secret = '@5.0.0node_modules@koacorsindex.js:109:16'; const nanoidNode = '1234567890abcdefghijklmnopqrstuvwxyz'; // 登录 @@ -37,6 +37,7 @@ router.post('/login', async (ctx) => { where: { username, password, + status: 1, }, }); @@ -96,6 +97,129 @@ router.post('/register', async (ctx) => { } }); + +// 标签管理请求所有标签 +router.get('/appTags', async (ctx) => { + try { + // 构建查询条件 + const where = {}; + if (ctx.query.tag_name) { + where.tag_name = { [Op.like]: `%${ctx.query.tag_name}%` }; + } + if (ctx.query.status) { + where.status = { [Op.eq]: ctx.query.status }; + } + + const appTags = await AppTag.findAll( + { + where, + order: [['app_num', 'DESC']], // 按 app_num 字段升序排列 + } + ); + ctx.body = { data: appTags, message: '获取成功', code: 200 }; + } catch (err) { + console.log(err); + ctx.status = 500; + ctx.body = { error: err, message: '服务器错误', code: 500 }; + } +}); + +// 编辑标签 +router.post('/editAppTag', koaJwt({ secret }), async (ctx) => { + const { id, status } = ctx.request.body; + const schema = Joi.object({ + id: Joi.number().required(), + status: Joi.number().required(), + }); + + const { error } = schema.validate({ id, status }); + if (error) { + ctx.status = 400; + ctx.body = { message: error.details[0].message }; + return; + } + + try { + const appTag = await AppTag.findOne({ + where: { + id, + }, + }); + if (!appTag) { + ctx.status = 400; + ctx.body = { message: '应用标签不存在' }; + return; + } + await appTag.update({ + status, + }); + ctx.body = { message: '编辑成功', code: 200 }; + } catch (err) { + console.log(err); + ctx.status = 500; + ctx.body = { error: err, message: '服务器错误' }; + } +}); + +// 添加标签 +router.post('/addAppTag', koaJwt({ secret }), async (ctx) => { + const { tag_name } = ctx.request.body; + const schema = Joi.object({ + tag_name: Joi.string().required(), + }); + + const { error } = schema.validate({ tag_name }); + if (error) { + ctx.status = 400; + ctx.body = { message: error.details[0].message, code: 400 }; + return; + } + + try { + const appTag = await AppTag.findOne({ + where: { + tag_name, + }, + }); + if (appTag) { + ctx.status = 400; + ctx.body = { message: '应用标签已存在', code: 400 }; + return; + } + await AppTag.create({ + tag_name, + app_num: 0, + status: 1, + tag_color:'', + tag_icon:'', + other: [] + }); + ctx.body = { message: '添加成功', code: 200 }; + } catch (err) { + console.log(err); + ctx.status = 500; + ctx.body = { error: err, message: '服务器错误', code: 500 }; + } +}); + +// 获取应用标签 +router.get('/getChatAppTag', async (ctx) => { + try { + const appTagList = await AppTag.findAll({ + where: { status: 1 }, + order: [['app_num', 'DESC']], // 按 app_num 字段升序排列 + }); + ctx.body = { + code: 200, + message: '获取应用标签成功', + data: appTagList, + }; + } catch (err) { + ctx.status = 500; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; + } +}); + // 获取用户列表 router.get('/users', koaJwt({ secret }), async (ctx) => { try { @@ -108,6 +232,78 @@ router.get('/users', koaJwt({ secret }), async (ctx) => { } }); +// 标签应用数量+1 +router.post('/addAppTagNum', koaJwt({ secret }), async (ctx) => { + const { tag } = ctx.request.body; + const schema = Joi.object({ + tag: Joi.string().required(), + }); + + const { error } = schema.validate({ tag }); + if (error) { + ctx.status = 400; + ctx.body = { message: error.details[0].message }; + return; + } + + try { + const appTag = await AppTag.findOne({ + where: { + tag_name: tag, + }, + }); + if (!appTag) { + ctx.status = 400; + ctx.body = { message: '应用标签不存在' }; + return; + } + await appTag.update({ + app_num: appTag.app_num + 1, + }); + ctx.body = { message: '标签应用数量+1成功' }; + } catch (err) { + console.log(err); + ctx.status = 500; + ctx.body = { error: err, message: '服务器错误' }; + } +}); + +// 标签应用数量-1 +router.post('/reduceAppTagNum', koaJwt({ secret }), async (ctx) => { + const { tag } = ctx.request.body; + const schema = Joi.object({ + tag: Joi.string().required(), + }); + + const { error } = schema.validate({ tag }); + if (error) { + ctx.status = 400; + ctx.body = { message: error.details[0].message }; + return; + } + + try { + const appTag = await AppTag.findOne({ + where: { + tag_name: tag, + }, + }); + if (!appTag) { + ctx.status = 400; + ctx.body = { message: '应用标签不存在' }; + return; + } + await appTag.update({ + app_num: appTag.app_num - 1, + }); + ctx.body = { message: '标签应用数量-1成功' }; + } catch (err) { + console.log(err); + ctx.status = 500; + ctx.body = { error: err, message: '服务器错误' }; + } +}); + // 修改状态 router.post('/changeStatus', koaJwt({ secret }), async (ctx) => { const { username, status } = ctx.request.body; @@ -347,6 +543,50 @@ router.post('/rooms', koaJwt({ secret }), async (ctx) => { }); +// 获取聊天记录 +router.post('/getRecords', koaJwt({ secret }), async (ctx) => { + const { room_id, limit, offset } = ctx.request.body; + const schema = Joi.object({ + room_id: Joi.string().required(), + limit: Joi.number().required(), + offset: Joi.number().required(), + }); + + const { error } = schema.validate({ room_id, limit, offset }); + if (error) { + ctx.status = 400; + ctx.body = { message: error.details[0].message, code: 400 }; + return; + } + + try { + const records = await ChatRecord.findAll({ + where: { + room_id, + }, + limit, + offset, + order: [['createdAt', 'DESC']], + }); + + const totalCount = await ChatRecord.count({ + where: { + room_id, + }, + }); + + ctx.body = { data: {records, totalCount}, message: '获取成功', code: 200 }; + + } catch (err) { + console.log(err); + ctx.status = 500; + ctx.body = { error: err, message: '服务器错误', code: 500 }; + } +}); + + + + // 修改房间信息 router.post('/editRoom', koaJwt({ secret }), async (ctx) => { const { room_id, name, desc, status } = ctx.request.body; @@ -499,7 +739,7 @@ router.post('/users', koaJwt({ secret }), async (ctx) => { searchConditions.phone = { [Op.like]: `%${phone}%` }; } if (createdAt&&createdAt.length > 0) { - console.log(createdAt); + // console.log(createdAt); searchConditions.createdAt = { [Op.between]: [new Date(createdAt[0]), new Date(createdAt[1])] }; } diff --git a/server/routes/chat.js b/server/routes/chat.js index 7cfbfac..1f8d4e6 100644 --- a/server/routes/chat.js +++ b/server/routes/chat.js @@ -2,6 +2,7 @@ const { User, Room, chatApp, chatReport, ChatRecord, chatEmoticon } = require('. const { Op, Sequelize } = require('sequelize'); const Router = require('koa-router'); const Joi = require('joi'); +const sharp = require('sharp'); const { customAlphabet } = require('nanoid'); const fs = require('fs'); const path = require('path'); @@ -11,8 +12,12 @@ const { wordFilter } = require('../filter/AhoCorasick'); const { getIo } = require('./socket'); const router = new Router(); const koaBody = require('koa-body').default; -const secret = '@5.0.0node_mdex.js:109:16'; +const secret = '@5.0.0node_modules@koacorsindex.js:109:16'; const nanoidNode = '1234567890abcdefghijklmnopqrstuvwxyz'; +const NodeCache = require('node-cache'); +// 创建缓存实例,默认缓存时间为1小时 +const chatCache = new NodeCache({ stdTTL: 3600, checkperiod: 600 }); + // 创建房间 router.post('/createRoom', async (ctx) => { @@ -26,7 +31,7 @@ router.post('/createRoom', async (ctx) => { const { error } = schema.validate({ name, desc, avatar }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -39,7 +44,7 @@ router.post('/createRoom', async (ctx) => { }); if (room) { ctx.status = 400; - ctx.body = { message: '房间已存在' }; + ctx.body = { message: '房间已存在', code: 400 }; return; } @@ -76,11 +81,11 @@ router.post('/createRoom', async (ctx) => { { where: { id:userRooms.id } } // 条件 ); - ctx.body = { message: '创建房间成功', data: {newRoom, rooms: userRooms.rooms} }; + ctx.body = { message: '创建房间成功', data: {newRoom, rooms: userRooms.rooms}, code: 200 }; } catch (error) { ctx.status = 500; console.log(error); - ctx.body = { message: error }; + ctx.body = { message: error, code: 500 }; } }) @@ -100,14 +105,14 @@ router.post('/sendMessage', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id, nickname, type, msg, source }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } // 判断字数限制 if(msg.length > 1000){ ctx.status = 400; - ctx.body = { message: '字数超过限制' }; + ctx.body = { message: '字数超过限制', code: 400 }; return; } @@ -117,12 +122,12 @@ router.post('/sendMessage', koaJwt({ secret }), async (ctx) => { try{ if(tokenData[user_id].token !== ctx.request.headers.authorization.split(' ')[1]){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } } catch(err){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } @@ -154,14 +159,17 @@ router.post('/sendMessage', koaJwt({ secret }), async (ctx) => { const io = getIo(); io.to(room_id).emit('messages', msg_data) - ctx.body = { message: '发送消息成功', data: msg_data }; + ctx.body = { message: '发送消息成功', data: msg_data, code: 200 }; // 创建聊天记录 await ChatRecord.create(msg_data); + // 将新消息添加到缓存 + addMessageToCache(room_id, msg_data); + } catch (error) { ctx.status = 500; - ctx.body = { error }; + ctx.body = { message:error, code: 500 }; } }) @@ -175,7 +183,7 @@ router.post('/sendFile', koaJwt({ secret }), koaBody({ // 注册文件上传 uploadDir: path.join(__dirname, '../public/chatFiles'), // 上传目录 }, }), async (ctx) => { - console.log(ctx.request.body) + // console.log(ctx.request.body) const { room_id, nickname, source } = ctx.request.body; const { user_id, username } = ctx.state.user const schema = Joi.object({ @@ -188,7 +196,7 @@ router.post('/sendFile', koaJwt({ secret }), koaBody({ // 注册文件上传 const { error } = schema.validate({ room_id, user_id, nickname, username, source }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -198,12 +206,12 @@ router.post('/sendFile', koaJwt({ secret }), koaBody({ // 注册文件上传 try{ if(tokenData[user_id].token !== ctx.request.headers.authorization.split(' ')[1]){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } } catch(err){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } @@ -233,13 +241,16 @@ router.post('/sendFile', koaJwt({ secret }), koaBody({ // 注册文件上传 const io = getIo(); io.to(room_id).emit('messages', msg_data) - ctx.body = { message: '发送消息成功', data: msg_data }; + ctx.body = { message: '发送消息成功', data: msg_data, code: 200 }; // 创建聊天记录 await ChatRecord.create(msg_data); + + // 将新消息添加到缓存 + addMessageToCache(room_id, msg_data); } catch (error) { ctx.status = 500; - ctx.body = { message: error }; + ctx.body = { message: error, code: 500 }; } }) @@ -259,7 +270,7 @@ router.post('/sendEmoticon', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id, nickname, username, emoticon_id, source }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -269,12 +280,12 @@ router.post('/sendEmoticon', koaJwt({ secret }), async (ctx) => { try{ if(tokenData[user_id].token !== ctx.request.headers.authorization.split(' ')[1]){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } } catch(err){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } @@ -287,7 +298,7 @@ router.post('/sendEmoticon', koaJwt({ secret }), async (ctx) => { }); if (!emoticon) { ctx.status = 400; - ctx.body = { message: '表情不存在' }; + ctx.body = { message: '表情不存在', code: 400 }; return; } @@ -316,13 +327,16 @@ router.post('/sendEmoticon', koaJwt({ secret }), async (ctx) => { const io = getIo(); io.to(room_id).emit('messages', msg_data) - ctx.body = { message: '发送消息成功', data: msg_data }; + ctx.body = { message: '发送消息成功', data: msg_data, code: 200 }; // 创建聊天记录 await ChatRecord.create(msg_data); + + // 将新消息添加到缓存 + addMessageToCache(room_id, msg_data); } catch (error) { ctx.status = 500; - ctx.body = { message: error }; + ctx.body = { message: error, code: 500 }; } }) @@ -342,7 +356,7 @@ router.post('/sendAppMessage', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id, nickname, username, app_id, source }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -352,12 +366,12 @@ router.post('/sendAppMessage', koaJwt({ secret }), async (ctx) => { try{ if(tokenData[user_id].token !== ctx.request.headers.authorization.split(' ')[1]){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } } catch(err){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } @@ -370,7 +384,7 @@ router.post('/sendAppMessage', koaJwt({ secret }), async (ctx) => { }); if (!app) { ctx.status = 400; - ctx.body = { message: '应用不存在' }; + ctx.body = { message: '应用不存在', code: 400 }; return; } @@ -405,14 +419,16 @@ router.post('/sendAppMessage', koaJwt({ secret }), async (ctx) => { const io = getIo(); io.to(room_id).emit('messages', msg_data) - ctx.body = { message: '发送消息成功', data: msg_data }; + ctx.body = { message: '发送消息成功', data: msg_data, code: 200 }; // 创建聊天记录 await ChatRecord.create(msg_data); + // 将新消息添加到缓存 + addMessageToCache(room_id, msg_data); } catch (error) { ctx.status = 500; - ctx.body = {message: error }; + ctx.body = {message: error, code: 500 }; } }) @@ -438,7 +454,7 @@ router.post('/sendCustomImage', koaJwt({ secret }), koaBody({ // 注册文件 const { error } = schema.validate({ room_id, user_id, nickname, username, source }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -446,7 +462,7 @@ router.post('/sendCustomImage', koaJwt({ secret }), koaBody({ // 注册文件 let format = ctx.request.files.file.newFilename.split('.').pop(); if (format !== 'jpg' && format !== 'jpeg' && format !== 'webp' && format !=='svg' && format !== 'bmp' && format !== 'png' && format !== 'gif') { ctx.status = 400; - ctx.body = { message: '图片格式不支持' }; + ctx.body = { message: '图片格式不支持', code: 400 }; return; } @@ -456,15 +472,56 @@ router.post('/sendCustomImage', koaJwt({ secret }), koaBody({ // 注册文件 try{ if(tokenData[user_id].token !== ctx.request.headers.authorization.split(' ')[1]){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } } catch(err){ ctx.status = 401; - ctx.body = { message: 'token验证失败请重新登录' }; + ctx.body = { message: 'token验证失败请重新登录', code: 401 }; return; } + + const filePath = ctx.request.files.file.filepath; + const outputFilePath = path.join(__dirname, '../public/chatImages', ctx.request.files.file.newFilename); + if (format === 'gif') { + // 处理 gif 图片 + await sharp(filePath) + .toFile(outputFilePath); + } else { + // 压缩并转换为 webp 格式 + await sharp(filePath) + .webp({ quality: 70 }) + .toFile(outputFilePath.replace(/\.[^/.]+$/, ".webp")); + + // 生成预览图 + await sharp(filePath) + .resize({ width: 50 }) + .toFile(outputFilePath.replace(/\.[^/.]+$/, "_preview.webp")); + } + + // 获取图片的元数据 + const metadata = await sharp(filePath).metadata(); + + let resizeOptions = {}; + if (metadata.width > 380 || metadata.height > 400) { + // 计算缩放比例 + const widthRatio = 380 / metadata.width; + const heightRatio = 400 / metadata.height; + const scaleRatio = Math.min(widthRatio, heightRatio, 1); // 确保不会放大 + + resizeOptions = { + width: Math.round(metadata.width * scaleRatio), + height: Math.round(metadata.height * scaleRatio), + }; + } else { + // 不超过限制,保持原尺寸 + resizeOptions = { + width: metadata.width, + height: metadata.height, + }; + } + // 创建聊天记录 let msg_data = { msg_id: 'msg_' + customAlphabet(nanoidNode, 20)(), @@ -475,9 +532,11 @@ router.post('/sendCustomImage', koaJwt({ secret }), koaBody({ // 注册文件 type: 'image', json_msg: { file_name: ctx.request.files.file.originalFilename, - file_url: ctx.request.files.file.newFilename, + file_url: ctx.request.files.file.newFilename.split('.')[0], // 去掉格式 size: ctx.request.files.file.size, format: format, + width: resizeOptions.width, + height: resizeOptions.height, }, status: 1, source, @@ -490,14 +549,16 @@ router.post('/sendCustomImage', koaJwt({ secret }), koaBody({ // 注册文件 const io = getIo(); io.to(room_id).emit('messages', msg_data) - ctx.body = { message: '发送消息成功', data: msg_data }; + ctx.body = { message: '发送消息成功', data: msg_data, code: 200 }; // 创建聊天记录 await ChatRecord.create(msg_data); + // 将新消息添加到缓存 + addMessageToCache(room_id, msg_data); } catch (error) { ctx.status = 500; - ctx.body = {message: error }; + ctx.body = {message: error, code: 500 }; } }) @@ -510,7 +571,7 @@ router.post('/getBadgeData', koaJwt({ secret }), async (ctx) => { const badgeFile = path.join(__dirname, '../public/data/badge.json'); const badgeData = JSON.parse(fs.readFileSync(badgeFile, 'utf-8')); - ctx.body = { message: '获取徽章数据成功', data: badgeData }; + ctx.body = { message: '获取徽章数据成功', data: badgeData, code: 200 }; }) @@ -524,7 +585,7 @@ router.post('/getRoomList', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, rooms }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -556,11 +617,11 @@ router.post('/getRoomList', koaJwt({ secret }), async (ctx) => { ], }); - ctx.body = { message: '获取房间列表成功', data: getRooms}; + ctx.body = { message: '获取房间列表成功', data: getRooms, code: 200}; } catch (error) { ctx.status = 500; console.log(error); - ctx.body = { message: error }; + ctx.body = { message: error, code: 500 }; } }) @@ -577,34 +638,152 @@ router.post('/getChatRecords', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id, page, limit }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } // 查询聊天记录 try { - const getChatRecords = await ChatRecord.findAll({ - where: { - room_id, - status:1, - }, - limit: limit, - offset: (page - 1) * limit, - attributes: ['msg_id', 'room_id', 'username', 'nickname', 'interact', 'json_msg', 'ymsg','msg', 'type','status','source', 'createdAt'], - order: [ - ['id', 'DESC'], - ], - }); + // 先从缓存中获取聊天记录 + let getChatRecords = getChatRecordsFromCache(room_id, page, limit); + + // 如果缓存中没有数据,则从数据库中查询 + if (!getChatRecords) { + getChatRecords = await ChatRecord.findAll({ + where: { + room_id, + status: 1, + }, + limit: limit, + offset: (page - 1) * limit, + attributes: ['msg_id', 'room_id', 'username', 'nickname', 'interact', 'json_msg', 'ymsg','msg', 'type','status','source', 'createdAt'], + order: [ + ['id', 'DESC'], + ], + }); + + // 将查询结果存入缓存 + setChatRecordsToCache(room_id, page, limit, getChatRecords); + } - ctx.body = { message: '获取聊天记录成功', data: getChatRecords}; + ctx.body = { message: '获取聊天记录成功', data: getChatRecords, code: 200}; } catch (error) { ctx.status = 500; console.log(error); - ctx.body = { message: error }; + ctx.body = { message: error, code: 500 }; } }) +// 将聊天记录存入缓存 +const setChatRecordsToCache = (room_id, page, limit, records) => { + // 只缓存指定字段 + const filteredRecords = records.map(record => { + const item = record.toJSON ? record.toJSON() : record; + return { + msg_id: item.msg_id, + room_id: item.room_id, + username: item.username, + nickname: item.nickname, + interact: item.interact, + json_msg: item.json_msg, + ymsg: item.ymsg, + msg: item.msg, + type: item.type, + status: item.status, + source: item.source, + createdAt: item.createdAt // 保留创建时间用于排序 + }; + }); + + const cacheKey = `chat_${room_id}_${page}_${limit}`; + chatCache.set(cacheKey, filteredRecords); + + // 获取房间的消息计数 + let roomMsgCount = chatCache.get(`room_msg_count_${room_id}`) || 0; + + // 如果是第一页,更新房间消息计数 + if (page === 1) { + roomMsgCount = records.length; + } else { + roomMsgCount = Math.max(roomMsgCount, (page - 1) * limit + records.length); + } + + // 存储房间消息计数 + chatCache.set(`room_msg_count_${room_id}`, roomMsgCount); + + // 如果房间消息数超过1000条,清空该房间的所有缓存 + if (roomMsgCount > 1000) { + clearRoomCache(room_id); + } +}; + + +// 缓存聊天记录相关函数查询缓存中的聊天记录 +const getChatRecordsFromCache = (room_id, page, limit) => { + const cacheKey = `chat_${room_id}_${page}_${limit}`; + // console.log(cacheKey); + return chatCache.get(cacheKey); +}; + +// 添加新消息到缓存 +const addMessageToCache = (room_id, message) => { + // 获取第一页的缓存 + const cacheKey = `chat_${room_id}_1_100`; // 假设默认每页100条 + const cachedMessages = chatCache.get(cacheKey); + + if (cachedMessages) { + // 只保留指定字段 + const filteredMessage = { + msg_id: message.msg_id, + room_id: message.room_id, + username: message.username, + nickname: message.nickname, + interact: message.interact, + json_msg: message.json_msg, + ymsg: message.ymsg, + msg: message.msg, + type: message.type, + status: message.status, + source: message.source, + createdAt: message.createdAt || new Date() // 确保有创建时间 + }; + + // 将新消息添加到缓存的开头(因为是按时间倒序排列) + cachedMessages.unshift(filteredMessage); + // 如果缓存消息超过100条,保留前100条 + if (cachedMessages.length > 100) { + cachedMessages.length = 100; + } + chatCache.set(cacheKey, cachedMessages); + + // 更新房间消息计数 + let roomMsgCount = chatCache.get(`room_msg_count_${room_id}`) || 0; + chatCache.set(`room_msg_count_${room_id}`, roomMsgCount + 1); + + // 如果房间消息数超过1000条,清空该房间的所有缓存 + if (roomMsgCount + 1 > 1000) { + clearRoomCache(room_id); + } + } +}; + +// 清空房间的所有缓存 +const clearRoomCache = (room_id) => { + // 获取所有缓存的键 + const keys = chatCache.keys(); + + // 筛选出与该房间相关的键并删除 + keys.forEach(key => { + if (key.startsWith(`chat_${room_id}_`) || key === `room_msg_count_${room_id}`) { + chatCache.del(key); + } + }); + + // console.log(`已清空房间 ${room_id} 的缓存`); +}; + + // 上传群头像 let ALLOWED_IMAGE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp'];// 允许的图片格式 router.post('/uploadGroupAvatar', koaJwt({ secret }), koaBody({ @@ -618,7 +797,7 @@ router.post('/uploadGroupAvatar', koaJwt({ secret }), koaBody({ if (!file) { ctx.status = 400; - ctx.body = { message: '未上传文件' }; + ctx.body = { message: '未上传文件', code: 400 }; return; } @@ -630,11 +809,11 @@ router.post('/uploadGroupAvatar', koaJwt({ secret }), koaBody({ // 删除不符合格式的文件 fs.unlinkSync(path.join(__dirname, '../public/avatar/group') + '/' + file.newFilename); ctx.status = 400; - ctx.body = { message: '不支持的文件格式,仅支持 .jpg, .jpeg, .png, .gif, .webp, .bmp' }; + ctx.body = { message: '不支持的文件格式,仅支持 .jpg, .jpeg, .png, .gif, .webp, .bmp', code: 400 }; return; } - ctx.body = { message: '上传成功', data: file }; + ctx.body = { message: '上传成功', data: file, code: 200 }; }); @@ -648,7 +827,7 @@ router.post('/searchRoom', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, keyword }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -674,7 +853,7 @@ router.post('/searchRoom', koaJwt({ secret }), async (ctx) => { // 仅返回rooms字段 attributes: ['rooms','id'], }); - console.log(userRooms); + // console.log(userRooms); // 标记用户已加入的房间 for (let i = 0; i < getRooms.length; i++) { @@ -687,11 +866,11 @@ router.post('/searchRoom', koaJwt({ secret }), async (ctx) => { } } - ctx.body = { message: '搜索房间成功', data: getRooms}; + ctx.body = { message: '搜索房间成功', data: getRooms, code: 200}; } catch (error) { ctx.status = 500; console.log(error); - ctx.body = { message: error }; + ctx.body = { message: error, code: 500 }; } }) @@ -706,7 +885,7 @@ router.post('/joinRoom', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -715,7 +894,7 @@ router.post('/joinRoom', koaJwt({ secret }), async (ctx) => { const user = await User.findOne({ where: { user_id } }); if (!user) { ctx.status = 400; - ctx.body = { message: '用户不存在' }; + ctx.body = { message: '用户不存在', code: 400 }; return; } @@ -723,7 +902,7 @@ router.post('/joinRoom', koaJwt({ secret }), async (ctx) => { const isInRooms = user.rooms.some(r => r.room_id === room_id); if (isInRooms) { ctx.status = 400; - ctx.body = { message: '用户已经在房间中' }; + ctx.body = { message: '用户已经在房间中', code: 400 }; return; } @@ -734,16 +913,16 @@ router.post('/joinRoom', koaJwt({ secret }), async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } // 判断房间的users字段里有没有user_id const isInUsers = room.users.some(u => u === user_id); - console.log(isInUsers); + // console.log(isInUsers); if (isInUsers) { ctx.status = 400; - ctx.body = { message: 'rooms已加入房间' }; + ctx.body = { message: 'rooms已加入房间', code: 400 }; return; } @@ -764,11 +943,11 @@ router.post('/joinRoom', koaJwt({ secret }), async (ctx) => { users: [...room.users, user_id] }); - ctx.body = { rooms: user.rooms, message: '加入房间成功' }; + ctx.body = { rooms: user.rooms, message: '加入房间成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }); @@ -783,7 +962,7 @@ router.post('/quitRoom', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -792,7 +971,7 @@ router.post('/quitRoom', koaJwt({ secret }), async (ctx) => { const user = await User.findOne({ where: { user_id } }); if (!user) { ctx.status = 400; - ctx.body = { message: '用户不存在' }; + ctx.body = { message: '用户不存在', code: 400 }; return; } @@ -800,7 +979,7 @@ router.post('/quitRoom', koaJwt({ secret }), async (ctx) => { const isInRooms = user.rooms.some(r => r.room_id === room_id); if (!isInRooms) { ctx.status = 400; - ctx.body = { message: 'user不在房间中' }; + ctx.body = { message: 'user不在房间中', code: 400 }; return; } @@ -809,7 +988,7 @@ router.post('/quitRoom', koaJwt({ secret }), async (ctx) => { const room = await Room.findOne({ where: { room_id } }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } @@ -817,7 +996,7 @@ router.post('/quitRoom', koaJwt({ secret }), async (ctx) => { const isInUsers = room.users.some(u => u === user_id); if (!isInUsers) { ctx.status = 400; - ctx.body = { message: 'rooms不在房间中' }; + ctx.body = { message: 'rooms不在房间中', code: 400 }; return; } @@ -831,11 +1010,11 @@ router.post('/quitRoom', koaJwt({ secret }), async (ctx) => { users: room.users.filter(u => u !== user_id) }); - ctx.body = { rooms: user.rooms, message: '退出房间成功' }; + ctx.body = { rooms: user.rooms, message: '退出房间成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }); @@ -849,7 +1028,7 @@ router.post('/getRoomUsers', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -868,7 +1047,7 @@ router.post('/getRoomUsers', koaJwt({ secret }), async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } @@ -898,7 +1077,7 @@ router.post('/getRoomUsers', koaJwt({ secret }), async (ctx) => { // 查询用户总数 const userCount = await User.count(); - ctx.body = { data: { online: users, offline: userCount - online.length }, message: '获取房间用户成功' }; + ctx.body = { data: { online: users, offline: userCount - online.length }, message: '获取房间用户成功', code: 200 }; return; } @@ -929,11 +1108,11 @@ router.post('/getRoomUsers', koaJwt({ secret }), async (ctx) => { delete user.dataValues.user_id; } - ctx.body = { data: { online, offline }, message: '获取房间用户成功' }; + ctx.body = { data: { online, offline }, message: '获取房间用户成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }); @@ -947,7 +1126,7 @@ router.get('/easyGetRoomUsers', async (ctx) => { const { error } = schema.validate({ room_id}); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -956,11 +1135,11 @@ router.get('/easyGetRoomUsers', async (ctx) => { const usersOnlineFile = path.join(__dirname, '../public/data/users.json'); const onlineUsers = JSON.parse(fs.readFileSync(usersOnlineFile, 'utf-8')); - ctx.body = { data: { onlineUsers: Object.keys(onlineUsers).length }, message: '获取房间用户成功' }; + ctx.body = { data: { onlineUsers: Object.keys(onlineUsers).length }, message: '获取房间用户成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }); @@ -975,29 +1154,37 @@ router.get('/easyGetPublicRoomChatRecords', async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } - // 查询房间里的聊天记录 - const chatRecords = await ChatRecord.findAll({ - where: { - room_id: '666666', - status: 1, - }, - attributes: ['msg_id', 'room_id', 'username', 'nickname', 'interact', 'json_msg', 'ymsg','msg', 'type','status','source', 'createdAt'], - order: [ - ['createdAt', 'DESC'], - ], - limit: 100, - }); + // 先从缓存中获取聊天记录 + let chatRecords = getChatRecordsFromCache("666666", 1, 100); + + // 如果缓存中没有数据,则从数据库中查询 + if (!chatRecords) { + chatRecords = await ChatRecord.findAll({ + where: { + room_id: '666666', + status: 1, + }, + attributes: ['msg_id', 'room_id', 'username', 'nickname', 'interact', 'json_msg', 'ymsg','msg', 'type','status','source', 'createdAt'], + order: [ + ['createdAt', 'DESC'], + ], + limit: 100, + }); + + // 将查询结果存入缓存 + setChatRecordsToCache("666666", 1, 100, chatRecords); + } - ctx.body = { chatRecords, message: '获取房间聊天记录成功' }; - } catch (err) { - console.log(err); - ctx.status = 500; - ctx.body = { message: err }; - } + ctx.body = { chatRecords, message: '获取房间聊天记录成功', code: 200 }; + } catch (err) { + console.log(err); + ctx.status = 500; + ctx.body = { message: err, code: 500 }; + } }) // 无需jwt查询房间信息 @@ -1009,7 +1196,7 @@ router.get('/easyGetRoomInfo', async (ctx) => { const { error } = schema.validate({ room_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1022,7 +1209,7 @@ router.get('/easyGetRoomInfo', async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } @@ -1032,11 +1219,11 @@ router.get('/easyGetRoomInfo', async (ctx) => { desc: room.desc, avatar: room.avatar, users: room.users.length, - }, message: '获取房间信息成功' }; + }, message: '获取房间信息成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1051,7 +1238,7 @@ router.post('/getEmojiCategory', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1066,11 +1253,11 @@ router.post('/getEmojiCategory', koaJwt({ secret }), async (ctx) => { }); - ctx.body = { emoticons, message: '获取表情包分类成功' }; + ctx.body = { data:emoticons, message: '获取表情包分类成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1085,7 +1272,7 @@ router.post('/getEmoji', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, category_name }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1099,11 +1286,11 @@ router.post('/getEmoji', koaJwt({ secret }), async (ctx) => { ], }); - ctx.body = { emoticons, message: '获取表情包成功' }; + ctx.body = { data: emoticons, message: '获取表情包成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1120,11 +1307,11 @@ router.post('/getInteractEmoticons', koaJwt({ secret }), async (ctx) => { ], }); - ctx.body = { data: emoticons , message: '获取互动表情包成功' }; + ctx.body = { data: emoticons , message: '获取互动表情包成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1139,7 +1326,7 @@ router.post('/addAppToRoom', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, app_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1152,14 +1339,14 @@ router.post('/addAppToRoom', koaJwt({ secret }), async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } // 是否是群主 if (room.owner_id !== ctx.state.user.user_id) { ctx.status = 400; - ctx.body = { message: '不是群主' }; + ctx.body = { message: '不是群主', code: 400 }; return; } @@ -1167,7 +1354,7 @@ router.post('/addAppToRoom', koaJwt({ secret }), async (ctx) => { const hasApp = room.apps.some(a => a.app_id === app_id); if (hasApp) { ctx.status = 400; - ctx.body = { message: '该应用已添加到房间' }; + ctx.body = { message: '该应用已添加到房间', code: 400 }; return; } @@ -1182,11 +1369,11 @@ router.post('/addAppToRoom', koaJwt({ secret }), async (ctx) => { }] }); - ctx.body = { data: '添加应用到房间成功' }; + ctx.body = { data: '添加应用到房间成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1200,20 +1387,20 @@ router.post('/getRoomApps', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } try { // 查询房间 - const room = await Room.findOne({ + const room = await Room.findOne({ where: { room_id }, // 筛选字段 attributes: ['apps', 'room_id'], }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } @@ -1252,11 +1439,11 @@ router.post('/getRoomApps', koaJwt({ secret }), async (ctx) => { }); - ctx.body = { data: appsData, message: '获取房间内的应用成功' }; + ctx.body = { data: appsData, message: '获取房间内的应用成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1269,7 +1456,7 @@ router.post('/getRoomFiles', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1281,7 +1468,7 @@ router.post('/getRoomFiles', koaJwt({ secret }), async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } @@ -1297,11 +1484,11 @@ router.post('/getRoomFiles', koaJwt({ secret }), async (ctx) => { ], }) - ctx.body = { data: filesData, message: '获取房间内文件成功' }; + ctx.body = { data: filesData, message: '获取房间内文件成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1318,7 +1505,7 @@ router.post('/chatRecordInteract', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ msg_id, username, url, emoticon_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1355,11 +1542,11 @@ router.post('/chatRecordInteract', koaJwt({ secret }), async (ctx) => { } }); - ctx.body = { data: { msg_id, username, url, emoticon_id } }; + ctx.body = { data: { msg_id, username, url, emoticon_id }, message: '聊天记录互动成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1374,7 +1561,7 @@ router.post('/checkOwner', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1388,20 +1575,20 @@ router.post('/checkOwner', koaJwt({ secret }), async (ctx) => { ); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } // 判断是否是群主 if (room.owner_id === user_id) { - ctx.body = { data: true }; + ctx.body = { data: true, code: 200 }; } else { - ctx.body = { data: false }; + ctx.body = { data: false, code: 200 }; } } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1419,7 +1606,7 @@ router.post('/chatRecordReport', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ msg_id, reason, user_id, username, content }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1448,11 +1635,11 @@ router.post('/chatRecordReport', koaJwt({ secret }), async (ctx) => { } const returnData = await chatReport.create(chatReportData) - ctx.body = { message: '举报成功', data: returnData }; + ctx.body = { message: '举报成功', data: returnData, code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1466,7 +1653,7 @@ router.post('/getAnnouncementList', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1478,17 +1665,17 @@ router.post('/getAnnouncementList', koaJwt({ secret }), async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } // 过滤掉已删除的公告 const announcementList = room.announcement.filter(a => a.status !== 0); - ctx.body = { data: announcementList, message: '获取房间公告成功' }; + ctx.body = { data: announcementList, message: '获取房间公告成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1502,7 +1689,7 @@ router.post('/writeAnnouncement', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, content }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1514,14 +1701,14 @@ router.post('/writeAnnouncement', koaJwt({ secret }), async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } // 判断是否是群主 if (room.owner_id !== ctx.state.user.user_id) { ctx.status = 400; - ctx.body = { message: '不是群主' }; + ctx.body = { message: '不是群主', code: 400 }; return; } @@ -1541,11 +1728,11 @@ router.post('/writeAnnouncement', koaJwt({ secret }), async (ctx) => { }, }); - ctx.body = { data: room.announcement, message: '写入公告成功' }; + ctx.body = { data: room.announcement, message: '写入公告成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1560,7 +1747,7 @@ router.post('/deleteAnnouncement', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ announcement_id, room_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1574,13 +1761,13 @@ router.post('/deleteAnnouncement', koaJwt({ secret }), async (ctx) => { }); if (!announcement) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } // 判断是否是群主 if (announcement.owner_id !== ctx.state.user.user_id) { ctx.status = 400; - ctx.body = { message: '不是群主' }; + ctx.body = { message: '不是群主', code: 400 }; return; } @@ -1594,13 +1781,11 @@ router.post('/deleteAnnouncement', koaJwt({ secret }), async (ctx) => { }, }); - - - ctx.body = { message: '删除公告成功' }; + ctx.body = { message: '删除公告成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -1619,7 +1804,7 @@ router.post('/modifyRoomInfo', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ room_id, avatar, user_id, username, name, desc }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -1632,14 +1817,14 @@ router.post('/modifyRoomInfo', koaJwt({ secret }), async (ctx) => { }); if (!room) { ctx.status = 400; - ctx.body = { message: '房间不存在' }; + ctx.body = { message: '房间不存在', code: 400 }; return; } // 判断是否是群主 if (room.owner_id !== ctx.state.user.user_id) { ctx.status = 400; - ctx.body = { message: '不是群主' }; + ctx.body = { message: '不是群主', code: 400 }; return; } @@ -1654,11 +1839,11 @@ router.post('/modifyRoomInfo', koaJwt({ secret }), async (ctx) => { }, }); - ctx.body = { data: { room_id, avatar, name, desc }, message: '修改房间信息成功' }; + ctx.body = { data: { room_id, avatar, name, desc }, message: '修改房间信息成功', code: 200 }; } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) diff --git a/server/routes/chatApp.js b/server/routes/chatApp.js index 26277d9..44c69d2 100644 --- a/server/routes/chatApp.js +++ b/server/routes/chatApp.js @@ -1,4 +1,4 @@ -const { User, Room, chatAppComment, chatApp } = require('../models/models'); +const { User, chatAppComment, AppTag, chatApp } = require('../models/models'); const { Op, Sequelize } = require('sequelize'); const Router = require('koa-router'); const Joi = require('joi'); @@ -12,9 +12,11 @@ const koaBody = require('koa-body').default; const { wordFilter } = require('../filter/AhoCorasick'); const router = new Router(); -const secret = '@5.0.0node_mdex.js:109:16'; +const secret = '@5.0.0node_modules@koacorsindex.js:109:16'; const nanoidNode = '1234567890abcdefghijklmnopqrstuvwxyz'; + + // 聊天室获取app路由 router.post('/getApp', koaJwt({ secret }), async (ctx) => { const { user_id } = ctx.request.body; @@ -24,62 +26,51 @@ router.post('/getApp', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } try { - const appList = await chatApp.findAll({ - where: { status: 1 }, - order: [['category', 'ASC']], // 按 category 字段升序排列 + const appTag = await AppTag.findAll({ + where: { status: 1, app_num: { [Op.gt]: 0 } }, + order: [['app_num', 'DESC']], // 按 category 字段升序排列 }); - - // 初始化返回的数据结构 - const groupedAppList = { - recommended: [], // 存放推荐应用 - groupedByCategory: [], // 存放按 category 字段分组的应用 - }; - - let currentGroup = null; - let ungroupedCategory = null; // 用于标记未分组的分类 - appList.forEach((app) => { - let { category: categoryName, top, ...appInfo } = app.dataValues; // 修改为 let - - // 处理推荐应用 - if (top) { - groupedAppList.recommended.push(appInfo); - return; // 推荐的应用不再参与分类 - } - - // 处理 category 字段为空或 null 的应用,归为 "未分组" - if (!categoryName) { - categoryName = '未分组'; // 为空或 null 的 category 归为 "未分组" - } - - // 检查是否是未分组的分类,如果没有 "未分组" 分类,则创建 - if (categoryName === '未分组') { - if (!ungroupedCategory) { - ungroupedCategory = { categoryName, apps: [] }; - groupedAppList.groupedByCategory.push(ungroupedCategory); - } - ungroupedCategory.apps.push(appInfo); - return; + // 根据tag获取app + let appTagList = []; + appTag.map((item) => { + appTagList.push(item.tag_name); + }) + + // 构建查询条件 + const tagConditions = appTagList.map(tag => ({ + tag: { + [Op.contains]: [tag] } - - // 按 category 字段分组 - if (!currentGroup || currentGroup.categoryName !== categoryName) { - currentGroup = { - categoryName, // 分组的 category 名称 - apps: [], // 分组内的应用列表 - }; - groupedAppList.groupedByCategory.push(currentGroup); // 将新的分组添加到结果数组 + })); + + const appList = await chatApp.findAll({ + where: { + [Op.or]: tagConditions, + status: 1, + }, + order: [['sort', 'ASC']], // 按 sort 字段升序排列 + }); + // console.log(appList); + + // 按照 tag 分组 + const groupedAppList = []; + appTag.map((tag) => { + const apps = appList.filter((app) => app.tag.includes(tag.tag_name)); + if (apps.length > 0) { + groupedAppList.push({ + tag: tag.tag_name, + apps, + }); } - - // 将当前应用信息添加到对应分组 - currentGroup.apps.push(appInfo); }); + ctx.body = { code: 200, message: '获取app分类信息成功', @@ -87,7 +78,7 @@ router.post('/getApp', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -101,75 +92,82 @@ router.post('/getChatApp', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } try { const appList = await chatApp.findAll({ where: { status: 1 }, - order: [['category', 'ASC']], // 按 category 字段升序排列 + order: [['createdAt', 'DESC']], // 按 createdAt 字段升序排列 }); - // 初始化返回的数据结构 - const groupedAppList = { - recommended: [], // 存放推荐应用 - groupedByCategory: [], // 存放按 category 字段分组的应用 + ctx.body = { + code: 200, + message: '获取app分类信息成功', + data: appList, }; - - let currentGroup = null; - let ungroupedCategory = null; // 用于标记未分组的分类 + } catch (err) { + ctx.status = 500; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; + } +}); - appList.forEach((app) => { - let { category: categoryName, top, ...appInfo } = app.dataValues; // 修改为 let - - // 处理推荐应用 - if (top) { - groupedAppList.recommended.push(appInfo); - return; // 推荐的应用不再参与分类 - } - - // 处理 category 字段为空或 null 的应用,归为 "未分组" - if (!categoryName) { - categoryName = '未分组'; // 为空或 null 的 category 归为 "未分组" - } - - // 检查是否是未分组的分类,如果没有 "未分组" 分类,则创建 - if (categoryName === '未分组') { - if (!ungroupedCategory) { - ungroupedCategory = { categoryName, apps: [] }; - groupedAppList.groupedByCategory.push(ungroupedCategory); - } - ungroupedCategory.apps.push(appInfo); - return; - } - - // 按 category 字段分组 - if (!currentGroup || currentGroup.categoryName !== categoryName) { - currentGroup = { - categoryName, // 分组的 category 名称 - apps: [], // 分组内的应用列表 - }; - groupedAppList.groupedByCategory.push(currentGroup); // 将新的分组添加到结果数组 + +// 获取应用标签 +router.get('/getChatAppTag', async (ctx) => { + try { + const appTagList = await AppTag.findAll({ + where: { status: 1, app_num: { [Op.gt]: 0 } }, + order: [['app_num', 'DESC']], // 按 app_num 字段升序排列 + }); + ctx.body = { + code: 200, + message: '获取应用标签成功', + data: appTagList, + }; + } catch (err) { + ctx.status = 500; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; + } +}); + + +// app标签查询 +router.get('/searchChatApp', async (ctx) => { + const { tag } = ctx.request.query; + const schema = Joi.object({ + tag: Joi.string().required(), + }); + const { error } = schema.validate({ tag }); + if (error) { + ctx.status = 400; + ctx.body = { message: error.details[0].message, code: 400 }; + return; + } + // console.log(tag); + try { + const appList = await chatApp.findAll({ + where: { + tag: { + [Op.contains]: [tag], + }, + status: 1, } - - // 将当前应用信息添加到对应分组 - currentGroup.apps.push(appInfo); }); - + ctx.body = { code: 200, message: '获取app分类信息成功', - data: groupedAppList, + data: appList, }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); - // 添加应用 router.post('/addChatApp', koaJwt({ secret }), async (ctx) => { const { user_id, username, url, title, desc, source, type } = ctx.request.body; @@ -185,7 +183,7 @@ router.post('/addChatApp', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, username, url, title, desc, source, type }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -195,7 +193,7 @@ router.post('/addChatApp', koaJwt({ secret }), async (ctx) => { }); if (existApp) { ctx.status = 400; - ctx.body = { message: '应用已存在' }; + ctx.body = { message: '应用已存在', code: 400 }; return; } @@ -225,7 +223,7 @@ router.post('/addChatApp', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { err }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -241,7 +239,7 @@ router.post('/searchChatApp', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, keyword }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -264,7 +262,7 @@ router.post('/searchChatApp', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -278,7 +276,7 @@ router.post('/getMyChatApp', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -295,7 +293,7 @@ router.post('/getMyChatApp', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -315,7 +313,7 @@ router.post('/editChatApp', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ app_id, user_id, title, desc, url, icon, tag }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -336,7 +334,7 @@ router.post('/editChatApp', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -351,7 +349,7 @@ router.post('/deleteChatApp', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, app_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -369,7 +367,7 @@ router.post('/deleteChatApp', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -418,7 +416,7 @@ router.post('/editChatAppPlacard', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ app_id, user_id, placard }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -435,7 +433,7 @@ router.post('/editChatAppPlacard', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -450,7 +448,7 @@ router.post('/getChatAppDetail', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ app_id, user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -465,7 +463,7 @@ router.post('/getChatAppDetail', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -479,7 +477,7 @@ router.post('/recordAppSee', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ app_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -509,7 +507,7 @@ router.post('/recordAppSee', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -549,7 +547,7 @@ router.post('/sendComment', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, app_id, content, username }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -569,7 +567,7 @@ router.post('/sendComment', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -584,7 +582,7 @@ router.post('/getCommentList', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ app_id, user_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -623,7 +621,7 @@ router.post('/getCommentList', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -638,7 +636,7 @@ router.post('/appLike', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, app_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -676,7 +674,7 @@ router.post('/appLike', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -690,7 +688,7 @@ router.post('/commentLike', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, comment_id }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -730,7 +728,7 @@ router.post('/commentLike', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); @@ -744,7 +742,7 @@ router.post('/getWebsiteInfo', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ url }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -771,14 +769,14 @@ router.post('/getWebsiteInfo', koaJwt({ secret }), async (ctx) => { }; } catch (err) { ctx.status = 500; - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); // 网站安全性检测 router.get('/checkWebsiteSecurity', async (ctx) => { - console.log(ctx.request.query); + // console.log(ctx.request.query); const { url } = ctx.request.query; const schema = Joi.object({ url: Joi.string().required(), @@ -786,7 +784,7 @@ router.get('/checkWebsiteSecurity', async (ctx) => { const { error } = schema.validate({ url }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -875,14 +873,14 @@ router.get('/checkWebsiteSecurity', async (ctx) => { }; } - console.log(filter); + // console.log(filter); await browser.close(); } catch (err) { ctx.status = 500; await browser.close(); - ctx.body = { message: '服务器错误', error: err.message }; + ctx.body = { message: '服务器错误', error: err.message, code: 500 }; } }); diff --git a/server/routes/lantuPay.js b/server/routes/lantuPay.js index c3c8a96..d3d32bf 100644 --- a/server/routes/lantuPay.js +++ b/server/routes/lantuPay.js @@ -7,17 +7,18 @@ const koaJwt = require('koa-jwt'); const fs = require('fs'); const path = require('path'); const { User, chatOrder } = require('../models/models'); -const secret = '@5.0.0node_mdex.js:109:16'; +const secret = '@5.0.0node_modules@koacorsindex.js:109:16'; const nanoidNode = '1234567890abcdefghijklmnopqrstuvwxyz'; const router = new Router(); // 价格设置 var price_vip = 68; var price_vip_pro = 88; +var ai = 19 // 下单签名计算 function sign_md5(data) { const order_template = { - mch_id: "*******", //商户号必填 + mch_id: "xxxxxxxxxxxxxx", //商户号必填 out_trade_no: data.out_trade_no, //订单号必填 total_fee: data.total_fee, //支付金额必填 body: data.product, //商品描述必填 @@ -25,14 +26,14 @@ function sign_md5(data) { notify_url: "http://topay.zyy.muo.cc:3049/notify", //通知单地址必填 attach: "无", //附加数据 time_expire: "5m", //订单失效时间 - developer_appid: "*******", //应用id + developer_appid: "xxxxxxxxxxxxx", //应用id } // 签名计算 const stringA = `body=${order_template.body}&mch_id=${order_template.mch_id}¬ify_url=${order_template.notify_url}&out_trade_no=${order_template.out_trade_no}×tamp=${order_template.timestamp}&total_fee=${order_template.total_fee}` - const stringSignTemp = stringA + "&key=a85e54ec46618452475e7e60b5870d81"; + const stringSignTemp = stringA + "&key=xxxxxxxxxx"; const signMd5 = cryptoMD5(stringSignTemp).toString().toUpperCase(); //MD5加密转大写 @@ -48,7 +49,7 @@ function sign_md5(data) { // jsapi_wxpay签名计算 function jsapi_sign_md5(data) { const order_template = { - mch_id: "*******", //商户号必填 + mch_id: "1684186147", //商户号必填 out_trade_no: data.out_trade_no, //订单号必填 total_fee: data.total_fee, //支付金额必填 body: data.product, //商品描述必填 @@ -56,7 +57,7 @@ function jsapi_sign_md5(data) { notify_url: "http://topay.zyy.muo.cc:3049/notify", //通知单地址必填 attach: "无", //附加数据 time_expire: "5m", //订单失效时间 - developer_appid: "*******", //应用id + developer_appid: "1041589049015120", //应用id return_url: "https://docs.qq.com/form/page/DY0p3Q0NCWWFmTEtS" //支付成功后跳转地址 } @@ -66,7 +67,7 @@ function jsapi_sign_md5(data) { const stringA = `body=${order_template.body}&mch_id=${order_template.mch_id}¬ify_url=${order_template.notify_url}&out_trade_no=${order_template.out_trade_no}×tamp=${order_template.timestamp}&total_fee=${order_template.total_fee}` - const stringSignTemp = stringA + "&key=a85e54ec46618452475e7e60b5870d81"; + const stringSignTemp = stringA + "&key=xxxxxxxxxx"; const signMd5 = cryptoMD5(stringSignTemp).toString().toUpperCase(); //MD5加密转大写 @@ -74,6 +75,8 @@ function jsapi_sign_md5(data) { ...order_template, sign: signMd5, } + console.log(stringSignTemp); + console.log(updata); return updata; } @@ -81,7 +84,7 @@ function jsapi_sign_md5(data) { // 订单查询签名计算 function sign_query(data) { const order_template = { - mch_id: "*******", //商户号必填 + mch_id: "1684186147", //商户号必填 out_trade_no: data.out_trade_no, //订单号必填 timestamp: Date.now().toString().substr(0, 10), //十位时间戳必填 } @@ -90,7 +93,7 @@ function sign_query(data) { const stringA = `mch_id=${order_template.mch_id}&out_trade_no=${order_template.out_trade_no}×tamp=${order_template.timestamp}` - const stringSignTemp = stringA + "&key=a85e54ec46618452475e7e60b5870d81"; + const stringSignTemp = stringA + "&key=xxxxxxxxx"; const signMd5 = cryptoMD5(stringSignTemp).toString().toUpperCase(); //MD5加密转大写 @@ -103,7 +106,7 @@ function sign_query(data) { } -// 下单返回收款码 +// 微信支付回调下单返回收款码 router.post("/wxpay", koaJwt({ secret }), async (ctx) => { const { user_id, username, goods } = ctx.request.body; const schema = Joi.object({ @@ -114,103 +117,70 @@ router.post("/wxpay", koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, username, goods }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } - if (goods === "摸鱼股东") { //摸鱼股东 摸鱼股东 - let out_trade_no = 'oid_' + customAlphabet(nanoidNode, 10)(); - const config = { - method: "post", - url: "https://api.ltzf.cn/api/wxpay/native", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - data: sign_md5({ - total_fee: price_vip, - product: '摸鱼股东', - out_trade_no: out_trade_no, - }), - }; - - try { - const response = await axios(config); // 使用 await 等待请求完成 - console.log(response.data); - ctx.status = 200; - // 加上订单号返回 - - const saveOrder = chatOrder.create({ - order_id: out_trade_no, - user_id, - username, - goods: "摸鱼股东", - price: price_vip, - status: 1, - QRcode_url: response.data.data.QRcode_url, - code_url: response.data.data.code_url, - }) - - ctx.body = { - code: 200, - message: "success", - data: {...response.data.data, out_trade_no: out_trade_no}, - }; - - } catch (error) { - console.error(error); - ctx.status = 403; // 错误时设置为 403 状态 - ctx.body = 'error'; - } + // 价格 + let price = 0; + if (goods === "摸鱼股东") { + price = price_vip; + } + if (goods === "超级摸鱼股东") { + price = price_vip_pro; + } + if (goods === "摸鱼Ai") { + price = ai; } - if (goods === "超级摸鱼股东") { //超级摸鱼股东 超级摸鱼股东 - let out_trade_no = 'oid_' + customAlphabet(nanoidNode, 10)(); - const config = { - method: "post", - url: "https://api.ltzf.cn/api/wxpay/native", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - data: sign_md5({ - total_fee: price_vip_pro, - product: '超级摸鱼股东', - out_trade_no: out_trade_no, - }), + let out_trade_no = 'oid_' + customAlphabet(nanoidNode, 10)(); + const config = { + method: "post", + url: "https://api.ltzf.cn/api/wxpay/native", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + data: sign_md5({ + total_fee: price, + product: '摸鱼股东', + out_trade_no: out_trade_no, + }), + }; + + try { + const response = await axios(config); // 使用 await 等待请求完成 + console.log(response.data); + ctx.status = 200; + // 加上订单号返回 + + const saveOrder = chatOrder.create({ + order_id: out_trade_no, + user_id, + username, + goods: "摸鱼股东", + price: price, + status: 1, + QRcode_url: response.data.data.QRcode_url, + code_url: response.data.data.code_url, + }) + + ctx.body = { + code: 200, + message: "success", + data: {...response.data.data, out_trade_no: out_trade_no}, }; - - try { - const response = await axios(config); // 使用 await 等待请求完成 - console.log(response.data); - ctx.status = 200; - // 加上订单号返回 - - const saveOrder = chatOrder.create({ - order_id: out_trade_no, - user_id, - username, - goods: "超级摸鱼股东", - price: price_vip_pro, - status: 1, - QRcode_url: response.data.data.QRcode_url, - code_url: response.data.data.code_url, - }) - ctx.body = { - code: 200, - message: "success", - data: {...response.data.data, out_trade_no: out_trade_no}, - }; - } catch (error) { - console.error(error); - ctx.status = 403; // 错误时设置为 403 状态 - ctx.body = 'error'; - } + } catch (error) { + console.error(error); + ctx.status = 403; // 错误时设置为 403 状态 + ctx.body = { message: 'error', code: 403 }; } + }); -// 下单返回收款码 -router.post("/jsapi_wxpay", koaJwt({ secret }), async (ctx) => { +// 网站下单返回收款码 +router.post("/jsapi_wxpay", async (ctx) => { const { user_id, username, goods } = ctx.request.body; const schema = Joi.object({ user_id: Joi.string().required(), @@ -220,96 +190,64 @@ router.post("/jsapi_wxpay", koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, username, goods }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } + // 价格 + let price = 0; if (goods === "摸鱼股东") { - let out_trade_no = 'oid_' + customAlphabet(nanoidNode, 10)(); - const config = { - method: "post", - url: "https://api.ltzf.cn/api/wxpay/jsapi_convenient", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - data: jsapi_sign_md5({ - total_fee: price_vip, - product: '摸鱼股东', - out_trade_no: out_trade_no, - }), - }; - - try { - const response = await axios(config); // 使用 await 等待请求完成 - // console.log(response.data); - - const saveOrder = chatOrder.create({ - order_id: out_trade_no, - user_id, - username, - goods: "摸鱼股东", - price: price_vip, - status: 0, - code_url: response.data.data.order_url, - QRcode_url: response.data.data.QRcode_url, - }) - - // 加上订单号返回 - ctx.body = { - code: 200, - message: "success", - data: {...response.data.data, out_trade_no: out_trade_no}, - }; - } catch (error) { - console.error(error); - ctx.status = 403; // 错误时设置为 403 状态 - ctx.body = 'error'; - } + price = price_vip; } - if (goods === "超级摸鱼股东") { - let out_trade_no = 'oid_' + customAlphabet(nanoidNode, 10)(); - const config = { - method: "post", - url: "https://api.ltzf.cn/api/wxpay/jsapi_convenient", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - data: jsapi_sign_md5({ - total_fee: price_vip_pro, - product: '超级摸鱼股东', - out_trade_no: out_trade_no, - }), - }; - - try { - const response = await axios(config); // 使用 await 等待请求完成 - console.log(response.data); - - const saveOrder = chatOrder.create({ - order_id: out_trade_no, - user_id, - username, - goods: "超级摸鱼股东", - price: price_vip_pro, - status: 0, - code_url: response.data.data.order_url, - QRcode_url: response.data.data.QRcode_url, - }) - - // 加上订单号返回 - ctx.body = { - code: 200, - message: "success", - data: {...response.data.data, out_trade_no: out_trade_no}, - }; + price = price_vip_pro; + } + if (goods === "摸鱼Ai") { + price = ai; + } + + let out_trade_no = 'oid_' + customAlphabet(nanoidNode, 10)(); + const config = { + method: "post", + url: "https://api.ltzf.cn/api/wxpay/jsapi_convenient", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + data: jsapi_sign_md5({ + total_fee: price, + product: goods, + out_trade_no: out_trade_no, + }), + }; + + try { + const response = await axios(config); // 使用 await 等待请求完成 + // console.log(response.data); + + const saveOrder = chatOrder.create({ + order_id: out_trade_no, + user_id, + username, + goods: goods, + price: price, + status: 0, + code_url: response.data.data.order_url, + QRcode_url: response.data.data.QRcode_url, + }) - } catch (error) { - console.error(error); - ctx.status = 403; // 错误时设置为 403 状态 - ctx.body = 'error'; - } + // 加上订单号返回 + ctx.body = { + code: 200, + message: "success", + data: {...response.data.data, price: price, out_trade_no: out_trade_no}, + }; + } catch (error) { + console.error(error); + ctx.status = 403; // 错误时设置为 403 状态 + ctx.body = { message: 'error', code: 403 }; } + + }); @@ -324,7 +262,7 @@ router.post("/order", koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, username, out_trade_no }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -426,11 +364,88 @@ router.post("/order", koaJwt({ secret }), async (ctx) => { // console.log(response.data); ctx.status = 200; // 确保是 ctx.status - ctx.body = {data: response.data, message: "success"}; // 返回响应数据 + ctx.body = {data: response.data, message: "success", code: 200}; // 返回响应数据 + } catch (error) { + console.error(error); + ctx.status = 403; // 错误时设置为 403 状态 + ctx.body = { message: 'error', code: 403 }; + } +}); + + +// 通用查询订单状态 +router.post("/order-common", async (ctx) => { + const { user_id, username, out_trade_no } = ctx.request.body; + const schema = Joi.object({ + user_id: Joi.string().required(), + username: Joi.string().required(), + out_trade_no: Joi.string().required(), + }); + const { error } = schema.validate({ user_id, username, out_trade_no }); + if (error) { + ctx.status = 400; + ctx.body = { message: error.details[0].message, code: 400 }; + return; + } + + const config = { + method: "post", + url: "https://api.ltzf.cn/api/wxpay/get_pay_order", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + data: sign_query({out_trade_no: out_trade_no}), + }; + + try { + const response = await axios(config); // 使用 await 等待请求完成 + console.log(response.data); + + if(response.data.code === 1){ + ctx.status = 500; + ctx.body = { + code: 200, + message: "await", + data: { + pay_status: 0, + message: response.data.msg, + }, + }; + return; + } + + if(response.data.data.pay_status === 0){ + ctx.status = 500; + ctx.body = { + code: 200, + message: "await", + data: { + pay_status: response.data.data.pay_status, + message: response.data.msg, + }, + }; + return; + } + + // 更新订单状态 + const saveOrder = chatOrder.update( + { + status: response.data.data.pay_status + }, + { + where: { + order_id: out_trade_no, + }, + } + ); + + // console.log(response.data); + ctx.status = 200; // 确保是 ctx.status + ctx.body = {data: response.data, message: "success", code: 200}; // 返回响应数据 } catch (error) { console.error(error); ctx.status = 403; // 错误时设置为 403 状态 - ctx.body = 'error'; + ctx.body = { message: 'error', code: 403 }; } }); diff --git a/server/routes/robot.js b/server/routes/robot.js index 97e7474..40ad352 100644 --- a/server/routes/robot.js +++ b/server/routes/robot.js @@ -23,7 +23,7 @@ router.post('/sendMessage', async (ctx) => { const { error } = schema.validate({ room_id, robot_id, msg, user_id, nickname, type, source }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -48,10 +48,10 @@ router.post('/sendMessage', async (ctx) => { // 创建聊天记录 try { const newChatRecord = await ChatRecord.create(msg_data); - ctx.body = { message: '发送消息成功', data: newChatRecord }; + ctx.body = { message: '发送消息成功', data: newChatRecord, code: 200 }; } catch (error) { ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } // 向房间内所有用户广播消息 @@ -76,7 +76,7 @@ router.post('/sendCustom', async (ctx) => { const { error } = schema.validate({ room_id, robot_id, msg, user_id, nickname, type, source }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -99,10 +99,10 @@ router.post('/sendCustom', async (ctx) => { // 创建聊天记录 try { const newChatRecord = await ChatRecord.create(msg_data); - ctx.body = { message: '发送消息成功', data: newChatRecord }; + ctx.body = { message: '发送消息成功', data: newChatRecord, code: 200 }; } catch (error) { ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } // 向房间内所有用户广播消息 diff --git a/server/routes/sysState.js b/server/routes/sysState.js index a67413f..8c18851 100644 --- a/server/routes/sysState.js +++ b/server/routes/sysState.js @@ -9,7 +9,8 @@ router.get('/sysState', async (ctx) => { const result = await getSystemInfo(); ctx.body = { code: 200, - data: result + data: result, + message: '获取系统状态成功' }; } catch (error) { console.log(error); diff --git a/server/routes/timed.js b/server/routes/timed.js index 088880a..5f00086 100644 --- a/server/routes/timed.js +++ b/server/routes/timed.js @@ -9,7 +9,7 @@ const path = require('path'); const dayjs = require('dayjs'); const router = new Router(); -const secret = '@5.0.0node_mdex.js:109:16'; +const secret = '@5.0.0node_modules@koacorsindex.js:109:16'; // 每天1点执行一次任务 @@ -102,7 +102,7 @@ router.get('/dashboard', koaJwt({ secret }), async (ctx) => { // 返回 ctx.body = { - code: 0, + code: 200, message: '获取仪表盘数据成功', data: { userCount, // 全部用户数量 @@ -139,7 +139,7 @@ router.get('/dashboardChart', koaJwt({ secret }), async (ctx) => { // 返回 ctx.body = { - code: 0, + code: 200, message: '获取仪表盘柱状图数据成功', data: dauData, @@ -162,7 +162,7 @@ router.get('/new', koaJwt({ secret }), async (ctx) => { }); ctx.body = { - code: 0, + code: 200, message: '获取最近三天新增的房间成功', data: { newRooms, @@ -178,7 +178,7 @@ router.get('/chatRecordCount', koaJwt({ secret }), async (ctx) => { }); ctx.body = { - code: 0, + code: 200, message: '获取聊天记录各个类型数量成功', data: chatRecordCount, }; @@ -192,7 +192,7 @@ router.get('/shareholder', koaJwt({ secret }), async (ctx) => { // 返回 ctx.body = { - code: 0, + code: 200, message: '获取股东数据成功', data: { vip: badgeData.vip, @@ -238,7 +238,7 @@ router.post('/getSignData', koaJwt({ secret }), async (ctx) => { } ctx.body = { - code: 2, + code: 200, message: '今天已经签到', data: { // 今日 @@ -262,8 +262,9 @@ router.post('/moyuData', koaJwt({ secret }), async (ctx) => { }); if (!user) { + ctx.status = 500; ctx.body = { - code: 1, + code: 500, message: '用户不存在', }; return; @@ -353,13 +354,14 @@ router.post('/moyuData', koaJwt({ secret }), async (ctx) => { ctx.body = { - code: 0, + code: 200, message: '摸鱼数据提交成功', }; } catch (error) { console.error('Error submitting moyu data:', error); + ctx.status = 500; ctx.body = { - code: -1, + code: 500, message: '服务器错误', }; } @@ -380,7 +382,6 @@ router.post('/getBadgeData', koaJwt({ secret }), async (ctx) => { }); if (!badge) { - ctx.status = 200; ctx.body = { code: 200, data: { @@ -397,7 +398,7 @@ router.post('/getBadgeData', koaJwt({ secret }), async (ctx) => { ctx.body = { - code: 0, + code: 200, message: '获取徽章数据成功', data: { fish_catch: badge.fish_catch, // 鱼数量 @@ -410,8 +411,9 @@ router.post('/getBadgeData', koaJwt({ secret }), async (ctx) => { }; } catch (error) { console.error('Error getting badge data:', error); + ctx.status = 500; ctx.body = { - code: -1, + code: 500, message: '服务器错误', }; } @@ -462,14 +464,15 @@ router.post('/getBadgeRank', koaJwt({ secret }), async (ctx) => { ctx.body = { - code: 0, + code: 200, message: '获取徽章排行榜成功', data: badges, }; } catch (error) { console.error('Error getting badge rank:', error); + ctx.status = 500; ctx.body = { - code: -1, + code: 500, message: '服务器错误', }; } @@ -481,7 +484,7 @@ router.post('/getShareholderList', koaJwt({ secret }), async (ctx) => { const shareholderData = JSON.parse(fs.readFileSync(path.join(__dirname, '../public/data/stockholder.json'), 'utf-8')); ctx.body = { - code: 0, + code: 200, message: '获取股东列表成功', data: shareholderData, }; diff --git a/server/routes/user.js b/server/routes/user.js index 425d52b..a952e7d 100644 --- a/server/routes/user.js +++ b/server/routes/user.js @@ -12,7 +12,7 @@ const sha256 = require("crypto-js/sha256"); const axios = require('axios'); const koaBody = require('koa-body').default; const nanoidNode = '1234567890abcdefghijklmnopqrstuvwxyz'; -const secret = '@5.0.0node_mdex.js:109:16'; +const secret = '@5.0.0node_modules@koacorsindex.js:109:16'; // 注册 router.post('/register', async (ctx) => { @@ -25,14 +25,14 @@ router.post('/register', async (ctx) => { const { error } = schema.validate({ username, password }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } // 先检查用户名是否存在 const user = await User.findOne({ where: { username } }); if (user) { ctx.status = 400; - ctx.body = { message: '用户名已存在' }; + ctx.body = { message: '用户名已存在', code: 400 }; return; } try { @@ -56,10 +56,10 @@ router.post('/register', async (ctx) => { let users = room_users.users; users.push(user_id); await Room.update({ users: users }, { where: { room_id: '666666' } }); - ctx.body = { message: '注册成功', user: user }; + ctx.body = { message: '注册成功', user: user, code: 200 }; } catch (err) { ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }); @@ -77,22 +77,30 @@ router.post('/login', async (ctx) => { const { error } = schema.validate(ctx.request.body); if (error) { ctx.status = 400; - ctx.body = { error: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return } try{ // 校验验证码 - const res = await axios.post('https://account.roots.zyy.muo.cc/', { - "ac": "email_code_login_verify", - "user": email, - "code": code, - }); + const res = await axios.post('https://api.zyy.muo.cc/account/user/code_login', JSON.stringify({ + "email": email, + "code": code + }), + { + headers: { + 'Content-Type': 'application/json', + }, + } + + ); + + console.log(res.data) // 验证码正确 - if (res.data.code === 200) { + if (res.data.code === 0) { // 查询user库用户在不在 - const user = await User.findOne({ where: { username:res.data.data.uid } }); + const user = await User.findOne({ where: { username: res.data.data.uid.toString() } }); if (!user) { // 注册 let user_id = 'uid_' + customAlphabet(nanoidNode, 10)(); @@ -139,7 +147,7 @@ router.post('/login', async (ctx) => { friends: user.friends, signature: user.signature, token, - } }; + }, code: 200 }; } if(user){ @@ -168,23 +176,24 @@ router.post('/login', async (ctx) => { friends: user.friends, signature: user.signature, token, - } + }, + code: 200, }; } } // 验证码错误 - if(res.data.code != 200){ + if(res.data.code != 0){ ctx.status = 400; - ctx.body = { error: "验证码错误" }; + ctx.body = { message: "验证码错误", code: 400 }; return; } } catch (err) { ctx.status = 500; console.log(err); - ctx.body = { error: err }; + ctx.body = { message: err, code: 500 }; } @@ -193,11 +202,12 @@ router.post('/login', async (ctx) => { // 校验登录状态 router.post('/check_login', koaJwt({ secret }), async (ctx) => { + // console.log(ctx.request) const { user_id } = ctx.request.body; const user = await User.findOne({ where: { user_id } }); if (!user) { ctx.status = 401; - ctx.body = { message: '用户不存在' }; + ctx.body = { message: '用户不存在', code: 401 }; return; } @@ -241,7 +251,8 @@ router.post('/check_login', koaJwt({ secret }), async (ctx) => { gender: user.gender, friends: user.friends, signature: user.signature, - } + }, + code: 200, }; }); @@ -258,7 +269,7 @@ router.post('/zhuayuya_check', async (ctx) => { const { error } = schema.validate({ username, nickname, email }); if (error) { ctx.status = 400; - ctx.body = { error: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -274,7 +285,7 @@ router.post('/zhuayuya_check', async (ctx) => { // 用户不存在 if (res.data.code != 200||res.data.data.activate) { ctx.status = 400; - ctx.body = { message: '用户不存在', data: { username, nickname, email } }; + ctx.body = { message: '用户不存在', data: { username, nickname, email }, code: 400 }; return; } @@ -312,7 +323,7 @@ router.post('/zhuayuya_check', async (ctx) => { }; fs.writeFileSync(tokenFile, JSON.stringify(tokenData)); - ctx.body = { message: '注册成功', data: { user_id: user.user_id, token: jwt_token } }; + ctx.body = { message: '注册成功', data: { user_id: user.user_id, token: jwt_token }, code: 200 }; } else { @@ -325,12 +336,12 @@ router.post('/zhuayuya_check', async (ctx) => { username: username, }; fs.writeFileSync(tokenFile, JSON.stringify(tokenData)); - ctx.body = { message: '用户已存在', data: { user_id: user.user_id, token: jwt_token } }; + ctx.body = { message: '用户已存在', data: { user_id: user.user_id, token: jwt_token }, code: 200 }; } } catch (err) { ctx.status = 500; console.log(err); - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }) @@ -377,7 +388,7 @@ router.post('/uploadUserAvatar', koaJwt({ secret }), koaBody({ // 注册文 // 移动文件到新路径 fs.renameSync(file.filepath, newPath); - ctx.body = { message: '上传成功', data: { newFilename } }; + ctx.body = { message: '上传成功', data: { newFilename }, code: 200 }; } else { ctx.throw(400, '没有检测到上传文件'); } @@ -407,7 +418,7 @@ router.post('/modifyUserInfo', koaJwt({ secret }), async (ctx) => { const { error } = schema.validate({ user_id, username, nickname, avatar, signature }); if (error) { ctx.status = 400; - ctx.body = { message: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return; } @@ -415,7 +426,7 @@ router.post('/modifyUserInfo', koaJwt({ secret }), async (ctx) => { const user = await User.findOne({ where: { user_id } }); if (!user) { ctx.status = 401; - ctx.body = { message: '用户不存在' }; + ctx.body = { message: '用户不存在', code: 401 }; return; } try { @@ -436,10 +447,10 @@ router.post('/modifyUserInfo', koaJwt({ secret }), async (ctx) => { avatar, signature, }); - ctx.body = { data: { nickname, avatar, signature }, message: '修改成功' }; + ctx.body = { data: { nickname, avatar, signature }, message: '修改成功', code: 200 }; } catch (err) { ctx.status = 500; - ctx.body = { message: err }; + ctx.body = { message: err, code: 500 }; } }); diff --git a/server/routes/zhuayuya.js b/server/routes/zhuayuya.js index 7206a3f..b6ee7cd 100644 --- a/server/routes/zhuayuya.js +++ b/server/routes/zhuayuya.js @@ -21,7 +21,7 @@ router.post('/user', async (ctx) => { const { error } = schema.validate(ctx.request.body); if (error) { ctx.status = 400; - ctx.body = { error: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return } @@ -36,7 +36,7 @@ router.post('/user', async (ctx) => { if (res.data.code != 200) { ctx.status = 400; - ctx.body = { error: "用户不存在" }; + ctx.body = { message: "用户不存在", code: 400 }; return; } @@ -74,11 +74,11 @@ router.post('/user', async (ctx) => { await Room.update({ users: users }, { where: { room_id: '666666' } }); ctx.status = 200; - ctx.body = { msg: "用户存在已加入用户",data: { nickname: res.data.data.nickname, email: res.data.data.email } }; + ctx.body = { message: "用户存在已加入用户",data: { nickname: res.data.data.nickname, email: res.data.data.email }, code: 200 }; return; }else{ ctx.status = 200; - ctx.body = { msg: "用户存在",data: {nickname: isUser.nickname, email: isUser.email} }; + ctx.body = { message: "用户存在",data: {nickname: isUser.nickname, email: isUser.email}, code: 200 }; return; } @@ -86,7 +86,7 @@ router.post('/user', async (ctx) => { } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { error: "服务器错误" }; + ctx.body = { message: "服务器错误", code: 500 }; return; } @@ -105,7 +105,7 @@ router.post('/nickname', async (ctx) => { const { error } = schema.validate(ctx.request.body); if (error) { ctx.status = 400; - ctx.body = { error: error.details[0].message }; + ctx.body = { message: error.details[0].message, code: 400 }; return } @@ -120,13 +120,13 @@ router.post('/nickname', async (ctx) => { if (res.data.code != 200) { ctx.status = 400; - ctx.body = { error: "用户不存在" }; + ctx.body = { message: "用户不存在", code: 400 }; return; } } catch (err) { console.log(err); ctx.status = 500; - ctx.body = { error: "服务器错误" }; + ctx.body = { message: "服务器错误", code: 500 }; return; } @@ -134,7 +134,7 @@ router.post('/nickname', async (ctx) => { let data = await wordFilter(ctx.request.body.nickname); if(data.words.length != 0){ ctx.status = 400; - ctx.body = { error: '昵称过于敏感了哦~' }; + ctx.body = { message: '昵称过于敏感了哦~', code: 400 }; return; } @@ -154,14 +154,14 @@ router.post('/nickname', async (ctx) => { if (!result || !chat_result) { ctx.status = 400; - ctx.body = { error: "修改失败" }; + ctx.body = { message: "修改失败", code: 400 }; return } ctx.body = { code: 200, - msg: '修改成功', + message: '修改成功', data: result } });