From a6dc969716e2f074e95ecc72b3e41c7ce7c0f1ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=B3=E7=A5=9E?= <3162475700@qq.com> Date: Tue, 2 Jul 2024 10:30:10 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=A5=E6=B5=8B=E8=AF=95action=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=AD=A3=E5=B8=B8=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/friend_circle_lite.yml | 40 + all.json | 1873 ++++++++++++++++++++++ conf.yml | 6 + dev_test/main.ipynb | 227 +++ friend_circle_lite/__init__.py | 0 friend_circle_lite/get_conf.py | 14 + friend_circle_lite/get_info.py | 264 +++ requirements.txt | 5 + run.py | 16 + 9 files changed, 2445 insertions(+) create mode 100644 .github/workflows/friend_circle_lite.yml create mode 100644 all.json create mode 100644 conf.yml create mode 100644 dev_test/main.ipynb create mode 100644 friend_circle_lite/__init__.py create mode 100644 friend_circle_lite/get_conf.py create mode 100644 friend_circle_lite/get_info.py create mode 100644 requirements.txt create mode 100644 run.py diff --git a/.github/workflows/friend_circle_lite.yml b/.github/workflows/friend_circle_lite.yml new file mode 100644 index 0000000..29e7b54 --- /dev/null +++ b/.github/workflows/friend_circle_lite.yml @@ -0,0 +1,40 @@ +name: RSS Check + +on: + schedule: + - cron: "0 22 */2 * *" + workflow_dispatch: + +jobs: + check_rss: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Check RSS feeds + run: python run.py + + - name: git config + run: | + git config --global user.name 'GitHub Actions' + git config --global user.email 'actions@github.com' + + - name: Commit changes + env: + PAT_TOKEN: ${{ secrets.PAT_TOKEN }} + run: | + git add . + git commit -m "⏱️GitHub Action定时更新" + git push https://x-access-token:${{ secrets.PAT_TOKEN }}@github.com/${{ github.repository }}.git main diff --git a/all.json b/all.json new file mode 100644 index 0000000..0977f25 --- /dev/null +++ b/all.json @@ -0,0 +1,1873 @@ +{ + "statistical_data": { + "friends_num": 77, + "active_num": 59, + "error_num": 18, + "article_num": 266, + "last_updated_time": "2024-07-02 09:37:07" + }, + "article_data": [ + { + "title": "给 Typecho 默认自带模板增加宽度", + "created": "2024-07-02 09:18", + "link": "https://www.yvii.cn/archives/2018.html", + "author": "乙未博客", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f05e2f75c.png" + }, + { + "title": "【日记】2024.07.01", + "created": "2024-07-01 16:20", + "link": "https://www.xingmail.cn/journal-of-2024-07-01/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, + { + "title": "使用 Docker 部署 Gitea Actions 的 Runner", + "created": "2024-07-01 16:00", + "link": "https://dusays.com/723/", + "author": "杜老师说", + "avatar": "https://cdn.dusays.com/avatar.png" + }, + { + "title": "电信诈骗的阴影:希望", + "created": "2024-07-01 15:14", + "link": "https://yjvc.cn/index.php/archives/1377/", + "author": "刘郎阁", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/66229406a68df.png" + }, + { + "title": "东软软件园实习日记", + "created": "2024-07-01 08:39", + "link": "https://blog.qyliu.top/posts/13e6e155/", + "author": "清羽飞扬", + "avatar": "https://blog.qyliu.top/info/avatar.ico" + }, + { + "title": "宁夏", + "created": "2024-07-01 02:57", + "link": "https://h4ck.org.cn/2024/07/17413", + "author": "obaby", + "avatar": "https://cdn.qyliu.top/i/2024/04/15/661d443b5359c.png" + }, + { + "title": "使用Aspose.Words将word转PDF并添加公章", + "created": "2024-07-01 02:43", + "link": "https://blog.lovelu.top/p/596c9ceb.html", + "author": "满心记", + "avatar": "https://bu.dusays.com/2023/01/29/63d5bf7fa0d2c.png" + }, + { + "title": "重新启用我的小米手环5", + "created": "2024-07-01 02:14", + "link": "https://blog.lovelu.top/p/146ebd6.html", + "author": "满心记", + "avatar": "https://bu.dusays.com/2023/01/29/63d5bf7fa0d2c.png" + }, + { + "title": "IDM:广受欢迎的高速下载管理器", + "created": "2024-06-30 16:20", + "link": "https://talen.top/posts/b832248a/", + "author": "M.Talen", + "avatar": "https://cdn.qyliu.top/i/2024/05/23/664eda97bdec6.png" + }, + { + "title": "【日记】2024.06.30", + "created": "2024-06-30 15:43", + "link": "https://www.xingmail.cn/journal-of-2024-06-30/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, + { + "title": "期盼已久的武威高铁它来了!", + "created": "2024-06-29 16:14", + "link": "https://xiangming.site/794.html", + "author": "湘铭", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/6622928fc416c.png" + }, + { + "title": "月度随笔|2024-06", + "created": "2024-06-29 16:00", + "link": "https://blog.xing-ye.top/posts/6cb87527/", + "author": "XINGYE", + "avatar": "https://cdn.qyliu.top/i/2024/05/18/6648b84c682e1.png" + }, + { + "title": "【日记】2024.06.29", + "created": "2024-06-29 15:53", + "link": "https://www.xingmail.cn/journal-of-2024-06-29/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, + { + "title": "使用cloudflare page 搭建dockerhub代理", + "created": "2024-06-29 14:28", + "link": "https://xiangming.site/784.html", + "author": "湘铭", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/6622928fc416c.png" + }, + { + "title": "又被DDOS了,各位大佬们求放过!", + "created": "2024-06-29 08:37", + "link": "https://xiangming.site/781.html", + "author": "湘铭", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/6622928fc416c.png" + }, + { + "title": "【谈谈当下】青少年口中的垃圾话语", + "created": "2024-06-29 06:06", + "link": "https://www.yt-blog.top/65052/", + "author": "Fgaoxing", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116a9cd62d7.png" + }, + { + "title": "使用 Docker 部署 Gitea 新一代的代码托管平台", + "created": "2024-06-28 16:00", + "link": "https://dusays.com/722/", + "author": "杜老师说", + "avatar": "https://cdn.dusays.com/avatar.png" + }, + { + "title": "【日记】2024.06.28", + "created": "2024-06-28 15:51", + "link": "https://www.xingmail.cn/journal-of-2024-06-28/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, + { + "title": "Pip版本更新导致友圈爬虫异常", + "created": "2024-06-28 11:28", + "link": "https://blog.june-pj.cn/posts/5715eb81/", + "author": "June", + "avatar": "https://cdn.qyliu.top/i/2024/03/22/65fc5b18a2574.png" + }, + { + "title": "科技爱好者周刊(第 306 期):信息就像糖一样上瘾", + "created": "2024-06-28 00:15", + "link": "http://www.ruanyifeng.com/blog/2024/06/weekly-issue-306.html", + "author": "阮一峰", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbca75b9fe.png" + }, + { + "title": "【日记】2024.06.27", + "created": "2024-06-27 15:16", + "link": "https://www.xingmail.cn/journal-of-2024-06-27/", + "author": "往日信笺", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf476a6d8d.png" + }, + { + "title": "Butterfly的魔改教程:最新评论页", + "created": "2024-06-27 12:10", + "link": "https://meuicat.com/blog/89/", + "author": "爱吃肉的猫", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66123cff10a83.png" + }, + { + "title": "地域黑", + "created": "2024-06-27 09:36", + "link": "https://h4ck.org.cn/2024/06/17403", + "author": "obaby", + "avatar": "https://cdn.qyliu.top/i/2024/04/15/661d443b5359c.png" + }, + { + "title": "为你的网站添加好看的悬浮音乐播放器-小枫音乐播放器/APlayer & MetingJS", + "created": "2024-06-27 04: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-26 20:13", + "link": "https://www.gan1ser.top/post/b9a95f5e.html", + "author": "GanSer", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbba91addc.png" + }, + { + "title": "vps剩余价值计算器", + "created": "2024-06-26 15:04", + "link": "https://xiangming.site/779.html", + "author": "湘铭", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/6622928fc416c.png" + }, + { + "title": "饮品测评记录「第二十一期」", + "created": "2024-06-26 14:45", + "link": "https://blog.starsharbor.com/posts/beverage-evaluation-record-21/", + "author": "星港Star", + "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" + }, + { + "title": "浅谈前端各种模块化", + "created": "2024-06-26 03:35", + "link": "https://fe32.top/articles/moudel001/", + "author": "唐志远", + "avatar": "https://bu.dusays.com/2022/05/02/626f92e193879.jpg" + }, + { + "title": "商家店铺简单实现扫一扫连接WiFi", + "created": "2024-06-26 02:57", + "link": "https://www.lyszm.com/917.html", + "author": "六月是只猫", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66597328bdd51.png" + }, + { + "title": "免费搭建 Docker 镜像存储库解决拉取问题", + "created": "2024-06-25 16:00", + "link": "https://dusays.com/721/", + "author": "杜老师说", + "avatar": "https://cdn.dusays.com/avatar.png" + }, + { + "title": "marimekko|从喜茶联动认识一个新品牌", + "created": "2024-06-24 17:00", + "link": "https://blog.starsharbor.com/posts/linkage-marimekko/", + "author": "星港Star", + "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" + }, + { + "title": "为什么总感觉别人的日子熠熠生辉,自己的却一塌糊涂?", + "created": "2024-06-24 10:01", + "link": "https://xiangming.site/775.html", + "author": "湘铭", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/6622928fc416c.png" + }, + { + "title": "食人族,抓了个打工人,然后把他给放了", + "created": "2024-06-24 01:17", + "link": "https://h4ck.org.cn/2024/06/17395", + "author": "obaby", + "avatar": "https://cdn.qyliu.top/i/2024/04/15/661d443b5359c.png" + }, + { + "title": "用Defender Control小工具实现永久关闭在Windows10/11中的Windows Defender系统占用问题", + "created": "2024-06-24 00:57", + "link": "https://www.bbixb.top/archives/1360", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, + { + "title": "Github Action实现友链状态检测", + "created": "2024-06-23 17:00", + "link": "https://blog.qyliu.top/posts/c2262998/", + "author": "清羽飞扬", + "avatar": "https://blog.qyliu.top/info/avatar.ico" + }, + { + "title": "再看一遍这期让我深受感动的节目,宇宙星辰亦是我向往的地方", + "created": "2024-06-23 14:17", + "link": "https://www.thyuu.com/78325", + "author": "风记星辰", + "avatar": "https://std.thyuu.com/logo.svg" + }, + { + "title": "Solitude主题魔改(二):侧边栏个性时钟", + "created": "2024-06-23 12: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 12:07", + "link": "https://www.gan1ser.top/post/ab4c01cf.html", + "author": "GanSer", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbba91addc.png" + }, + { + "title": "Cloudreve捐助版Docker部署指南", + "created": "2024-06-23 10:15", + "link": "https://www.lxink.cn/posts/73544047.html", + "author": "凉心", + "avatar": "https://cdn.qyliu.top/i/2024/05/24/66500d797ac38.png" + }, + { + "title": "饮品测评记录「第二十期」(喜茶特刊)", + "created": "2024-06-23 07:00", + "link": "https://blog.starsharbor.com/posts/beverage-evaluation-record-20/", + "author": "星港Star", + "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" + }, + { + "title": "为你的博客注入活力:添加实时动态时钟与个性化的温馨问候语", + "created": "2024-06-22 22:08", + "link": "https://www.lyszm.com/914.html", + "author": "六月是只猫", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66597328bdd51.png" + }, + { + "title": "使用 imgproxy 对接 MinIO 实现图片处理", + "created": "2024-06-22 16:00", + "link": "https://dusays.com/720/", + "author": "杜老师说", + "avatar": "https://cdn.dusays.com/avatar.png" + }, + { + "title": "个人博客图床存储实践方案", + "created": "2024-06-22 16:00", + "link": "https://blog.xing-ye.top/posts/ae793e83/", + "author": "XINGYE", + "avatar": "https://cdn.qyliu.top/i/2024/05/18/6648b84c682e1.png" + }, + { + "title": "开启新的交流通道“三言两语”留言板块", + "created": "2024-06-22 14:36", + "link": "https://yjvc.cn/index.php/archives/1376/", + "author": "刘郎阁", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/66229406a68df.png" + }, + { + "title": "黔驴技穷 — 山穷水复疑无路 柳暗花明又一村", + "created": "2024-06-22 12:54", + "link": "https://h4ck.org.cn/2024/06/17385", + "author": "obaby", + "avatar": "https://cdn.qyliu.top/i/2024/04/15/661d443b5359c.png" + }, + { + "title": "分享一款TuneFree一款免费听歌软件,提供网页/Windows/安卓三端支持", + "created": "2024-06-22 10:34", + "link": "https://www.bbixb.top/archives/1357", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, + { + "title": "RM 和 EDF 任务调度算法在μCOSII 上的实现", + "created": "2024-06-22 08:29", + "link": "https://uuanqin.top/p/b1c2eea4/", + "author": "半方池水", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf5b9d3d5c.png" + }, + { + "title": "tiwate-untitled", + "created": "2024-06-21 15:40", + "link": "https://blog.ciraos.top/p/cbeed0c0/", + "author": "葱苓sama", + "avatar": "https://cdn.qyliu.top/i/2024/05/03/663458df4e6f0.png" + }, + { + "title": "Solitude主题魔改(一):首页三栏显示", + "created": "2024-06-21 14:01", + "link": "https://byer.top/posts/1161ac79.html", + "author": "星の野", + "avatar": "https://bu.dusays.com/2023/10/01/6519291503349.jpg" + }, + { + "title": "使用Pake简单将网页生成轻量级桌面应用软件,可在Windows/Linux/macos中免费使用", + "created": "2024-06-21 11:15", + "link": "https://www.bbixb.top/archives/1354", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, + { + "title": "让Meting API解锁音乐开发新可能", + "created": "2024-06-21 08:34", + "link": "https://talen.top/posts/833fcabb/", + "author": "M.Talen", + "avatar": "https://cdn.qyliu.top/i/2024/05/23/664eda97bdec6.png" + }, + { + "title": "科技爱好者周刊(第 305 期):随机数,这是一个问题", + "created": "2024-06-21 00:13", + "link": "http://www.ruanyifeng.com/blog/2024/06/weekly-issue-305.html", + "author": "阮一峰", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbca75b9fe.png" + }, + { + "title": "WordPress与Jetpack联手,永久免费为图片提供缓存CDN加速服务", + "created": "2024-06-20 22:10", + "link": "https://www.lyszm.com/911.html", + "author": "六月是只猫", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66597328bdd51.png" + }, + { + "title": "谁发的毒誓", + "created": "2024-06-20 05:41", + "link": "https://yjvc.cn/index.php/archives/1358/", + "author": "刘郎阁", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/66229406a68df.png" + }, + { + "title": "新配了一个专门玩英雄联盟的台式机主机,分享下配置和过程", + "created": "2024-06-20 01:55", + "link": "https://blog.zhheo.com/p/9a18f6bb.html", + "author": "张洪Heo", + "avatar": "https://bu.dusays.com/2022/12/28/63ac2812183aa.png" + }, + { + "title": "解决iOS邮箱使用QQ邮箱账户无法发送邮件,连接发信服务器失败问题", + "created": "2024-06-20 01:53", + "link": "https://blog.zhheo.com/p/cb3f5ed0.html", + "author": "张洪Heo", + "avatar": "https://bu.dusays.com/2022/12/28/63ac2812183aa.png" + }, + { + "title": "温病与伤寒", + "created": "2024-06-19 23:11", + "link": "https://www.henjinet.com/archives/wen-bing-shang-han.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "FAST OS DOCKER 容器管理器的安装与使用", + "created": "2024-06-19 16:00", + "link": "https://dusays.com/719/", + "author": "杜老师说", + "avatar": "https://cdn.dusays.com/avatar.png" + }, + { + "title": "要排除的文件已经被上传到远程Git仓库怎么办", + "created": "2024-06-19 09:43", + "link": "https://blog.zhheo.com/p/faf797ab.html", + "author": "张洪Heo", + "avatar": "https://bu.dusays.com/2022/12/28/63ac2812183aa.png" + }, + { + "title": "VSLite 原理解析与本地化部署", + "created": "2024-06-19 09:42", + "link": "https://www.imaegoo.com/2024/vslite-offline/", + "author": "虹墨", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659668724466.png" + }, + { + "title": "Uniapp 下安卓的权限申请", + "created": "2024-06-19 06:20", + "link": "https://h4ck.org.cn/2024/06/17361", + "author": "obaby", + "avatar": "https://cdn.qyliu.top/i/2024/04/15/661d443b5359c.png" + }, + { + "title": "集合及征集常用的WordPress免费插件", + "created": "2024-06-19 01:39", + "link": "https://www.thyuu.com/78310", + "author": "风记星辰", + "avatar": "https://std.thyuu.com/logo.svg" + }, + { + "title": "探索100个充满乐趣与创意的精彩网站", + "created": "2024-06-18 23:03", + "link": "https://www.lyszm.com/904.html", + "author": "六月是只猫", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66597328bdd51.png" + }, + { + "title": "假期出行记录|饮品测评特刊(拖更版)", + "created": "2024-06-18 09:55", + "link": "https://blog.starsharbor.com/posts/trip-record&beverage-evaluation/", + "author": "星港Star", + "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" + }, + { + "title": "封面被 Linux QQ 官方用了,但是有一些小缺陷", + "created": "2024-06-18 05:23", + "link": "https://blog.zhilu.cyou/2024/cover-copied/", + "author": "纸鹿本鹿", + "avatar": "https://cdn.qyliu.top/i/2024/06/02/665c869ded7cd.png" + }, + { + "title": "高考结束了,再来回顾一下这个东北男人句句没有废话的话", + "created": "2024-06-18 01:27", + "link": "https://www.thyuu.com/78298", + "author": "风记星辰", + "avatar": "https://std.thyuu.com/logo.svg" + }, + { + "title": "昨夜雨,今日事", + "created": "2024-06-17 13:00", + "link": "https://yjvc.cn/index.php/archives/1313/", + "author": "刘郎阁", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/66229406a68df.png" + }, + { + "title": "Mac安装java17(openjdk@17)支持M系列芯片和intel芯片", + "created": "2024-06-17 02:46", + "link": "https://blog.zhheo.com/p/6243d392.html", + "author": "张洪Heo", + "avatar": "https://bu.dusays.com/2022/12/28/63ac2812183aa.png" + }, + { + "title": "一篇文章写出联想电脑在Windows10/11中快捷键 Fn+Q 无反应、切换快捷键时无图标失效解决方案", + "created": "2024-06-17 01:47", + "link": "https://www.bbixb.top/archives/1348", + "author": "微生之最", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/66351f5b62b65.png" + }, + { + "title": "风记星辰的参考与设计:页码按钮、全局动态面板", + "created": "2024-06-17 01:43", + "link": "https://www.thyuu.com/78287", + "author": "风记星辰", + "avatar": "https://std.thyuu.com/logo.svg" + }, + { + "title": "安全跳转页面·插件版", + "created": "2024-06-16 17:00", + "link": "https://blog.qyliu.top/posts/1dfd1f41/", + "author": "清羽飞扬", + "avatar": "https://blog.qyliu.top/info/avatar.ico" + }, + { + "title": "Windows 终端体验优化指南", + "created": "2024-06-16 14:48", + "link": "https://blog.zhilu.cyou/2024/windows-terminal/", + "author": "纸鹿本鹿", + "avatar": "https://cdn.qyliu.top/i/2024/06/02/665c869ded7cd.png" + }, + { + "title": "夜景随拍", + "created": "2024-06-16 13:42", + "link": "https://blog.xsot.cn/archives/snap-memory-1.html", + "author": "星辰日记", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66595f03d46be.png" + }, + { + "title": "IMG加载默认图备用方案", + "created": "2024-06-16 13:35", + "link": "https://yjvc.cn/index.php/archives/1308/", + "author": "刘郎阁", + "avatar": "https://cdn.qyliu.top/i/2024/04/19/66229406a68df.png" + }, + { + "title": "光学系统远物镜设计报告", + "created": "2024-06-16 10: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": "一款二次元风格独具匠心的个人引导页HTML源码", + "created": "2024-06-16 03:04", + "link": "https://www.lyszm.com/899.html", + "author": "六月是只猫", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66597328bdd51.png" + }, + { + "title": "风记得的第1475天星辰:WindFul.CN 备案通过、Tabular-nums 字体特性、Red Hat 字体家族、中文与英文字体混合排版见解及设计倡导", + "created": "2024-06-15 16:49", + "link": "https://www.thyuu.com/78269", + "author": "风记星辰", + "avatar": "https://std.thyuu.com/logo.svg" + }, + { + "title": "VMware挂起后无法连接MySQL和Redis问题", + "created": "2024-06-15 16:00", + "link": "https://blog.xing-ye.top/posts/7b314330/", + "author": "XINGYE", + "avatar": "https://cdn.qyliu.top/i/2024/05/18/6648b84c682e1.png" + }, + { + "title": "实用教程:更换 prismjs 代码高亮", + "created": "2024-06-15 10:00", + "link": "https://www.efu.me/posts/ad1f5ca2.html", + "author": "Efu", + "avatar": "https://cdn.qyliu.top/i/2024/04/26/662bcda2afd5d.png" + }, + { + "title": "是时候去体验下 Apple Vision Pro 了", + "created": "2024-06-14 08:19", + "link": "https://blog.zhheo.com/p/802d5b6b.html", + "author": "张洪Heo", + "avatar": "https://bu.dusays.com/2022/12/28/63ac2812183aa.png" + }, + { + "title": "科技爱好者周刊(第 304 期):最受欢迎的颜色", + "created": "2024-06-14 00:13", + "link": "http://www.ruanyifeng.com/blog/2024/06/weekly-issue-304.html", + "author": "阮一峰", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbca75b9fe.png" + }, + { + "title": "零基础Docker入门指南", + "created": "2024-06-13 14:54", + "link": "https://talen.top/posts/869715fc/", + "author": "M.Talen", + "avatar": "https://cdn.qyliu.top/i/2024/05/23/664eda97bdec6.png" + }, + { + "title": "Typora 免费版本 or 正式版的绿色使用", + "created": "2024-06-13 04:02", + "link": "https://uuanqin.top/p/43ae38fe/", + "author": "半方池水", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf5b9d3d5c.png" + }, + { + "title": "CSAPP LAB-5 手写动态存储分配器", + "created": "2024-06-13 04:01", + "link": "https://uuanqin.top/p/3eb1abc7/", + "author": "半方池水", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf5b9d3d5c.png" + }, + { + "title": "离歌不夜天", + "created": "2024-06-12 14:25", + "link": "https://meuicat.com/blog/88/", + "author": "爱吃肉的猫", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66123cff10a83.png" + }, + { + "title": "信创银河麒麟高级服务器操作系统 V10 安装无头浏览器 Chromium", + "created": "2024-06-12 10:08", + "link": "https://www.imaegoo.com/2024/kylin-chromium/", + "author": "虹墨", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659668724466.png" + }, + { + "title": "端午节大梅沙之旅", + "created": "2024-06-12 09:16", + "link": "https://blog.imoyan.top/posts/2dd7.html", + "author": "陌颜Hao", + "avatar": "https://bu.dusays.com/2024/03/15/65f3fd054c5db.jpg" + }, + { + "title": "实用教程:R4AGv2 安装 OpenWrt", + "created": "2024-06-11 16:00", + "link": "https://www.efu.me/posts/7b82dadc.html", + "author": "Efu", + "avatar": "https://cdn.qyliu.top/i/2024/04/26/662bcda2afd5d.png" + }, + { + "title": "Argon主题美化", + "created": "2024-06-11 10:31", + "link": "https://www.bokeLhc.cn/year2024/monthnum06/day11/293.html", + "author": "luo", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661be5ef23b3b.png" + }, + { + "title": "端午抽空去东湖磨山风景区走了一圈", + "created": "2024-06-11 06:12", + "link": "https://blog.lovelu.top/p/85560c4e.html", + "author": "满心记", + "avatar": "https://bu.dusays.com/2023/01/29/63d5bf7fa0d2c.png" + }, + { + "title": "CPrimerPlus-第三章-数据和C[持续更新中]", + "created": "2024-06-09 05:20", + "link": "https://blog.ciraos.top/p/ac068839/", + "author": "葱苓sama", + "avatar": "https://cdn.qyliu.top/i/2024/05/03/663458df4e6f0.png" + }, + { + "title": "张家界游记", + "created": "2024-06-08 22:13", + "link": "https://blog.june-pj.cn/posts/a46d76f0/", + "author": "June", + "avatar": "https://cdn.qyliu.top/i/2024/03/22/65fc5b18a2574.png" + }, + { + "title": "hexo + github-action持续集成", + "created": "2024-06-07 09:18", + "link": "http://blog.awaae001.top/posts/26785.html", + "author": "呓语梦轩", + "avatar": "https://cdn.qyliu.top/i/2024/03/30/660769346d538.jpg" + }, + { + "title": "今天去看了部电影 - 维和部队", + "created": "2024-06-07 07:19", + "link": "https://blog.lovelu.top/p/db10a71.html", + "author": "满心记", + "avatar": "https://bu.dusays.com/2023/01/29/63d5bf7fa0d2c.png" + }, + { + "title": "给办公电脑换两根16G内存条", + "created": "2024-06-07 06:56", + "link": "https://blog.lovelu.top/p/69c1c6c4.html", + "author": "满心记", + "avatar": "https://bu.dusays.com/2023/01/29/63d5bf7fa0d2c.png" + }, + { + "title": "大疆 Mini 4K 初体验", + "created": "2024-06-07 05:35", + "link": "https://blog.xsot.cn/archives/dji-mini4k.html", + "author": "星辰日记", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66595f03d46be.png" + }, + { + "title": "服务器最佳搭档,宝塔和1Panel的部署与选择", + "created": "2024-06-05 17:07", + "link": "https://talen.top/posts/6c819fda/", + "author": "M.Talen", + "avatar": "https://cdn.qyliu.top/i/2024/05/23/664eda97bdec6.png" + }, + { + "title": "Alist宝塔部署及其美化", + "created": "2024-06-04 11:24", + "link": "https://blog.qyliu.top/posts/a84f5e47/", + "author": "清羽飞扬", + "avatar": "https://blog.qyliu.top/info/avatar.ico" + }, + { + "title": "从零开始制作一个Butterfly主题", + "created": "2024-06-04 04:25", + "link": "https://blog.imoyan.top/posts/e86c.html", + "author": "陌颜Hao", + "avatar": "https://bu.dusays.com/2024/03/15/65f3fd054c5db.jpg" + }, + { + "title": "有问题,就要讲出来。", + "created": "2024-06-04 00:02", + "link": "https://blog.zhilu.cyou/2024/problem-solved/", + "author": "纸鹿本鹿", + "avatar": "https://cdn.qyliu.top/i/2024/06/02/665c869ded7cd.png" + }, + { + "title": "好看的电脑壁纸", + "created": "2024-06-03 14:21", + "link": "https://www.bokeLhc.cn/year2024/monthnum06/day03/274.html", + "author": "luo", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661be5ef23b3b.png" + }, + { + "title": "WordPress自助友链申请", + "created": "2024-06-03 09:22", + "link": "https://www.bokeLhc.cn/year2024/monthnum06/day03/266.html", + "author": "luo", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661be5ef23b3b.png" + }, + { + "title": "CSAPP LAB-4 代码优化", + "created": "2024-06-03 05:01", + "link": "https://uuanqin.top/p/9d6b717/", + "author": "半方池水", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf5b9d3d5c.png" + }, + { + "title": "FinalShell:功能强大的服务器管理和远程连接工具", + "created": "2024-06-02 16:30", + "link": "https://talen.top/posts/161ab782/", + "author": "M.Talen", + "avatar": "https://cdn.qyliu.top/i/2024/05/23/664eda97bdec6.png" + }, + { + "title": "《福格行为模型》全书随记", + "created": "2024-06-02 16:00", + "link": "https://blog.xing-ye.top/posts/1a6413b1/", + "author": "XINGYE", + "avatar": "https://cdn.qyliu.top/i/2024/05/18/6648b84c682e1.png" + }, + { + "title": "友链区JavaScript组件-重做版", + "created": "2024-06-02 06:53", + "link": "http://blog.awaae001.top/posts/52004.html", + "author": "呓语梦轩", + "avatar": "https://cdn.qyliu.top/i/2024/03/30/660769346d538.jpg" + }, + { + "title": "RuoYi-Vue", + "created": "2024-06-01 16:00", + "link": "https://blog.xing-ye.top/posts/c9b9af20/", + "author": "XINGYE", + "avatar": "https://cdn.qyliu.top/i/2024/05/18/6648b84c682e1.png" + }, + { + "title": "巴勒斯坦儿童长不大 AMANI", + "created": "2024-06-01 09:54", + "link": "https://www.yvii.cn/archives/2017.html", + "author": "乙未博客", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f05e2f75c.png" + }, + { + "title": "饮品测评记录「第十九期」", + "created": "2024-05-31 18:10", + "link": "https://blog.starsharbor.com/posts/beverage-evaluation-record-19/", + "author": "星港Star", + "avatar": "https://bu.dusays.com/2023/09/27/6513053bebdb2.webp" + }, + { + "title": "计算机网络期末总复习", + "created": "2024-05-30 16:48", + "link": "https://blog.qyliu.top/posts/8dfa25e1/", + "author": "清羽飞扬", + "avatar": "https://blog.qyliu.top/info/avatar.ico" + }, + { + "title": "2024-05小记", + "created": "2024-05-26 21:18", + "link": "https://blog.sinzmise.top/posts/10021/", + "author": "星空故事", + "avatar": "https://cdn.qyliu.top/i/2024/04/24/6628f767880fa.png" + }, + { + "title": "Butterfly美化文章底部分享打赏按钮", + "created": "2024-05-26 15:00", + "link": "https://blog.june-pj.cn/posts/d228946e/", + "author": "June", + "avatar": "https://cdn.qyliu.top/i/2024/03/22/65fc5b18a2574.png" + }, + { + "title": "不蒜子统计私有化部署", + "created": "2024-05-26 10:04", + "link": "https://www.lxink.cn/posts/815893be.html", + "author": "凉心", + "avatar": "https://cdn.qyliu.top/i/2024/05/24/66500d797ac38.png" + }, + { + "title": "一周年-忽而回望,不知光阴几何", + "created": "2024-05-26 07:38", + "link": "http://blog.awaae001.top/posts/56520.html", + "author": "呓语梦轩", + "avatar": "https://cdn.qyliu.top/i/2024/03/30/660769346d538.jpg" + }, + { + "title": "CSAPP LAB-3 缓冲区溢出炸弹", + "created": "2024-05-26 07:38", + "link": "https://uuanqin.top/p/67787353/", + "author": "半方池水", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661bf5b9d3d5c.png" + }, + { + "title": "Ruffle测试", + "created": "2024-05-25 21:12", + "link": "https://blog.sinzmise.top/posts/57692/", + "author": "星空故事", + "avatar": "https://cdn.qyliu.top/i/2024/04/24/6628f767880fa.png" + }, + { + "title": "Linux 系统 CUDA 多版本共存以及切换", + "created": "2024-05-24 05:50", + "link": "https://www.zouht.com/3754.html", + "author": "ChrisKim", + "avatar": "https://cdn.qyliu.top/i/2024/06/27/667d880789765.webp" + }, + { + "title": "个人图床解决方案(PicGo+对象存储)", + "created": "2024-05-23 22:35", + "link": "https://www.yvii.cn/archives/2014.html", + "author": "乙未博客", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f05e2f75c.png" + }, + { + "title": "十六进制颜色代码", + "created": "2024-05-23 21:57", + "link": "https://www.yvii.cn/archives/2013.html", + "author": "乙未博客", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f05e2f75c.png" + }, + { + "title": "免费对象储存推荐", + "created": "2024-05-23 21:49", + "link": "https://www.yvii.cn/archives/2012.html", + "author": "乙未博客", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f05e2f75c.png" + }, + { + "title": "开发了一个 Canvas 2D 渲染引擎", + "created": "2024-05-23 14: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 10:52", + "link": "https://www.qcqx.cn/article/5b168750.html", + "author": "轻笑", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" + }, + { + "title": "2024版IDEA与WebStrom激活教程", + "created": "2024-05-22 17:30", + "link": "https://blog.june-pj.cn/posts/b9afa603/", + "author": "June", + "avatar": "https://cdn.qyliu.top/i/2024/03/22/65fc5b18a2574.png" + }, + { + "title": "什么是网站地图&怎么制作网站地图?", + "created": "2024-05-22 09:02", + "link": "https://www.bokeLhc.cn/year2024/monthnum05/day22/221.html", + "author": "luo", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661be5ef23b3b.png" + }, + { + "title": "Canvas 2D 贝塞尔曲线", + "created": "2024-05-22 02:27", + "link": "https://www.qcqx.cn/article/ba04fd32.html", + "author": "轻笑", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659628eddf20.png" + }, + { + "title": "0.22.0版本Memos API介绍", + "created": "2024-05-19 15:40", + "link": "https://byer.top/posts/b9ef7523.html", + "author": "星の野", + "avatar": "https://bu.dusays.com/2023/10/01/6519291503349.jpg" + }, + { + "title": "Canvas 2D 进阶", + "created": "2024-05-19 06: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 06:33", + "link": "https://www.yt-blog.top/7383/", + "author": "Fgaoxing", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116a9cd62d7.png" + }, + { + "title": "malloc 的微浅理解", + "created": "2024-05-19 05:04", + "link": "https://yuuu.org/post/24530.html", + "author": "微霞", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" + }, + { + "title": "使用Umami数据魔改about界面", + "created": "2024-05-18 16: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 13: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 12: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 09:47", + "link": "https://meuicat.com/blog/87/", + "author": "爱吃肉的猫", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66123cff10a83.png" + }, + { + "title": "南宁「青秀山」", + "created": "2024-05-16 14:10", + "link": "https://www.bokeLhc.cn/year2024/monthnum05/day16/207.html", + "author": "luo", + "avatar": "https://cdn.qyliu.top/i/2024/04/14/661be5ef23b3b.png" + }, + { + "title": "Minecraft 15周年:游戏半价折扣", + "created": "2024-05-15 14:17", + "link": "https://blog.opeach.cn/posts/737b.html", + "author": "HiPeach", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/6635d30e5429b.png" + }, + { + "title": "GPT -4o 使用体验", + "created": "2024-05-14 17:27", + "link": "http://blog.wsq127.top/posts/f895b5a9.html", + "author": "辞琼", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1c9b7efe1.png" + }, + { + "title": "解决火绒 6.0 造成的 Node.js fetch 方法 unable to verify the first certificate 报错", + "created": "2024-05-13 09:00", + "link": "https://www.imaegoo.com/2024/nodejs-fetch-cert-error/", + "author": "虹墨", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659668724466.png" + }, + { + "title": "给Cloudreve修改站点图标", + "created": "2024-05-13 06:50", + "link": "https://www.lxink.cn/posts/6dff1329.html", + "author": "凉心", + "avatar": "https://cdn.qyliu.top/i/2024/05/24/66500d797ac38.png" + }, + { + "title": "关于创建mysql连接池的具体思路和实现", + "created": "2024-05-12 14:52", + "link": "https://huanxueblog.top/posts/a3bc84e3.html", + "author": "幻雪博客", + "avatar": "https://cdn.qyliu.top/i/2024/03/31/66090bfe06ba6.png" + }, + { + "title": "5月12日 随笔", + "created": "2024-05-11 20:14", + "link": "https://blog.xsot.cn/archives/note-24-05-12.html", + "author": "星辰日记", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66595f03d46be.png" + }, + { + "title": "快手面经(二〇二四年五月九日)", + "created": "2024-05-09 13:09", + "link": "https://kmar.top/posts/6f6ff562/", + "author": "山岳库博", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116c3ba58c3.png" + }, + { + "title": "Twikoo表情", + "created": "2024-05-09 06: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 00:40", + "link": "http://blog.wsq127.top/posts/59a0de58.html", + "author": "辞琼", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1c9b7efe1.png" + }, + { + "title": "基于rPPG的心率测算程序设计报告[公开版]", + "created": "2024-05-06 12: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 08:45", + "link": "https://www.henjinet.com/archives/pang-mao.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "饿殍:明末千里行-岁大饥,人相食", + "created": "2024-05-05 06:10", + "link": "http://blog.awaae001.top/posts/23024.html", + "author": "呓语梦轩", + "avatar": "https://cdn.qyliu.top/i/2024/03/30/660769346d538.jpg" + }, + { + "title": "【总结】井冈山研学-了解历史,明见未来", + "created": "2024-05-05 06:04", + "link": "http://blog.awaae001.top/posts/65197.html", + "author": "呓语梦轩", + "avatar": "https://cdn.qyliu.top/i/2024/03/30/660769346d538.jpg" + }, + { + "title": "[EN] ParanoidAndroid For OPKONA", + "created": "2024-05-04 14:14", + "link": "https://blog.wzwzx.cn/en-paranoidandroid-for-opkona.html", + "author": "蛋蛋困了", + "avatar": "https://cdn.qyliu.top/i/2024/04/30/6631024628e0d.png" + }, + { + "title": "ParanoidAndroid For OPKONA", + "created": "2024-05-04 12:01", + "link": "https://blog.wzwzx.cn/paranoidandroid-for-opkona.html", + "author": "蛋蛋困了", + "avatar": "https://cdn.qyliu.top/i/2024/04/30/6631024628e0d.png" + }, + { + "title": "主题标签 Tag Plugins", + "created": "2024-05-04 07:37", + "link": "https://www.efu.me/posts/e19cb4b7.html", + "author": "Efu", + "avatar": "https://cdn.qyliu.top/i/2024/04/26/662bcda2afd5d.png" + }, + { + "title": "康复医学和推拿的区别", + "created": "2024-05-02 20:02", + "link": "https://www.henjinet.com/archives/kang-fu-tui-na.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "2024-04小记", + "created": "2024-05-02 18:31", + "link": "https://blog.sinzmise.top/posts/15748/", + "author": "星空故事", + "avatar": "https://cdn.qyliu.top/i/2024/04/24/6628f767880fa.png" + }, + { + "title": "给你的hexo博客配上swpp", + "created": "2024-04-30 13:54", + "link": "https://blog.ciraos.top/p/764aa671/", + "author": "葱苓sama", + "avatar": "https://cdn.qyliu.top/i/2024/05/03/663458df4e6f0.png" + }, + { + "title": "添加来访者卡片", + "created": "2024-04-30 01:56", + "link": "https://blog.qjqq.cn/posts/834f.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, + { + "title": "NLP谷歌语音指令训练大作业", + "created": "2024-04-29 21:13", + "link": "https://www.gan1ser.top/post/4c7a50a7.html", + "author": "GanSer", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbba91addc.png" + }, + { + "title": "说说人际关系", + "created": "2024-04-28 10:50", + "link": "https://www.henjinet.com/archives/ren-ji-guan-xi.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "马里奥制造1打百人团教程", + "created": "2024-04-27 19:43", + "link": "https://blog.sinzmise.top/posts/10996/", + "author": "星空故事", + "avatar": "https://cdn.qyliu.top/i/2024/04/24/6628f767880fa.png" + }, + { + "title": "每个人都可以写一份属于自己的Phigros自制谱——Re: PhiEdit简明教程", + "created": "2024-04-26 21:10", + "link": "https://blog.yaria.top/posts/303b5edc/", + "author": "Ariasaka", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f40b65114.png" + }, + { + "title": "使用 Cloudflare Workers 搭建反向代理加速器", + "created": "2024-04-25 14:35", + "link": "https://www.zouht.com/3740.html", + "author": "ChrisKim", + "avatar": "https://cdn.qyliu.top/i/2024/06/27/667d880789765.webp" + }, + { + "title": "主题资源", + "created": "2024-04-25 07: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 13:42", + "link": "https://akilar.top/posts/c215d440/", + "author": "Akilar", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" + }, + { + "title": "添加那年今日卡片", + "created": "2024-04-24 01:40", + "link": "https://blog.qjqq.cn/posts/155e.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, + { + "title": "一文让你理解网络阻塞与非阻塞和多路io复用", + "created": "2024-04-21 09:55", + "link": "https://huanxueblog.top/posts/a8fad53.html", + "author": "幻雪博客", + "avatar": "https://cdn.qyliu.top/i/2024/03/31/66090bfe06ba6.png" + }, + { + "title": "在Windows上使用HomePod", + "created": "2024-04-20 14:11", + "link": "https://www.lxink.cn/posts/b90e1105.html", + "author": "凉心", + "avatar": "https://cdn.qyliu.top/i/2024/05/24/66500d797ac38.png" + }, + { + "title": "探秘米哈游技术进步:《绝区零》三测体验", + "created": "2024-04-20 13:07", + "link": "https://www.zouht.com/3734.html", + "author": "ChrisKim", + "avatar": "https://cdn.qyliu.top/i/2024/06/27/667d880789765.webp" + }, + { + "title": "Plane项目管理工具的私有化部署安装方法", + "created": "2024-04-20 08: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 05:13", + "link": "https://blog.6ing.top/archives/39589365.html", + "author": "星辰", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1d8995fe2.png" + }, + { + "title": "MySQL练习题", + "created": "2024-04-20 05:13", + "link": "https://blog.6ing.top/archives/1940374d.html", + "author": "星辰", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1d8995fe2.png" + }, + { + "title": "Java笔记(下)", + "created": "2024-04-20 05:13", + "link": "https://blog.6ing.top/archives/c4705011.html", + "author": "星辰", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1d8995fe2.png" + }, + { + "title": "Java笔记(上)", + "created": "2024-04-20 05:13", + "link": "https://blog.6ing.top/archives/7ccc3774.html", + "author": "星辰", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1d8995fe2.png" + }, + { + "title": "使用java理解程序逻辑", + "created": "2024-04-20 05:13", + "link": "https://blog.6ing.top/archives/d4fb7e2b.html", + "author": "星辰", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1d8995fe2.png" + }, + { + "title": "国家传统中医师承相关法规文件汇总", + "created": "2024-04-19 21:25", + "link": "https://www.henjinet.com/archives/zhong-yi-shi-cheng-15-52.html", + "author": "痕迹小站", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659688bbf14b.png" + }, + { + "title": "Jeccg自定义弹窗(组件和页面)", + "created": "2024-04-19 20:52", + "link": "https://blog.june-pj.cn/posts/218227a4/", + "author": "June", + "avatar": "https://cdn.qyliu.top/i/2024/03/22/65fc5b18a2574.png" + }, + { + "title": "Windows安装alist并美化", + "created": "2024-04-19 03:21", + "link": "https://www.quenan.love/posts/8255.html", + "author": "鹊楠", + "avatar": "https://cdn.qyliu.top/i/2024/04/10/66164fd0e92b6.png" + }, + { + "title": "517编程普及组数学之筛法", + "created": "2024-04-18 16:01", + "link": "http://blog.wsq127.top/posts/a996222c.html", + "author": "辞琼", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1c9b7efe1.png" + }, + { + "title": "我和 ChatGPT4 把友情链接改成了“朋友圈“", + "created": "2024-04-17 17: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-17 16:25", + "link": "https://www.gan1ser.top/post/f229dda1.html", + "author": "GanSer", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbba91addc.png" + }, + { + "title": "517编程普及组数学之图论基础", + "created": "2024-04-17 16:10", + "link": "http://blog.wsq127.top/posts/362ffdf7.html", + "author": "辞琼", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1c9b7efe1.png" + }, + { + "title": "517编程普及组数学之二进制", + "created": "2024-04-16 09:53", + "link": "http://blog.wsq127.top/posts/a8eee40e.html", + "author": "辞琼", + "avatar": "https://cdn.qyliu.top/i/2024/04/27/662d1c9b7efe1.png" + }, + { + "title": "打击网络谣言处罚几个自媒体远远不够", + "created": "2024-04-15 07:01", + "link": "https://dongjunke.cn/posts/2024/04/15/48226.html", + "author": "东评西就", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f26979229.png" + }, + { + "title": "我对抄袭行为的看法", + "created": "2024-04-15 07:00", + "link": "https://www.imaegoo.com/2024/about-plagiarism/", + "author": "虹墨", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659668724466.png" + }, + { + "title": "WordPress后台被自动强制退出的解决办法 – Google Quicklink惹的祸", + "created": "2024-04-13 15: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": "Serv00搭建Artalk", + "created": "2024-04-12 22:46", + "link": "https://blog.sinzmise.top/posts/13624/", + "author": "星空故事", + "avatar": "https://cdn.qyliu.top/i/2024/04/24/6628f767880fa.png" + }, + { + "title": "PostChat--让你的网站提前步入AI时代", + "created": "2024-04-12 06:03", + "link": "https://tianli-blog.club/postchat/", + "author": "Tianli", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116950412cc.png" + }, + { + "title": "GitHub仓库Star数量接口", + "created": "2024-04-11 07:58", + "link": "https://blog.qjqq.cn/posts/7b3.html", + "author": "青桔气球", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/661241402f02a.png" + }, + { + "title": "【Hexo博客】配置RSS插件,生成 Atom1.0 或 RSS2.0 摘要文件", + "created": "2024-04-11 04:26", + "link": "https://blog.meta-code.top/2024/04/11/2024-11/", + "author": "百里飞洋", + "avatar": "https://avatars.githubusercontent.com/u/81922999?v=4" + }, + { + "title": "源计划-方舟:友链卡片", + "created": "2024-04-08 21:42", + "link": "https://akilar.top/posts/fb6a1a78/", + "author": "Akilar", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" + }, + { + "title": "让你的个人网站支持 ios 添加到主屏幕全屏应用", + "created": "2024-04-07 15:29", + "link": "https://pipuwong.com/ios-webapp", + "author": "皮普", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" + }, + { + "title": "长安公园植物园碎片兼求助", + "created": "2024-04-07 08:42", + "link": "https://dongjunke.cn/posts/2024/04/07/27334.html", + "author": "东评西就", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f26979229.png" + }, + { + "title": "自建gravatar代理,解决WordPress头像加载问题", + "created": "2024-04-06 07:52", + "link": "https://pipuwong.com/self-hosted-gravatar-proxy-to-solve-the-problem-of-wordpress-avatar-loading", + "author": "皮普", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f1b29c34a.png" + }, + { + "title": "人间求生指南之职场玄学篇", + "created": "2024-04-06 07:19", + "link": "https://dongjunke.cn/posts/2024/04/06/52154.html", + "author": "东评西就", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f26979229.png" + }, + { + "title": "免费安装杜比全景声", + "created": "2024-04-03 03:09", + "link": "https://www.quenan.love/posts/40496.html", + "author": "鹊楠", + "avatar": "https://cdn.qyliu.top/i/2024/04/10/66164fd0e92b6.png" + }, + { + "title": "如何注销个体工商户营业执照?(以石家庄地区为参考)", + "created": "2024-04-02 10:33", + "link": "https://dongjunke.cn/posts/2024/04/02/10964.html", + "author": "东评西就", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f26979229.png" + }, + { + "title": "Butterfly的魔改教程:右键菜单", + "created": "2024-04-01 13:00", + "link": "https://meuicat.com/blog/86/", + "author": "爱吃肉的猫", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66123cff10a83.png" + }, + { + "title": "如何向航空公司索赔中转行程的退票扣款?", + "created": "2024-04-01 07:17", + "link": "https://dongjunke.cn/posts/2024/04/01/53255.html", + "author": "东评西就", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f26979229.png" + }, + { + "title": "Mui学习资料总结", + "created": "2024-04-01 01:24", + "link": "https://www.quenan.love/posts/19977.html", + "author": "鹊楠", + "avatar": "https://cdn.qyliu.top/i/2024/04/10/66164fd0e92b6.png" + }, + { + "title": "Solitude: 添加 Memos 即刻短文", + "created": "2024-04-01 00:00", + "link": "https://www.efu.me/posts/43bbcb23.html", + "author": "Efu", + "avatar": "https://cdn.qyliu.top/i/2024/04/26/662bcda2afd5d.png" + }, + { + "title": "基于Tg的说说", + "created": "2024-03-29 03:33", + "link": "https://www.quenan.love/posts/62461.html", + "author": "鹊楠", + "avatar": "https://cdn.qyliu.top/i/2024/04/10/66164fd0e92b6.png" + }, + { + "title": "浅谈 Css 规范", + "created": "2024-03-28 07:24", + "link": "https://fe32.top/articles/css10006/", + "author": "唐志远", + "avatar": "https://bu.dusays.com/2022/05/02/626f92e193879.jpg" + }, + { + "title": "Unraid: Install", + "created": "2024-03-28 00:00", + "link": "https://www.efu.me/posts/88331569.html", + "author": "Efu", + "avatar": "https://cdn.qyliu.top/i/2024/04/26/662bcda2afd5d.png" + }, + { + "title": "用Xd画一个文章封面", + "created": "2024-03-27 14:27", + "link": "https://www.quenan.love/posts/29665.html", + "author": "鹊楠", + "avatar": "https://cdn.qyliu.top/i/2024/04/10/66164fd0e92b6.png" + }, + { + "title": "京东云轻量云主机避雷", + "created": "2024-03-27 08:00", + "link": "https://www.imaegoo.com/2024/jdcloud-bench/", + "author": "虹墨", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/6659668724466.png" + }, + { + "title": "音乐分享 - doi微醺氛围", + "created": "2024-03-24 16:16", + "link": "https://meuicat.com/blog/85/", + "author": "爱吃肉的猫", + "avatar": "https://cdn.qyliu.top/i/2024/04/07/66123cff10a83.png" + }, + { + "title": "如何在RK系开发板的linux冷门内核上编译CH340驱动", + "created": "2024-03-15 16:34", + "link": "https://blog.yaria.top/posts/dad8e69b/", + "author": "Ariasaka", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f40b65114.png" + }, + { + "title": "写在十九岁的最后一天", + "created": "2024-03-15 15:52", + "link": "https://www.lxink.cn/posts/fba1c269.html", + "author": "凉心", + "avatar": "https://cdn.qyliu.top/i/2024/05/24/66500d797ac38.png" + }, + { + "title": "使用容器在国产超算平台安装 PyTorch CUDA", + "created": "2024-03-11 14:08", + "link": "https://www.zouht.com/3724.html", + "author": "ChrisKim", + "avatar": "https://cdn.qyliu.top/i/2024/06/27/667d880789765.webp" + }, + { + "title": "!!!如何解决Chrome121更新后导致的滚动条样式失效!!!", + "created": "2024-03-09 11:05", + "link": "https://blog.yaria.top/posts/dea522be/", + "author": "Ariasaka", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f40b65114.png" + }, + { + "title": "【业务实践】探索 Excel 表数据的导入和导出功能的完整实现方案", + "created": "2024-03-08 07:13", + "link": "https://blog.meta-code.top/2024/03/08/2024-6/", + "author": "百里飞洋", + "avatar": "https://avatars.githubusercontent.com/u/81922999?v=4" + }, + { + "title": "一键制作点击后会变化的图片", + "created": "2024-02-29 15:27", + "link": "https://www.zouht.com/3717.html", + "author": "ChrisKim", + "avatar": "https://cdn.qyliu.top/i/2024/06/27/667d880789765.webp" + }, + { + "title": "Authy 导出数据", + "created": "2024-02-24 11:15", + "link": "https://blog.opeach.cn/posts/a7dc.html", + "author": "HiPeach", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/6635d30e5429b.png" + }, + { + "title": "CentOS7.6 安装宝塔", + "created": "2024-02-23 10:17", + "link": "https://fe32.top/articles/linux001/", + "author": "唐志远", + "avatar": "https://bu.dusays.com/2022/05/02/626f92e193879.jpg" + }, + { + "title": "ssh 知识整理", + "created": "2024-02-14 07:22", + "link": "https://yuuu.org/post/64202.html", + "author": "微霞", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" + }, + { + "title": "世界,您好!", + "created": "2024-02-08 03:18", + "link": "https://blog.wzwzx.cn/hello-world.html", + "author": "蛋蛋困了", + "avatar": "https://cdn.qyliu.top/i/2024/04/30/6631024628e0d.png" + }, + { + "title": "你好 2024", + "created": "2024-01-27 14:10", + "link": "https://blog.xsot.cn/archives/2023-annual-summary.html", + "author": "星辰日记", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66595f03d46be.png" + }, + { + "title": "推一下 Vercel 加速节点", + "created": "2024-01-25 15:47", + "link": "https://www.yt-blog.top/9952/", + "author": "Fgaoxing", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116a9cd62d7.png" + }, + { + "title": "是水课还是水了课?-一个在役大学生对“水课”的看法", + "created": "2024-01-21 09:35", + "link": "https://www.gan1ser.top/post/3f67bb24.html", + "author": "GanSer", + "avatar": "https://cdn.qyliu.top/i/2024/04/29/662fbba91addc.png" + }, + { + "title": "【狄仁杰探案】修复Node.js后端图片上传接口漏洞", + "created": "2024-01-19 09:25", + "link": "https://blog.meta-code.top/2024/01/19/2024-4/", + "author": "百里飞洋", + "avatar": "https://avatars.githubusercontent.com/u/81922999?v=4" + }, + { + "title": "Moonlight 串流指南", + "created": "2024-01-18 10:58", + "link": "https://blog.zhilu.cyou/2024/moonlight-streaming-guide/", + "author": "纸鹿本鹿", + "avatar": "https://cdn.qyliu.top/i/2024/06/02/665c869ded7cd.png" + }, + { + "title": "网站优化小窍门", + "created": "2024-01-16 04:19", + "link": "https://www.yt-blog.top/3705/", + "author": "Fgaoxing", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116a9cd62d7.png" + }, + { + "title": "2023年度总结", + "created": "2024-01-10 10:26", + "link": "https://huanxueblog.top/posts/62c6c373.html", + "author": "幻雪博客", + "avatar": "https://cdn.qyliu.top/i/2024/03/31/66090bfe06ba6.png" + }, + { + "title": "CMake_opencv", + "created": "2024-01-08 12:24", + "link": "https://huanxueblog.top/posts/undefined.html", + "author": "幻雪博客", + "avatar": "https://cdn.qyliu.top/i/2024/03/31/66090bfe06ba6.png" + }, + { + "title": "CMake优雅地使用环境变量", + "created": "2024-01-08 12:23", + "link": "https://huanxueblog.top/posts/6f6925cb.html", + "author": "幻雪博客", + "avatar": "https://cdn.qyliu.top/i/2024/03/31/66090bfe06ba6.png" + }, + { + "title": "我的2023回忆录——还有遗憾吗?明年会怎么样呢?", + "created": "2023-12-31 08:34", + "link": "https://blog.yaria.top/posts/b7bc969f/", + "author": "Ariasaka", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f40b65114.png" + }, + { + "title": "2023年度总结", + "created": "2023-12-30 16: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 13: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 12:24", + "link": "https://blog.leonus.cn/2023/newYearCard2.html", + "author": "Leonus", + "avatar": "https://cdn.qyliu.top/i/2024/04/11/6617da4084197.png" + }, + { + "title": "【显微镜下的世界】0x1", + "created": "2023-12-22 22:59", + "link": "https://www.yt-blog.top/26970/", + "author": "Fgaoxing", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116a9cd62d7.png" + }, + { + "title": "2023 | 年度总结", + "created": "2023-12-18 15:09", + "link": "https://blog.opeach.cn/posts/2023.html", + "author": "HiPeach", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/6635d30e5429b.png" + }, + { + "title": "一文搞懂伪代码", + "created": "2023-12-16 07:58", + "link": "https://kmar.top/posts/6e8d014c/", + "author": "山岳库博", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116c3ba58c3.png" + }, + { + "title": "找到新工作了,还挺喜欢的", + "created": "2023-12-15 16:08", + "link": "https://akilar.top/posts/5ad2af31/", + "author": "Akilar", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" + }, + { + "title": "更改 Minecraft 用户名和皮肤", + "created": "2023-12-10 04:30", + "link": "https://blog.opeach.cn/posts/24ac.html", + "author": "HiPeach", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/6635d30e5429b.png" + }, + { + "title": "使用了双拼一段时间之后", + "created": "2023-12-03 13:57", + "link": "https://yuuu.org/post/17812.html", + "author": "微霞", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" + }, + { + "title": "【浅谈】关于B站博主“食贫道”发布充电视频《迷失东京》后所引发的热议", + "created": "2023-12-02 05:06", + "link": "https://blog.meta-code.top/2023/12/02/2023-133/", + "author": "百里飞洋", + "avatar": "https://avatars.githubusercontent.com/u/81922999?v=4" + }, + { + "title": "【Hexo博客】添加友链朋友圈,纵览好友最新文章", + "created": "2023-11-23 06:34", + "link": "https://blog.meta-code.top/2023/11/23/2023-132/", + "author": "百里飞洋", + "avatar": "https://avatars.githubusercontent.com/u/81922999?v=4" + }, + { + "title": "近况,我在干什么", + "created": "2023-11-12 13:20", + "link": "https://yuuu.org/post/17074.html", + "author": "微霞", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" + }, + { + "title": "幽门螺旋杆菌的治疗", + "created": "2023-11-12 04:10", + "link": "https://blog.leonus.cn/2023/Helicobacter-pylori.html", + "author": "Leonus", + "avatar": "https://cdn.qyliu.top/i/2024/04/11/6617da4084197.png" + }, + { + "title": "《光年 星环》蓝牙耳机购买体验", + "created": "2023-11-07 12:14", + "link": "https://blog.leonus.cn/2023/star-ring.html", + "author": "Leonus", + "avatar": "https://cdn.qyliu.top/i/2024/04/11/6617da4084197.png" + }, + { + "title": "购入一台笔记本", + "created": "2023-11-06 14:41", + "link": "https://yuuu.org/post/37582.html", + "author": "微霞", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116f0fe045d.png" + }, + { + "title": "2023 级新生周赛第二周题解", + "created": "2023-11-05 09:03", + "link": "https://kmar.top/posts/fd60364e/", + "author": "山岳库博", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116c3ba58c3.png" + }, + { + "title": "给你的博客加上git提交日历", + "created": "2023-11-03 01:14", + "link": "https://blog.ciraos.top/p/e3901a78/", + "author": "葱苓sama", + "avatar": "https://cdn.qyliu.top/i/2024/05/03/663458df4e6f0.png" + }, + { + "title": "CSP-J 2023 题解", + "created": "2023-10-28 10:34", + "link": "https://blog.yaria.top/posts/dbbb90bf/", + "author": "Ariasaka", + "avatar": "https://cdn.qyliu.top/i/2024/04/09/6614f40b65114.png" + }, + { + "title": "个人哔哔: 谈薪时间-该问hr哪些问题", + "created": "2023-10-23 12:01", + "link": "https://noionion.top/20692.html", + "author": "贰猹", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116d6c6f18b.png" + }, + { + "title": "个人哔哔: 秋招与未来", + "created": "2023-10-23 12:00", + "link": "https://noionion.top/53532.html", + "author": "贰猹", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116d6c6f18b.png" + }, + { + "title": "解决 Vue3 + Element Plus 树形表格全选多选以及子节点勾选的问题", + "created": "2023-10-23 07:02", + "link": "https://fe32.top/articles/vue20006/", + "author": "唐志远", + "avatar": "https://bu.dusays.com/2022/05/02/626f92e193879.jpg" + }, + { + "title": "前端断点调试是如何实现的?", + "created": "2023-10-23 01:01", + "link": "https://fe32.top/articles/fe100003/", + "author": "唐志远", + "avatar": "https://bu.dusays.com/2022/05/02/626f92e193879.jpg" + }, + { + "title": "最近我都干了些什么", + "created": "2023-10-22 01:05", + "link": "https://blog.leonus.cn/2023/recently.html", + "author": "Leonus", + "avatar": "https://cdn.qyliu.top/i/2024/04/11/6617da4084197.png" + }, + { + "title": "发现了一款好用的安卓视频播放器", + "created": "2023-10-13 01:43", + "link": "https://blog.leonus.cn/2023/nextplayer.html", + "author": "Leonus", + "avatar": "https://cdn.qyliu.top/i/2024/04/11/6617da4084197.png" + }, + { + "title": "闪电入职vs光速离职", + "created": "2023-09-20 19:08", + "link": "https://akilar.top/posts/b5a208a8/", + "author": "Akilar", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" + }, + { + "title": "20230915", + "created": "2023-09-15 09:30", + "link": "https://akilar.top/posts/eee5afe4/", + "author": "Akilar", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/661170950f7a2.png" + }, + { + "title": "Swpp Backends 官方文档", + "created": "2023-08-09 08:18", + "link": "https://kmar.top/posts/b70ec88f/", + "author": "山岳库博", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116c3ba58c3.png" + }, + { + "title": "hexo备份", + "created": "2023-07-02 05:04", + "link": "https://blog.ciraos.top/p/d4b6f22c/", + "author": "葱苓sama", + "avatar": "https://cdn.qyliu.top/i/2024/05/03/663458df4e6f0.png" + }, + { + "title": "我的英文名", + "created": "2023-06-29 13:46", + "link": "https://blog.opeach.cn/posts/e588.html", + "author": "HiPeach", + "avatar": "https://cdn.qyliu.top/i/2024/05/04/6635d30e5429b.png" + }, + { + "title": "保姆教程之友链朋友圈", + "created": "2023-06-19 03:45", + "link": "https://blog.imoyan.top/posts/cbff.html", + "author": "陌颜Hao", + "avatar": "https://bu.dusays.com/2024/03/15/65f3fd054c5db.jpg" + }, + { + "title": "VS Code 简单配置项", + "created": "2023-04-13 12:05", + "link": "https://blog.zhilu.cyou/2023/vscode-simple-config/", + "author": "纸鹿本鹿", + "avatar": "https://cdn.qyliu.top/i/2024/06/02/665c869ded7cd.png" + }, + { + "title": "HHKB 使用体验", + "created": "2023-03-11 03:30", + "link": "https://blog.xsot.cn/archives/hhkb.html", + "author": "星辰日记", + "avatar": "https://cdn.qyliu.top/i/2024/05/31/66595f03d46be.png" + }, + { + "title": "全自动博客部署方案", + "created": "2023-01-06 07:54", + "link": "https://kmar.top/posts/a427ed12/", + "author": "山岳库博", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116c3ba58c3.png" + }, + { + "title": "从零开始的异世界主题开发生活-hexo事件管理与扩展使用", + "created": "2023-01-05 15:00", + "link": "https://noionion.top/55440.html", + "author": "贰猹", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116d6c6f18b.png" + }, + { + "title": "个人哔哔: 2022年度总结与全新的大饼", + "created": "2022-12-28 15:00", + "link": "https://noionion.top/33884.html", + "author": "贰猹", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116d6c6f18b.png" + }, + { + "title": "猹的魔改日记-文章页抛弃卡片、丢弃小菜单以及布局重构", + "created": "2022-12-24 15:00", + "link": "https://noionion.top/64594.html", + "author": "贰猹", + "avatar": "https://cdn.qyliu.top/i/2024/04/06/66116d6c6f18b.png" + }, + { + "title": "光棍节心情随笔", + "created": "2022-11-11 12:11", + "link": "https://blog.imoyan.top/posts/5f2e.html", + "author": "陌颜Hao", + "avatar": "https://bu.dusays.com/2024/03/15/65f3fd054c5db.jpg" + }, + { + "title": "利用Hexo和Github Page搭建个人博客", + "created": "2022-11-11 12:11", + "link": "https://blog.imoyan.top/posts/4bcc.html", + "author": "陌颜Hao", + "avatar": "https://bu.dusays.com/2024/03/15/65f3fd054c5db.jpg" + }, + { + "title": "利用插件系统,批量替换 Butterfly 主题的 CDN。", + "created": "2022-05-17 12: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 06: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 13: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 08: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 10: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/conf.yml b/conf.yml new file mode 100644 index 0000000..412bf28 --- /dev/null +++ b/conf.yml @@ -0,0 +1,6 @@ +# 爬虫相关配置 +spider_settings: + enable: true # 是否启用爬虫 + json_url: "https://blog.qyliu.top/friend.json" # 请填写对应格式json的地址,仅支持网络地址 + article_count: 5 # 请填写每个博客需要获取的最大文章数量 + diff --git a/dev_test/main.ipynb b/dev_test/main.ipynb new file mode 100644 index 0000000..2f20836 --- /dev/null +++ b/dev_test/main.ipynb @@ -0,0 +1,227 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "正在检查 清羽飞扬 的博客 https://blog.qyliu.top/\n", + "正在检查 张洪Heo 的博客 https://blog.zhheo.com/\n", + "正在检查 Leonus 的博客 https://blog.leonus.cn/\n", + "正在检查 杜老师说 的博客 https://dusays.com\n", + "一府 的博客 https://blog.duolaa.asia/ 无法访问\n", + "正在检查 贰猹 的博客 https://noionion.top/\n", + "正在检查 ChrisKim 的博客 https://www.zouht.com/\n", + "正在检查 無名小栈 的博客 https://blog.imsyy.top/\n", + "正在检查 满心记 的博客 https://blog.lovelu.top/\n", + "正在检查 Tianli 的博客 https://tianli-blog.club/\n", + "不可链接的FEED地址:https://blog.imsyy.top/atom.xml: HTTPSConnectionPool(host='blog.imsyy.top', port=443): Max retries exceeded with url: /404 (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response')))\n", + "正在检查 Akilar 的博客 https://akilar.top/\n", + "正在检查 星港Star 的博客 https://blog.starsharbor.com\n", + "清风 的博客 https://luckqf.cn 无法访问\n", + "dreamChaser 的博客 https://blog.wenjing.xin/ 无法访问\n", + "正在检查 百里飞洋 的博客 https://blog.meta-code.top/\n", + "正在检查 揽星 的博客 https://lanxing.net/\n", + "正在检查 Android 的博客 https://android99.com\n", + "正在检查 阮一峰 的博客 https://www.ruanyifeng.com/blog/\n", + "正在检查 星辰日记 的博客 https://blog.xsot.cn/\n", + "正在检查 星の野 的博客 https://byer.top/\n", + "正在检查 June 的博客 https://blog.june-pj.cn/\n", + "正在检查 幻雪博客 的博客 https://huanxueblog.top/\n", + "正在检查 风记星辰 的博客 https://www.thyuu.com\n", + "正在检查 呓语梦轩 的博客 https://blog.awaae001.top\n", + "正在检查 青桔气球 的博客 https://blog.qjqq.cn/\n", + "AlenLiu 的博客 https://blog.alenliu.space/ 无法访问\n", + "正在检查 山岳库博 的博客 https://kmar.top/\n", + "JackieZhu 的博客 https://blog.zhfan.top/ 无法访问\n", + "正在检查 微霞 的博客 https://yuuu.org\n", + "Redish 的博客 https://blog.redish101.top/ 无法访问\n", + "Rootlex 的博客 https://blog.nalex.top 无法访问\n", + "GuKaifeng 的博客 https://gukaifeng.cn/ 无法访问\n", + "正在检查 乙未博客 的博客 https://www.yvii.cn\n", + "正在检查 东评西就 的博客 https://dongjunke.cn\n", + "正在检查 Fgaoxing 的博客 https://www.yt-blog.top/\n", + "正在检查 鹊楠 的博客 https://www.quenan.love\n", + "正在检查 Ariasaka 的博客 https://blog.yaria.top/\n", + "理随 的博客 https://lisui.top/ 无法访问\n", + "听风小屋 的博客 https://blog.ifeng.asia/ 无法访问\n", + "正在检查 半方池水 的博客 https://uuanqin.top/\n", + "正在检查 往日信笺 的博客 https://www.xingmail.cn/\n", + "正在检查 皮普 的博客 https://pipuwong.com\n", + "正在检查 luo 的博客 https://www.bokelhc.cn\n", + "正在检查 星空故事 的博客 https://blog.sinzmise.top/\n", + "正在检查 刘郎阁 的博客 https://yjvc.cn/index.php/\n", + "正在检查 obaby 的博客 https://h4ck.org.cn/\n", + "正在检查 湘铭 的博客 https://xiangming.site/\n", + "正在检查 爱吃肉的猫 的博客 https://meuicat.com/\n", + "青竹小轩 的博客 https://gyhwd.top/ 无法访问\n", + "正在检查 星辰 的博客 https://blog.6ing.top/\n", + "正在检查 辞琼 的博客 https://blog.wsq127.top/\n", + "正在检查 Efu 的博客 https://www.efu.me/\n", + "正在检查 茗辰原 的博客 https://mingcy.xyz/\n", + "正在检查 葱苓sama 的博客 https://blog.ciraos.top/\n", + "Fiveth 的博客 https://blog.fiveth.cc/ 无法访问\n", + "正在检查 HiPeach 的博客 https://blog.opeach.cn\n", + "微笔记 的博客 https://flytusky.top 无法访问\n", + "正在检查 微生之最 的博客 https://www.bbixb.top/\n", + "正在检查 蛋蛋困了 的博客 https://blog.wzwzx.cn/\n", + "正在检查 凉心 的博客 https://www.lxink.cn/\n", + "正在检查 陌颜Hao 的博客 https://blog.imoyan.top/\n", + "正在检查 M.Talen 的博客 https://blog.talen.top/\n", + "正在检查 轻笑 的博客 https://www.qcqx.cn/\n", + "正在检查 虹墨 的博客 https://www.imaegoo.com/\n", + "正在检查 痕迹小站 的博客 https://www.henjinet.com/\n", + "Dreamaker 的博客 http://dreamakerr.cn/ 无法访问\n", + "正在检查 纸鹿本鹿 的博客 https://blog.zhilu.cyou\n", + "SerMs 的博客 https://blog.serms.top/ 无法访问\n", + "正在检查 XINGYE 的博客 https://blog.xing-ye.top/\n", + "GanSer 的博客 https://www.gan1ser.top/ 无法访问\n", + "正在检查 六月是只猫 的博客 https://www.lyszm.com/\n", + "正在检查 凌云 的博客 https://www.linyunlink.top/\n", + "ZHI-BLOG 的博客 https://blog.zhwei.tech/ 无法访问\n", + "正在检查 BUZZ 的博客 https://blog.buzzchat.top/\n", + "正在检查 云晓晨 的博客 https://www.catchyxc.com/\n", + "安知鱼 的博客 https://blog.anheyu.com/ 无法访问\n", + "正在检查 唐志远 的博客 https://fe32.top/\n", + "数据处理完成\n", + "总共有 77 位朋友,其中 59 位博客可访问,18 位博客无法访问\n" + ] + } + ], + "source": [ + "# 引入 check_feed 和 parse_feed 函数\n", + "from friend_circle_lite.get_info import fetch_and_process_data\n", + "import json\n", + "\n", + "result = fetch_and_process_data(\"https://blog.qyliu.top/friend.json\")\n", + "\n", + "# 将结果保存为 JSON 文件\n", + "with open(\"result.json\", \"w\", encoding=\"utf-8\") as f:\n", + " json.dump(result, f, ensure_ascii=False, indent=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['atom', 'https://www.linyunlink.top/atom.xml']\n", + "不可链接的FEED地址:['atom', 'https://www.linyunlink.top/atom.xml']: No connection adapters were found for \"['atom', 'https://www.linyunlink.top/atom.xml']\"\n", + "{'website_name': '', 'author': '', 'link': '', 'articles': []}\n" + ] + } + ], + "source": [ + "from friend_circle_lite.get_info import check_feed, parse_feed\n", + "\n", + "url = check_feed(\"https://www.linyunlink.top/\")\n", + "print(url)\n", + "feed = parse_feed(url)\n", + "print(feed)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from friend_circle_lite.get_info import sort_articles_by_time\n", + "\n", + "sorted_result = sort_articles_by_time(result)\n", + "\n", + "# 将结果保存为 JSON 文件\n", + "with open(\"result.json\", \"w\", encoding=\"utf-8\") as f:\n", + " json.dump(sorted_result, f, ensure_ascii=False, indent=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'website_name': '张洪Heo', 'author': '', 'link': 'https://blog.zhheo.com/', 'articles': [{'title': '新配了一个专门玩英雄联盟的台式机主机,分享下配置和过程', 'author': '', 'link': 'https://blog.zhheo.com/p/9a18f6bb.html', 'published': '2024-06-20 01:55', 'summary': '
我只玩英雄联盟这一个网游,之前一直在用我淘汰下来的MacBook Pro 2019 intel i7', 'content': '
我只玩英雄联盟这一个网游,之前一直在用我淘汰下来的MacBook Pro 2019 intel i7'}, {'title': '解决iOS邮箱使用QQ邮箱账户无法发送邮件,连接发信服务器失败问题', 'author': '', 'link': 'https://blog.zhheo.com/p/cb3f5ed0.html', 'published': '2024-06-20 01:53', 'summary': '
我最近从qq邮箱换到了iOS自带的邮件客户端,一方面是因为自从qq邮箱出了会员之后一堆广告,一方面就是iOS18将支持邮件筛选,我也想用用。但是使用QQ邮箱连接会有一些问题。
\\n一方面是需要授权码验证,这个大家都比较清楚,登录的密码不是你的qq密码,而是qq邮箱', 'content': '
我最近从qq邮箱换到了iOS自带的邮件客户端,一方面是因为自从qq邮箱出了会员之后一堆广告,一方面就是iOS18将支持邮件筛选,我也想用用。但是使用QQ邮箱连接会有一些问题。
\\n一方面是需要授权码验证,这个大家都比较清楚,登录的密码不是你的qq密码,而是qq邮箱'}, {'title': '要排除的文件已经被上传到远程Git仓库怎么办', 'author': '', 'link': 'https://blog.zhheo.com/p/faf797ab.html', 'published': '2024-06-19 09:43', 'summary': '
mac有个毒瘤文件就是DS_Store,如果没有全局排除掉那么上传新项目的时候很容易就被上传。还有一些其他的构建文件如果没有设置好.gitignore
也会被上传。
有的时候排除文件在我们项目过一段时间后才想起来添加,但是那时候远程库已', 'content': '
mac有个毒瘤文件就是DS_Store,如果没有全局排除掉那么上传新项目的时候很容易就被上传。还有一些其他的构建文件如果没有设置好.gitignore
也会被上传。
有的时候排除文件在我们项目过一段时间后才想起来添加,但是那时候远程库已'}, {'title': 'Mac安装java17(openjdk@17)支持M系列芯片和intel芯片', 'author': '', 'link': 'https://blog.zhheo.com/p/6243d392.html', 'published': '2024-06-17 02:46', 'summary': '
因为入坑Halo插件开发,装环境研究了一个多小时。主要是错误的安装了版本。Halo的java版本要求是17,这个教程介绍安装java17,通过homebrew来进行安装,然后添加链接即可。
\\nVision Pro 已经支持了中国大陆销售,售价29999。当然这不是重点,主要Vision'}]}\n" + ] + } + ], + "source": [ + "from friend_circle_lite.get_info import fetch_and_process_data, check_feed, parse_feed\n", + "\n", + "print(parse_feed(check_feed(\"https://blog.zhheo.com/\")[-1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "python-dateutil 版本: 2.8.2\n", + "requests 版本: 2.31.0\n", + "feedparser 版本: 6.0.11\n" + ] + } + ], + "source": [ + "import datetime\n", + "import dateutil\n", + "import requests\n", + "import feedparser\n", + "\n", + "# 打印 datetime 包的版本\n", + "\n", + "# 打印 python-dateutil 包的版本\n", + "print(f\"python-dateutil 版本: {dateutil.__version__}\")\n", + "\n", + "# 打印 requests 包的版本\n", + "print(f\"requests 版本: {requests.__version__}\")\n", + "\n", + "# 打印 feedparser 包的版本\n", + "print(f\"feedparser 版本: {feedparser.__version__}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/friend_circle_lite/__init__.py b/friend_circle_lite/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/friend_circle_lite/get_conf.py b/friend_circle_lite/get_conf.py new file mode 100644 index 0000000..46b487c --- /dev/null +++ b/friend_circle_lite/get_conf.py @@ -0,0 +1,14 @@ +import yaml + +def load_config(config_file): + """ + 加载配置文件。 + + 参数: + config_file (str): 配置文件的路径。 + + 返回: + dict: 加载的配置数据。 + """ + with open(config_file, 'r', encoding='utf-8') as file: + return yaml.safe_load(file) \ No newline at end of file diff --git a/friend_circle_lite/get_info.py b/friend_circle_lite/get_info.py new file mode 100644 index 0000000..a5b3234 --- /dev/null +++ b/friend_circle_lite/get_info.py @@ -0,0 +1,264 @@ +from datetime import datetime +from dateutil import parser +import requests +import feedparser +from concurrent.futures import ThreadPoolExecutor, as_completed + +# 标准化的请求头 +headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' +} + +timeout = (5, 10) # 连接超时和读取超时,防止requests接受时间过长 + +def format_published_time(time_str): + """ + 格式化发布时间为统一格式 YYYY-MM-DD HH:MM + """ + try: + # 尝试自动解析 + parsed_time = parser.parse(time_str) + return parsed_time.strftime('%Y-%m-%d %H:%M') + except (ValueError, parser.ParserError): + pass + + time_formats = [ + '%a, %d %b %Y %H:%M:%S %z', # Mon, 11 Mar 2024 14:08:32 +0000 + '%a, %d %b %Y %H:%M:%S GMT', # Wed, 19 Jun 2024 09:43:53 GMT + '%Y-%m-%dT%H:%M:%S%z', # 2024-03-11T14:08:32+00:00 + '%Y-%m-%dT%H:%M:%SZ', # 2024-03-11T14:08:32Z + '%Y-%m-%d %H:%M:%S', # 2024-03-11 14:08:32 + '%Y-%m-%d' # 2024-03-11 + ] + + for fmt in time_formats: + try: + parsed_time = datetime.strptime(time_str, fmt) + return parsed_time.strftime('%Y-%m-%d %H:%M') + except ValueError: + continue + + # 如果所有格式都无法匹配,返回原字符串或一个默认值 + return '' + +def check_feed(blog_url, session): + """ + 检查博客的 RSS 或 Atom 订阅链接。 + + 此函数接受一个博客地址,尝试在其后拼接 '/atom.xml', '/rss2.xml' 和 '/feed',并检查这些链接是否可访问。 + Atom 优先,如果都不能访问,则返回 ['none', 源地址]。 + + 参数: + blog_url (str): 博客的基础 URL。 + session (requests.Session): 用于请求的会话对象。 + + 返回: + list: 包含类型和拼接后的链接的列表。如果 atom 链接可访问,则返回 ['atom', atom_url]; + 如果 rss2 链接可访问,则返回 ['rss2', rss_url]; + 如果 feed 链接可访问,则返回 ['feed', feed_url]; + 如果都不可访问,则返回 ['none', blog_url]。 + """ + + atom_url = blog_url.rstrip('/') + '/atom.xml' + rss_url = blog_url.rstrip('/') + '/rss2.xml' + feed_url = blog_url.rstrip('/') + '/feed' + + try: + atom_response = session.get(atom_url, headers=headers, timeout=timeout) + if atom_response.status_code == 200: + return ['atom', atom_url] + except requests.RequestException: + pass + + try: + rss_response = session.get(rss_url, headers=headers, timeout=timeout) + if rss_response.status_code == 200: + return ['rss2', rss_url] + except requests.RequestException: + pass + + try: + feed_response = session.get(feed_url, headers=headers, timeout=timeout) + if feed_response.status_code == 200: + return ['feed', feed_url] + except requests.RequestException: + pass + + return ['none', blog_url] + +def parse_feed(url, session, count=5): + """ + 解析 Atom 或 RSS2 feed 并返回包含网站名称、作者、原链接和每篇文章详细内容的字典。 + + 此函数接受一个 feed 的地址(atom.xml 或 rss2.xml),解析其中的数据,并返回一个字典结构, + 其中包括网站名称、作者、原链接和每篇文章的详细内容。 + + 参数: + url (str): Atom 或 RSS2 feed 的 URL。 + session (requests.Session): 用于请求的会话对象。 + count (int): 获取文章数的最大数。如果小于则全部获取,如果文章数大于则只取前 count 篇文章。 + + 返回: + dict: 包含网站名称、作者、原链接和每篇文章详细内容的字典。 + """ + try: + response = session.get(url, headers=headers, timeout=timeout) + response.encoding = 'utf-8' + feed = feedparser.parse(response.text) + + result = { + 'website_name': feed.feed.title if 'title' in feed.feed else '', + 'author': feed.feed.author if 'author' in feed.feed else '', + 'link': feed.feed.link if 'link' in feed.feed else '', + 'articles': [] + } + + for i, entry in enumerate(feed.entries): + if i >= count: + break + + published = format_published_time(entry.published) if 'published' in entry else '' + article = { + 'title': entry.title if 'title' in entry else '', + 'author': entry.author if 'author' in entry else '', + 'link': entry.link if 'link' in entry else '', + 'published': published, + 'summary': entry.summary if 'summary' in entry else '', + 'content': entry.content[0].value if 'content' in entry and entry.content else entry.description if 'description' in entry else '' + } + result['articles'].append(article) + + return result + except Exception as e: + print(f"不可链接的FEED地址:{url}: {e}") + return { + 'website_name': '', + 'author': '', + 'link': '', + 'articles': [] + } + +def process_friend(friend, session, count): + """ + 处理单个朋友的博客信息。 + + 参数: + friend (list): 包含朋友信息的列表 [name, blog_url, avatar]。 + session (requests.Session): 用于请求的会话对象。 + count (int): 获取每个博客的最大文章数。 + + 返回: + dict: 包含朋友博客信息的字典。 + """ + name, blog_url, avatar = friend + feed_type, feed_url = check_feed(blog_url, session) + + if feed_type != 'none': + feed_info = parse_feed(feed_url, session, count) + articles = [ + { + 'title': article['title'], + 'created': article['published'], + 'link': article['link'], + 'author': name, + 'avatar': avatar + } + for article in feed_info['articles'] + ] + + for article in articles: + print(f"{name} 发布了新文章:{article['title']}, 时间:{article['created']}") + + return { + 'name': name, + 'status': 'active', + 'articles': articles + } + else: + print(f"{name} 的博客 {blog_url} 无法访问") + return { + 'name': name, + 'status': 'error', + 'articles': [] + } + +def fetch_and_process_data(json_url, count=5): + """ + 读取 JSON 数据并处理订阅信息,返回统计数据和文章信息。 + + 参数: + json_url (str): 包含朋友信息的 JSON 文件的 URL。 + count (int): 获取每个博客的最大文章数。 + + 返回: + dict: 包含统计数据和文章信息的字典。 + """ + session = requests.Session() + + try: + response = session.get(json_url, headers=headers, timeout=timeout) + friends_data = response.json() + except Exception as e: + print(f"无法获取该链接:{json_url}, 出现的问题为:{e}") + return None + + total_friends = len(friends_data['friends']) + active_friends = 0 + error_friends = 0 + total_articles = 0 + article_data = [] + + with ThreadPoolExecutor(max_workers=10) as executor: + future_to_friend = { + executor.submit(process_friend, friend, session, count): friend + for friend in friends_data['friends'] + } + + for future in as_completed(future_to_friend): + friend = future_to_friend[future] + try: + result = future.result() + if result['status'] == 'active': + active_friends += 1 + article_data.extend(result['articles']) + total_articles += len(result['articles']) + else: + error_friends += 1 + except Exception as e: + print(f"处理 {friend} 时发生错误: {e}") + error_friends += 1 + + result = { + 'statistical_data': { + 'friends_num': total_friends, + 'active_num': active_friends, + 'error_num': error_friends, + 'article_num': total_articles, + 'last_updated_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S') + }, + 'article_data': article_data + } + + print("数据处理完成") + print("总共有 %d 位朋友,其中 %d 位博客可访问,%d 位博客无法访问" % (total_friends, active_friends, error_friends)) + + return result + +def sort_articles_by_time(data): + """ + 对文章数据按时间排序 + + 参数: + data (dict): 包含文章信息的字典 + + 返回: + dict: 按时间排序后的文章信息字典 + """ + if 'article_data' in data: + sorted_articles = sorted( + data['article_data'], + key=lambda x: datetime.strptime(x['created'], '%Y-%m-%d %H:%M'), + reverse=True + ) + data['article_data'] = sorted_articles + return data diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b59f293 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +datetime +python-dateutil==2.9.0.post0 +requests +feedparser==6.0.11 +PyYAML==6.0.1 \ No newline at end of file diff --git a/run.py b/run.py new file mode 100644 index 0000000..fab6f12 --- /dev/null +++ b/run.py @@ -0,0 +1,16 @@ +# 引入 check_feed 和 parse_feed 函数 +from friend_circle_lite.get_info import fetch_and_process_data, sort_articles_by_time +from friend_circle_lite.get_conf import load_config +import json + +# 爬虫部分内容 +config = load_config("./conf.yml") +if config["spider_settings"]["enable"]: + print("爬虫已启用") + json_url = config['spider_settings']['json_url'] + article_count = config['spider_settings']['article_count'] + print("正在从 {json_url} 中获取,每个博客获取 {article_count} 篇文章".format(json_url=json_url, article_count=article_count)) + result = fetch_and_process_data(json_url=json_url, count=article_count) + sorted_result = sort_articles_by_time(result) + with open("all.json", "w", encoding="utf-8") as f: + json.dump(sorted_result, f, ensure_ascii=False, indent=2) \ No newline at end of file