From b32673d78a4bab41ca401a08e1aade2b1a76d78a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=B3=E7=A5=9E?= <3162475700@qq.com> Date: Sun, 28 Jul 2024 21:46:12 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=AA=E8=A7=A3=E5=86=B3=E5=86=85?= =?UTF-8?q?=E5=AD=98=E5=BC=82=E5=B8=B8=E5=8D=A0=E7=94=A8=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E7=BE=8E=E5=8C=96=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- all.json | 446 +++++++++++++++++++++++++++++++++++----- errors.json | 75 ++----- grab.log | 6 +- readme.md | 13 ++ server.py | 80 +++---- static/avatar.png | Bin 0 -> 21194 bytes static/deploy-home.html | 65 ++++++ 7 files changed, 532 insertions(+), 153 deletions(-) create mode 100644 static/avatar.png create mode 100644 static/deploy-home.html diff --git a/all.json b/all.json index 1241fe4..60ab435 100644 --- a/all.json +++ b/all.json @@ -1,12 +1,40 @@ { "statistical_data": { - "friends_num": 80, - "active_num": 62, - "error_num": 18, - "article_num": 281, - "last_updated_time": "2024-07-28 14:28:11" + "friends_num": 81, + "active_num": 72, + "error_num": 9, + "article_num": 329, + "last_updated_time": "2024-07-28 21:25:05" }, "article_data": [ + { + "title": "c++指针", + "created": "2024-07-29 05:00", + "link": "https://blog.zhwei.tech/index.php/archives/277/", + "author": "ZHI-BLOG", + "avatar": "https://cdn.qyliu.top/i/2024/06/01/665a9a8f8418a.png" + }, + { + "title": "所有文章", + "created": "2024-07-28 20:28", + "link": "https://blog.hesiy.cn/posts/", + "author": "FloatSheep", + "avatar": "https://cdn.qyliu.top/i/2024/07/28/66a6324891ba1.webp" + }, + { + "title": "关于本站|Solitude主题魔改内容", + "created": "2024-07-28 19:00", + "link": "https://blog.starsharbor.com/posts/solitude-changefiles/", + "author": "星港Star", + "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" + }, + { + "title": "Linux中Cron定时任务的踩坑", + "created": "2024-07-28 16:57", + "link": "https://www.hitagi.icu/posts/ec44b35f/", + "author": "Hitagi", + "avatar": "https://cdn.qyliu.top/i/2024/07/07/668a9e330dc6a.webp" + }, { "title": "htcsp语法补强//顺序结构 数组 字符串 函数 递归", "created": "2024-07-28 03:28", @@ -21,6 +49,13 @@ "author": "ZHI-BLOG", "avatar": "https://cdn.qyliu.top/i/2024/06/01/665a9a8f8418a.png" }, + { + "title": "【日记】2024.07.27", + "created": "2024-07-27 23:10", + "link": "https://www.xingmail.cn/journal-of-2024-07-27/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, { "title": "通过Webdav给群晖挂载115网盘", "created": "2024-07-27 21:06", @@ -42,6 +77,27 @@ "author": "乙未博客", "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f05e2f75c.png" }, + { + "title": "【日记】2024.07.26", + "created": "2024-07-26 21:01", + "link": "https://www.xingmail.cn/journal-of-2024-07-26/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, + { + "title": "安卓手机端免费音乐下载神器-音乐适配:无需付费/免费听音乐/免费匹配歌词", + "created": "2024-07-26 19:49", + "link": "https://www.bbixb.top/archives/1565", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, + { + "title": "科技爱好者周刊(第 310 期):内容农场的 AI 赚钱术", + "created": "2024-07-26 08:05", + "link": "http://www.ruanyifeng.com/blog/2024/07/weekly-issue-310.html", + "author": "阮一峰", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbca75b9fe.png" + }, { "title": "空气炸锅维修", "created": "2024-07-26 05:58", @@ -77,6 +133,13 @@ "author": "杜老师说", "avatar": "https://cdn.dusays.com/avatar.png" }, + { + "title": "【日记】2024.07.25", + "created": "2024-07-25 23:28", + "link": "https://www.xingmail.cn/journal-of-2024-07-25/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, { "title": "华为 Pura 70 Pro — 不完美的 GMS 体验", "created": "2024-07-25 11:23", @@ -84,6 +147,13 @@ "author": "obaby", "avatar": "https://cdn.qyliu.top/i/2024/04/15/661d443b5359c.png" }, + { + "title": "【日记】2024.07.24", + "created": "2024-07-24 22:44", + "link": "https://www.xingmail.cn/journal-of-2024-07-24/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, { "title": "利用 Cron 编写简单的定时脚本(含简易的 CDN 攻击预警)", "created": "2024-07-24 22:43", @@ -119,6 +189,13 @@ "author": "星港Star", "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" }, + { + "title": "【日记】2024.07.23", + "created": "2024-07-23 23:12", + "link": "https://www.xingmail.cn/journal-of-2024-07-23/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, { "title": "哔哩哔哩视频下载方法大汇总", "created": "2024-07-23 20:59", @@ -161,13 +238,6 @@ "author": "杜老师说", "avatar": "https://cdn.dusays.com/avatar.png" }, - { - "title": "ZHWEI-TXL使用文档-视频", - "created": "2024-07-22 06:29", - "link": "https://blog.zhwei.tech/index.php/archives/180/", - "author": "ZHI-BLOG", - "avatar": "https://cdn.qyliu.top/i/2024/06/01/665a9a8f8418a.png" - }, { "title": "Typecho后台轻简美化增强插件-AdminElegance", "created": "2024-07-21 22:43", @@ -238,6 +308,13 @@ "author": "刘郎阁", "avatar": "https://cdn.qyliu.top/i/2024/04/19/66229406a68df.png" }, + { + "title": "科技爱好者周刊(第 309 期):无人驾驶出租车的双面刃", + "created": "2024-07-19 08:09", + "link": "http://www.ruanyifeng.com/blog/2024/07/weekly-issue-309.html", + "author": "阮一峰", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbca75b9fe.png" + }, { "title": "我为下一届辩论新生留下的文字", "created": "2024-07-19 05:42", @@ -336,6 +413,13 @@ "author": "湘铭", "avatar": "https://cdn.qyliu.top/i/2024/04/19/6622928fc416c.png" }, + { + "title": "白嫖PokePay的U卡", + "created": "2024-07-15 20:02", + "link": "https://blog.qjqq.cn/posts/4226.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, { "title": "HTML前端图表应用", "created": "2024-07-15 17:04", @@ -357,6 +441,41 @@ "author": "张洪Heo", "avatar": "https://bu.dusays.com/2022/12/28/63ac2812183aa.png" }, + { + "title": "肺系病的方证用药", + "created": "2024-07-15 02:28", + "link": "https://www.henjinet.com/archives/513.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "肺痿部分的证治分类", + "created": "2024-07-15 02:08", + "link": "https://www.henjinet.com/archives/504.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "肺胀部分的证治分类", + "created": "2024-07-15 02:07", + "link": "https://www.henjinet.com/archives/503.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "肺痨部分的证治分类", + "created": "2024-07-15 02:05", + "link": "https://www.henjinet.com/archives/502.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "肺痈部分的证治分类", + "created": "2024-07-15 02:02", + "link": "https://www.henjinet.com/archives/501.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, { "title": "近日总结:期末&软路由", "created": "2024-07-14 16:55", @@ -378,6 +497,13 @@ "author": "凉心", "avatar": "https://cdn.qyliu.top/i/2024/05/24/66500d797ac38.png" }, + { + "title": "一串代码解决老爷机上Windows的TPM 2.0(受信任的平台模块验证)和cpu限制", + "created": "2024-07-13 17:39", + "link": "https://www.bbixb.top/archives/1513", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, { "title": "Typecho 调取随机文章", "created": "2024-07-13 17:26", @@ -406,6 +532,13 @@ "author": "刘郎阁", "avatar": "https://cdn.qyliu.top/i/2024/04/19/66229406a68df.png" }, + { + "title": "科技爱好者周刊(第 308 期):工作找不到,博士能读吗?", + "created": "2024-07-12 08:19", + "link": "http://www.ruanyifeng.com/blog/2024/07/weekly-issue-308.html", + "author": "阮一峰", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbca75b9fe.png" + }, { "title": "宝塔如何单独给一个网站设置nginx缓存目录,延长和持久化图床缓存", "created": "2024-07-11 14:52", @@ -434,6 +567,13 @@ "author": "微霞", "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" }, + { + "title": "专业激活版顶级安卓手机清理神器:CCleaner,一款知名的系统优化/隐私保护/垃圾清理神器", + "created": "2024-07-10 16:37", + "link": "https://www.bbixb.top/archives/1506", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, { "title": "halo 插件开发中的一些踩坑记录", "created": "2024-07-10 14:52", @@ -448,6 +588,13 @@ "author": "辞琼", "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1c9b7efe1.png" }, + { + "title": "软云(服务器商家)跑路了", + "created": "2024-07-08 21:40", + "link": "https://pipuwong.com/the-vps-hosting-services-shut-down-without-prior-notice", + "author": "皮普", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" + }, { "title": "高效利用 GitHub 搜索,精准快速获取所需", "created": "2024-07-08 18:27", @@ -518,6 +665,13 @@ "author": "清羽飞扬", "avatar": "https://blog.qyliu.top/info/avatar.ico" }, + { + "title": "使用窗口放大软件:losslessscaling,解决电脑端植物大战僵尸杂交版和各种小游戏无法全屏的问题", + "created": "2024-07-04 20:07", + "link": "https://www.bbixb.top/archives/1491", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, { "title": "彗星云跑路了", "created": "2024-07-04 11:45", @@ -546,13 +700,6 @@ "author": "星港Star", "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" }, - { - "title": "有损压缩格式详细介绍", - "created": "2024-07-04 01:30", - "link": "https://blog.starsharbor.com/posts/audio-format-3/", - "author": "星港Star", - "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" - }, { "title": "Solitude:实用技巧", "created": "2024-07-04 00:00", @@ -679,6 +826,13 @@ "author": "爱吃肉的猫", "avatar": "https://cdn.qyliu.top/i/2024/04/07/66123cff10a83.png" }, + { + "title": "为你的网站添加好看的悬浮音乐播放器-小枫音乐播放器/APlayer & MetingJS", + "created": "2024-06-27 12:48", + "link": "https://www.bbixb.top/archives/1362", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, { "title": "数字信号的2FSK调制与解调", "created": "2024-06-27 04:13", @@ -728,6 +882,13 @@ "author": "风记星辰", "avatar": "https://std.thyuu.com/logo.svg" }, + { + "title": "Solitude主题魔改(二):侧边栏个性时钟", + "created": "2024-06-23 20:33", + "link": "https://byer.top/posts/239dbb2d.html", + "author": "星の野", + "avatar": "https://bu.dusays.com/2023/10/01/6519291503349.jpg" + }, { "title": "OFDM学习过程及仿真", "created": "2024-06-23 20:07", @@ -770,6 +931,13 @@ "author": "葱苓sama", "avatar": "https://cdn.qyliu.top/i/2024/05/03/663458df4e6f0.png" }, + { + "title": "Solitude主题魔改(一):首页三栏显示", + "created": "2024-06-21 22:01", + "link": "https://byer.top/posts/1161ac79.html", + "author": "星の野", + "avatar": "https://bu.dusays.com/2023/10/01/6519291503349.jpg" + }, { "title": "【开源项目】QtScrcpy:一个友好强大的Scrcpy升级版项目", "created": "2024-06-21 19:43", @@ -847,6 +1015,13 @@ "author": "星辰日记", "avatar": "https://cdn.qyliu.top/i/2024/05/31/66595f03d46be.png" }, + { + "title": "光学系统远物镜设计报告", + "created": "2024-06-16 18:46", + "link": "https://tianli-blog.club/%e5%85%89%e5%ad%a6%e7%b3%bb%e7%bb%9f%e8%bf%9c%e7%89%a9%e9%95%9c%e8%ae%be%e8%ae%a1%e6%8a%a5%e5%91%8a/", + "author": "Tianli", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116950412cc.png" + }, { "title": "VMware挂起后无法连接MySQL和Redis问题", "created": "2024-06-16 08:00", @@ -1036,6 +1211,20 @@ "author": "乙未博客", "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f05e2f75c.png" }, + { + "title": "开发了一个 Canvas 2D 渲染引擎", + "created": "2024-05-23 22:15", + "link": "https://www.qcqx.cn/article/8275f29.html", + "author": "轻笑", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" + }, + { + "title": "Canvas 2D 事件", + "created": "2024-05-23 18:52", + "link": "https://www.qcqx.cn/article/5b168750.html", + "author": "轻笑", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" + }, { "title": "什么是网站地图&怎么制作网站地图?", "created": "2024-05-22 17:02", @@ -1043,6 +1232,13 @@ "author": "luo", "avatar": "https://cdn.qyliu.top/i/2024/04/14/661be5ef23b3b.png" }, + { + "title": "Canvas 2D 贝塞尔曲线", + "created": "2024-05-22 10:27", + "link": "https://www.qcqx.cn/article/ba04fd32.html", + "author": "轻笑", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" + }, { "title": "颈椎训练:每个人都应该将其加入日常", "created": "2024-05-22 08:00", @@ -1057,6 +1253,13 @@ "author": "無名小栈", "avatar": "https://cdn.qyliu.top/i/2024/03/21/65fc59764c0be.png" }, + { + "title": "0.22.0版本Memos API介绍", + "created": "2024-05-19 23:40", + "link": "https://byer.top/posts/b9ef7523.html", + "author": "星の野", + "avatar": "https://bu.dusays.com/2023/10/01/6519291503349.jpg" + }, { "title": "五月|焦虑,接受,进步", "created": "2024-05-19 22:23", @@ -1064,6 +1267,13 @@ "author": "AlenLiu", "avatar": "https://cdn.qyliu.top/i/2024/03/31/66097a6d9363f.png" }, + { + "title": "Canvas 2D 进阶", + "created": "2024-05-19 14:52", + "link": "https://www.qcqx.cn/article/995d74ec.html", + "author": "轻笑", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" + }, { "title": "【LSP】微型滚动动画库", "created": "2024-05-19 14:33", @@ -1078,6 +1288,27 @@ "author": "微霞", "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" }, + { + "title": "使用Umami数据魔改about界面", + "created": "2024-05-19 00:16", + "link": "https://byer.top/posts/90d1e7f2.html", + "author": "星の野", + "avatar": "https://bu.dusays.com/2023/10/01/6519291503349.jpg" + }, + { + "title": "将Umami API的数据展现在博客中", + "created": "2024-05-18 21:12", + "link": "https://byer.top/posts/fa30aee5.html", + "author": "星の野", + "avatar": "https://bu.dusays.com/2023/10/01/6519291503349.jpg" + }, + { + "title": "Canvas 2D 基础", + "created": "2024-05-18 20:53", + "link": "https://www.qcqx.cn/article/8c1c45d8.html", + "author": "轻笑", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" + }, { "title": "前端分享 - 滑动阻尼效果", "created": "2024-05-17 17:47", @@ -1176,6 +1407,13 @@ "author": "山岳库博", "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116c3ba58c3.png" }, + { + "title": "Twikoo表情", + "created": "2024-05-09 14:44", + "link": "https://blog.qjqq.cn/posts/829b.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, { "title": "树状数组", "created": "2024-05-08 16:40", @@ -1190,6 +1428,13 @@ "author": "一府", "avatar": "https://cdn.qyliu.top/i/2024/04/19/662145a134a68.png" }, + { + "title": "基于rPPG的心率测算程序设计报告[公开版]", + "created": "2024-05-06 20:23", + "link": "https://tianli-blog.club/rppg/", + "author": "Tianli", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116950412cc.png" + }, { "title": "饿殍:明末千里行-岁大饥,人相食", "created": "2024-05-05 14:10", @@ -1232,6 +1477,13 @@ "author": "葱苓sama", "avatar": "https://cdn.qyliu.top/i/2024/05/03/663458df4e6f0.png" }, + { + "title": "添加来访者卡片", + "created": "2024-04-30 09:56", + "link": "https://blog.qjqq.cn/posts/834f.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, { "title": "Hexo搭建进阶:Vercel部署、主题安装、基础用法", "created": "2024-04-30 05:33", @@ -1274,6 +1526,13 @@ "author": "ChrisKim", "avatar": "https://cdn.qyliu.top/i/2024/06/27/667d880789765.webp" }, + { + "title": "主题资源", + "created": "2024-04-25 15:03", + "link": "https://blog.qjqq.cn/posts/6468.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, { "title": "关于群聊更换的紧急通知", "created": "2024-04-24 21:42", @@ -1281,6 +1540,13 @@ "author": "Akilar", "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" }, + { + "title": "添加那年今日卡片", + "created": "2024-04-24 09:40", + "link": "https://blog.qjqq.cn/posts/155e.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, { "title": "2024-4-20:The bad weather in GuangDong but something wonderful in school", "created": "2024-04-21 19:21", @@ -1309,6 +1575,13 @@ "author": "ChrisKim", "avatar": "https://cdn.qyliu.top/i/2024/06/27/667d880789765.webp" }, + { + "title": "Plane项目管理工具的私有化部署安装方法", + "created": "2024-04-20 16:19", + "link": "https://pipuwong.com/plane-self-hosted", + "author": "皮普", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" + }, { "title": "MySQL安装教程", "created": "2024-04-20 13:13", @@ -1372,6 +1645,13 @@ "author": "AlenLiu", "avatar": "https://cdn.qyliu.top/i/2024/03/31/66097a6d9363f.png" }, + { + "title": "我和 ChatGPT4 把友情链接改成了“朋友圈“", + "created": "2024-04-18 01:43", + "link": "https://pipuwong.com/friend-link-to-moments", + "author": "皮普", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" + }, { "title": "多卡并行", "created": "2024-04-18 00:25", @@ -1414,6 +1694,20 @@ "author": "虹墨", "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659668724466.png" }, + { + "title": "WordPress后台被自动强制退出的解决办法 – Google Quicklink惹的祸", + "created": "2024-04-13 23:37", + "link": "https://pipuwong.com/solution-to-wordpress-backend-automatic-forced-logout", + "author": "皮普", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" + }, + { + "title": "PostChat--让你的网站提前步入AI时代", + "created": "2024-04-12 14:03", + "link": "https://tianli-blog.club/postchat/", + "author": "Tianli", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116950412cc.png" + }, { "title": "Halo博客搭配Memos实现说说功能", "created": "2024-04-11 17:23", @@ -1442,13 +1736,6 @@ "author": "Akilar", "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" }, - { - "title": "Butterfly解决Gitalk密钥暴露的问题", - "created": "2024-04-08 10:42", - "link": "https://www.hitagi.icu/posts/17b458ca/", - "author": "Hitagi", - "avatar": "https://cdn.qyliu.top/i/2024/07/07/668a9e330dc6a.webp" - }, { "title": "关于 DailyHotApi 的重构", "created": "2024-04-08 08:00", @@ -1456,6 +1743,13 @@ "author": "無名小栈", "avatar": "https://cdn.qyliu.top/i/2024/03/21/65fc59764c0be.png" }, + { + "title": "让你的个人网站支持 ios 添加到主屏幕全屏应用", + "created": "2024-04-07 23:29", + "link": "https://pipuwong.com/ios-webapp", + "author": "皮普", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" + }, { "title": "长安公园植物园碎片兼求助", "created": "2024-04-07 16:42", @@ -1659,6 +1953,13 @@ "author": "微霞", "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" }, + { + "title": "说说", + "created": "2024-02-14 02:23", + "link": "https://blog.hesiy.cn/speak/", + "author": "FloatSheep", + "avatar": "https://cdn.qyliu.top/i/2024/07/28/66a6324891ba1.webp" + }, { "title": "世界,您好!", "created": "2024-02-08 11:18", @@ -1729,6 +2030,20 @@ "author": "Ariasaka", "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f40b65114.png" }, + { + "title": "2023年度总结", + "created": "2023-12-31 00:55", + "link": "https://tianli-blog.club/2023%e5%b9%b4%e5%ba%a6%e6%80%bb%e7%bb%93/", + "author": "Tianli", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116950412cc.png" + }, + { + "title": "域名被江苏省公益反诈拦截解决方案", + "created": "2023-12-28 21:01", + "link": "https://tianli-blog.club/%e5%9f%9f%e5%90%8d%e8%a2%ab%e6%b1%9f%e8%8b%8f%e7%9c%81%e5%85%ac%e7%9b%8a%e5%8f%8d%e8%af%88%e6%8b%a6%e6%88%aa%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/", + "author": "Tianli", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116950412cc.png" + }, { "title": "新年倒计时改良&随便说说", "created": "2023-12-25 20:24", @@ -1884,32 +2199,25 @@ "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" }, { - "title": "那些年用过的CSS奇妙用法之能用CSS就不用JS技巧系列", - "created": "2023-08-27 19:22", - "link": "https://blog.anheyu.com/posts/340b.html", - "author": "安知鱼", - "avatar": "https://cdn.qyliu.top/i/2024/04/06/66117080f2460.png" + "title": "关于", + "created": "2023-08-29 03:50", + "link": "https://blog.hesiy.cn/about/", + "author": "FloatSheep", + "avatar": "https://cdn.qyliu.top/i/2024/07/28/66a6324891ba1.webp" }, { - "title": "什么是CDN?它解决了什么难题?国内CDN加Vercel,无服务器使用办法", - "created": "2023-08-26 19:24", - "link": "https://blog.anheyu.com/posts/136a.html", - "author": "安知鱼", - "avatar": "https://cdn.qyliu.top/i/2024/04/06/66117080f2460.png" + "title": "友链", + "created": "2023-08-24 04:49", + "link": "https://blog.hesiy.cn/friends/", + "author": "FloatSheep", + "avatar": "https://cdn.qyliu.top/i/2024/07/28/66a6324891ba1.webp" }, { - "title": "腾讯出品免费logo制作神器AI Logo,腾讯这次真的良心了", - "created": "2023-08-19 18:42", - "link": "https://blog.anheyu.com/posts/8105.html", - "author": "安知鱼", - "avatar": "https://cdn.qyliu.top/i/2024/04/06/66117080f2460.png" - }, - { - "title": "当AI加上PS后让我变的极为振奋(附mac安装ps beta25.0)教程", - "created": "2023-08-18 19:24", - "link": "https://blog.anheyu.com/posts/4eb4.html", - "author": "安知鱼", - "avatar": "https://cdn.qyliu.top/i/2024/04/06/66117080f2460.png" + "title": "友链集装箱", + "created": "2023-08-24 04:49", + "link": "https://blog.hesiy.cn/container/", + "author": "FloatSheep", + "avatar": "https://cdn.qyliu.top/i/2024/07/28/66a6324891ba1.webp" }, { "title": "Swpp Backends 官方文档", @@ -1918,13 +2226,6 @@ "author": "山岳库博", "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116c3ba58c3.png" }, - { - "title": "CNAME解析至cf:分流解析cloudflare处理国外请求", - "created": "2023-07-23 17:55", - "link": "https://blog.anheyu.com/posts/40fd.html", - "author": "安知鱼", - "avatar": "https://cdn.qyliu.top/i/2024/04/06/66117080f2460.png" - }, { "title": "我的英文名", "created": "2023-06-29 21:46", @@ -1973,6 +2274,41 @@ "link": "https://blog.imoyan.top/posts/5f2e.html", "author": "陌颜Hao", "avatar": "https://bu.dusays.com/2024/03/15/65f3fd054c5db.jpg" + }, + { + "title": "利用插件系统,批量替换 Butterfly 主题的 CDN。", + "created": "2022-05-17 20:00", + "link": "https://android99.com/2022/05/17/butterfly-replace-cdn/", + "author": "Android", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66124120884cc.png" + }, + { + "title": "Maya 视口中颜色异常的解决方法", + "created": "2021-12-27 14:00", + "link": "https://android99.com/2021/12/27/maya-viewport-color-problem/", + "author": "Android", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66124120884cc.png" + }, + { + "title": "Butterfly主题 一图流背景与顶部图修改", + "created": "2021-08-10 21:00", + "link": "https://android99.com/2021/08/10/butterfly-top-image-modify/", + "author": "Android", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66124120884cc.png" + }, + { + "title": "关于Pjax与PWA冲突,导致地址栏异常的解决方法。", + "created": "2020-12-18 16:00", + "link": "https://android99.com/2020/12/18/pjax-and-pwa-conflict/", + "author": "Android", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66124120884cc.png" + }, + { + "title": "博客迁移至Hexo,并更名为矩阵。", + "created": "2020-11-18 18:28", + "link": "https://android99.com/2020/11/18/hello-hexo/", + "author": "Android", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66124120884cc.png" } ] } \ No newline at end of file diff --git a/errors.json b/errors.json index dfa781b..e221d30 100644 --- a/errors.json +++ b/errors.json @@ -1,92 +1,47 @@ [ - [ - "Tianli", - "https://tianli-blog.club/", - "https://cdn.qyliu.top/i/2024/04/06/66116950412cc.png" - ], - [ - "星の野", - "https://byer.top/", - "https://bu.dusays.com/2023/10/01/6519291503349.jpg" - ], - [ - "阮一峰", - "https://www.ruanyifeng.com/blog/", - "https://cdn.qyliu.top/i/2024/04/29/662fbca75b9fe.png" - ], - [ - "青桔气球", - "https://blog.qjqq.cn/", - "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" - ], - [ - "Android", - "https://android99.com", - "https://cdn.qyliu.top/i/2024/04/07/66124120884cc.png" - ], [ "Redish", "https://blog.redish101.top/", "https://cdn.qyliu.top/i/2024/04/07/6612417f11b02.png" ], - [ - "Rootlex", - "https://blog.nalex.top", - "https://q2.qlogo.cn/headimg_dl?dst_uin=1736191951&spec=640" - ], - [ - "皮普", - "https://pipuwong.com", - "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" - ], - [ - "理随", - "https://lisui.top/", - "https://cdn.qyliu.top/i/2024/04/07/66123e6aac11c.png" - ], [ "GuKaifeng", "https://gukaifeng.cn/", "https://cdn.qyliu.top/i/2024/04/09/6614ef03406cc.png" ], + [ + "Rootlex", + "https://blog.nalex.top", + "https://q2.qlogo.cn/headimg_dl?dst_uin=1736191951&spec=640" + ], [ "听风小屋", "https://blog.ifeng.asia/", "https://cdn.qyliu.top/i/2024/03/31/6608e2697634c.png" ], + [ + "理随", + "https://lisui.top/", + "https://cdn.qyliu.top/i/2024/04/07/66123e6aac11c.png" + ], [ "茗辰原", "https://mingcy.xyz/", "https://cdn.qyliu.top/i/2024/04/21/66249e0a775f8.png" ], - [ - "往日信笺", - "https://www.xingmail.cn/", - "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" - ], - [ - "微生之最", - "https://www.bbixb.top/", - "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" - ], - [ - "轻笑", - "https://www.qcqx.cn/", - "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" - ], [ "Dreamaker", "https://dreamakerr.cn/", "https://cdn.qyliu.top/i/2024/06/05/66604a6f8dba9.webp" ], - [ - "痕迹小站", - "https://www.henjinet.com/", - "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" - ], [ "云晓晨", "https://www.catchyxc.com/", "https://cdn.qyliu.top/i/2024/06/24/6678d81cb7eae.webp" + ], + [ + "安知鱼", + "https://blog.anheyu.com/", + "https://cdn.qyliu.top/i/2024/04/06/66117080f2460.png" ] ] \ No newline at end of file diff --git a/grab.log b/grab.log index 44079ea..5a84c82 100644 --- a/grab.log +++ b/grab.log @@ -1,3 +1,3 @@ -2024-07-27 17:00:52,303 - INFO - ʼץȡ... -2024-07-27 17:00:52,306 - INFO - ڴ https://blog.qyliu.top/friend.json лȡÿͻȡ 5 ƪ -2024-07-27 17:01:52,138 - INFO - ץȡɹ +2024-07-28 21:23:58,910 - INFO - ʼץȡ... +2024-07-28 21:23:58,914 - INFO - ڴ https://blog.qyliu.top/friend.json лȡÿͻȡ 5 ƪ +2024-07-28 21:25:05,362 - INFO - ץȡɹ diff --git a/readme.md b/readme.md index b74cb7d..ec5c63b 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,7 @@ --- +fclite + # Friend-Circle-Lite [前端展示](https://fc.liushen.fun) | [详细文档](https://blog.qyliu.top/posts/4dc716ec/) @@ -8,6 +10,12 @@ ## 开发进度 +### 2024-07-28 + +* 自部署添加跨域请求 +* 修复内存占用异常问题 +* 将html资源分开存放,实现更加美观的页面 + ### 2024-07-26 * 自部署添加跨域请求 @@ -15,11 +23,16 @@ * 修复PJAX下会多次出现模态框的问题,并且切换页面不消失 * 修复模态框宽度问题,添加日历图标以更加美观 +
+查看更多 ### 2024-07-25 * 自部署正在开发中,仅供测试 * 添加`/errors.json`,用于获取丢失友链数据,提高自定义程度 * 添加`/index.xml`接口的爬取,提高兼容性 +
+ + ## 展示页面 diff --git a/server.py b/server.py index 37ffa08..c3af5e0 100644 --- a/server.py +++ b/server.py @@ -1,9 +1,11 @@ from fastapi import FastAPI -from fastapi.responses import JSONResponse, HTMLResponse +from fastapi.responses import HTMLResponse, JSONResponse +from starlette.middleware.cors import CORSMiddleware import schedule import time import logging import os +import json import random from threading import Lock, Thread @@ -12,20 +14,22 @@ from friend_circle_lite.get_conf import load_config app = FastAPI() +# 添加 CORS 中间件 +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + # 配置日志记录 log_file = "grab.log" logging.basicConfig(filename=log_file, level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') -# 全局变量 -articles_data = { - "statistical_data": {}, - "article_data": [] -} -error_friends_info = [] data_lock = Lock() def fetch_articles(): - global articles_data, error_friends_info logging.info("开始抓取文章...") try: config = load_config("./conf.yaml") @@ -35,10 +39,10 @@ def fetch_articles(): logging.info(f"正在从 {json_url} 中获取,每个博客获取 {article_count} 篇文章") result, errors = fetch_and_process_data(json_url=json_url, count=article_count) sorted_result = sort_articles_by_time(result) - with data_lock: - articles_data["article_data"] = sorted_result["article_data"] - articles_data["statistical_data"] = sorted_result["statistical_data"] - error_friends_info = errors + with open("all.json", "w", encoding="utf-8") as f: + json.dump(sorted_result, f, ensure_ascii=False, indent=2) + with open("errors.json", "w", encoding="utf-8") as f: + json.dump(errors, f, ensure_ascii=False, indent=2) logging.info("文章抓取成功") else: logging.warning("抓取设置在配置中被禁用。") @@ -47,43 +51,49 @@ def fetch_articles(): @app.get("/", response_class=HTMLResponse) async def root(): - html_content = """ - - - - Friend Circle Lite - - -

欢迎使用 Friend Circle Lite

-

这是一个轻量版友链朋友圈,有两种部署方式,其中自部署使用 fastAPI,还有 github action 部署方式,可以很方便的从友链中获取文章并展示到前端。

- - - - """ - return HTMLResponse(content=html_content) + try: + with open('./static/deploy-home.html', 'r', encoding='utf-8') as f: + html_content = f.read() + return HTMLResponse(content=html_content) + except FileNotFoundError: + return HTMLResponse(content="

File not found

", status_code=404) @app.get('/all') async def get_all_articles(): - with data_lock: + try: + with open('all.json', 'r', encoding='utf-8') as f: + articles_data = json.load(f) return JSONResponse(content=articles_data) + except FileNotFoundError: + return JSONResponse(content={"error": "File not found"}, status_code=404) + except json.JSONDecodeError: + return JSONResponse(content={"error": "Failed to decode JSON"}, status_code=500) @app.get('/errors') async def get_error_friends(): - with data_lock: - return JSONResponse(content=error_friends_info) + try: + with open('errors.json', 'r', encoding='utf-8') as f: + errors_data = json.load(f) + return JSONResponse(content=errors_data) + except FileNotFoundError: + return JSONResponse(content={"error": "File not found"}, status_code=404) + except json.JSONDecodeError: + return JSONResponse(content={"error": "Failed to decode JSON"}, status_code=500) @app.get('/random') async def get_random_article(): - with data_lock: - if articles_data["article_data"]: + try: + with open('all.json', 'r', encoding='utf-8') as f: + articles_data = json.load(f) + if articles_data.get("article_data"): random_article = random.choice(articles_data["article_data"]) return JSONResponse(content=random_article) else: return JSONResponse(content={"error": "No articles available"}, status_code=404) + except FileNotFoundError: + return JSONResponse(content={"error": "File not found"}, status_code=404) + except json.JSONDecodeError: + return JSONResponse(content={"error": "Failed to decode JSON"}, status_code=500) def schedule_tasks(): schedule.every(4).hours.do(fetch_articles) diff --git a/static/avatar.png b/static/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..2221faa377b3131f23f2aaf4aea72fba576fbc57 GIT binary patch literal 21194 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 literal 0 HcmV?d00001 diff --git a/static/deploy-home.html b/static/deploy-home.html new file mode 100644 index 0000000..42276fa --- /dev/null +++ b/static/deploy-home.html @@ -0,0 +1,65 @@ + + + + + + + 轻量友链朋友圈 + + + + +
+ Avatar +

Friend-Circle-Lite
服务已运行

+ +
+ +