Python gets the friend's articles from hexo's friend-links

Related tags

python hexo butterfly
Overview
当前版本1.13
——————————————————————————————
下一版本

更新日志
2021/2/12   加入了友链链接的去重,适配了中文时间sitemap抓取,
同时解决了时间格式不统一的问题导致的朋友圈时间显示错乱问题


什么是友链朋友圈?

你是否经常烦恼于友链过多但没有时间浏览?那么友链朋友圈将解决这一痛点。你可以随时获取友链网站的更新内容,并了解友链的活跃情况。
效果图如下:
image.png
因为是 beta 版本,所以不可避免还有错误,为了更好制作这个项目,发现 bug。我首先 release 这个 beta 版本。
预览链接https://zfe.space/friendcircle/

步骤一:配置 leancloud

① 账号注册

前往leancloud 国际版官网(推荐国际版)注册账号,登录。
image.png

② 新建应用

进入控制台创建一个应用,名字随意。
image.png

③ 绑定应用域名

我一般习惯绑定域名,不绑定貌似也可以,
将一个二级域名指向 leancloud 提供的 CNAME,
然后访问二级域名。
image.png
image.png

④ 获取应用 Keys

将应用 ID(AppID)和应用密钥(AppKey)保存下来,方便后面步骤使用。
image.png

步骤二:配置自动爬取友链文章的 github action

①fork 项目

前往hexo-circle-of-friendshttps://github.com/Zfour/hexo-circle-of-friends)fork 我的项目。
image.png

② 创建名为GITHUB_TOKEN的 TOKEN

前往token 链接添加一个名为GITHUB_TOKEN的 Token,并为赋予repoadmin:repo_hookworkflow的权限。
如果你有了就不用创建了。

ccknbc 友情提示说,也可以不用添加这个 TOKEN

image.png

③ 前往环境变量设置配置环境变量

Name分别以 APPID、APPKEY、LINK 创建环境变量。
Value 分别填入刚刚保存 Leancloud 的应用 ID(AppID)和应用密钥(AppKey)以及你的友链链接(https://zfe.space/link/
保存三个环境变量。
image.png
image.png

④ 给项目点上收藏

github action 将自动在每天 8 点到晚上 11:59 执行爬取任务。每半小时执行一次。
image.png
image.png
当执行完成后,访问你的leancloud后台,进入刚刚创建的项目,如果出现 friend_list 的 class 和 friend_poor 的 class 则说明配置成功。
可以查看爬取情况,对友链链接进行排错和查看存活情况。
或提醒好友,该部署 sitemap 了。
image.png

步骤三:配置 vercel api

① 注册

为了不暴露leancloud的应用 ID(AppID)和应用密钥(AppKey),同时减少前端处理数据的压力,还需配置 vercel api。
首先前往  Vercel 官网,点击右上角的 sign up 进行注册。
image.png
极有可能遇到的 bug
若注册时提示 Error:This user account is blocked.Contact [email protected] for more information.
这是由于 Vercel 不支持大部分国内邮箱。可以将 github 账号主邮箱改为 Gmail 邮箱。
但是根据群友反应,将 github 账号主邮箱切换为 Gmail 以后,Vercel 又会提示需要使用手机号码验证。然而 github 并没有提供手机号码绑定的内容。
综上,建议一开始注册 github 账号时就使用 Gmail 等国外邮箱进行注册。

  1. 国内访问Gmail的方案:
    • 直接使用 QQ 邮箱手机版,它提供 Gmail 的访问路线,可以直接注册并使用。
    • 使用 Ghelper 等浏览器插件访问。详情可以参考这篇文章:玩转 Microsoft-Edge
  2. 若是执着于当前Github账号,可以参考以下方案进行尝试:
    • 完成了 Gmail 等国外邮箱的注册,打开 github-> 头像 ->settings->Emails->Add email address, 并完成邮箱验证。
    • 在 Add email address  下方的 Primary email address  选项中将 Gmail 设置为主邮箱。

② 新建项目,fork 我的项目

打开dashboard点击新建项目的New Project按钮。点击导入第三方库。
image.png

填入俺提供的自建 API 项目地址:
https://github.com/Zfour/hexo-circle-of-friends-api

image.png
选择私有账户。点击select

image.png
选择 github 按钮然后会帮你将仓库克隆到你的 github 中,填入自定义仓库名称。
image.png

之后会识别出项目文件,单击  Continue
image.png
Vercel  的  PROJECT NAME  可以自定义,不用太过在意,但是之后不支持修改,若要改名,只能删除  PROJECT  以后重建一个了。下方三个选项保持默认就好。

image.png

此时点击 Deploy,Vercel  的 api 部署已经完成了一半。

③ 配置环境变量

进入应用,点击 Settings 选择Envionment Variables标签配置环境变量
Name分别以 LEANCLOUD_ID、LEANCLOUD_KEY 创建环境变量。
Value 分别填入刚刚保存 Leancloud 的应用 ID(AppID)和应用密钥(AppKey)。
image.png
image.png

④ 检查 API 是否配置成功

访问API 链接(图中链接+’/api’),如我的为(https://hexo-circle-of-friends-api.vercel.app/api
如果显示数据则说明 API 配置成功。

注意!!!
如果不成功请View Build Logs,然后手动 develope 一下

image.png
image.png

image.png

步骤四:配置 HEXO 页面

这里以 butterfly 主题为例。进行配置。

① 下载模板文件

前往Butterfly-friend-poor-html下载模板文件,放入根目录文件夹的 source 文件夹里。
image.png

② 引入 js

打开根目录的_config.butterfly 在 inject 的 bottom 处添加以下 vuejs 和本地 js 的代码。

xml
1
2
3
4
5
inject:
head:
bottom:
- <script src="https://cdn.jsdelivr.net/npm/[email protected]">script>
- <script src="/friendcircle/request.js">script>

③ 修改 api 地址

将以下代码中的链接换位你部署的 api 链接即可。

javascript
1
requests_url = "https://hexo-circle-of-friends-api.vercel.app/api";

④ 查看效果

hexo g 并 hexo s 访问你的域名+/friendcircle 则可查看效果。
image.png

⑤ 添加到导航栏

这个太简单了就不说了。

常见问题

目前根据群友反馈有以下问题:

① 目前群有反馈,js 文件压缩会出 bug,所以请尽量避免 js 压缩,你可以选择通过 jsdCDN 引入
② 如果 github action 无法提交 commit 请删除time.log再执行一遍即可
③ 如果配置了 api 但无法访问,请手动 develope verel 应用一下

最后给我的售后打个广告,有问题欢迎加群 674527148 询问。

当前版本 技术预览版 1.12

更新日志:

① 修复了时间比较时存在的时区不统一造成的最新文章判断错误问题。
② 修改了 sitemap 的爬取策略,即 dom 层级在三个层级以上,即’域名/博客目录/文章’,避免爬取 index 等。
适配了拥有标准时间格式’2021-2-11’格式的博客文章页
③ 修改了请求默认时间为 15s,降低了爬取错误的发生。
④ 修改了日志打印的格式,使其更加直观易懂
⑤ 增加了 gitee 友链获取的方式
⑥ 适配了截图式友链的友链获取

目前待解决的问题:

① 中文时间的适配?
② 很多人安装了各种不同格式的友链插件或者使用了各种不同格式的友链,
是否需要通过 xml 获取或者用 gitee-api 进行 api 的衔接?
③ 洪哥提出的使用 archives 链接的方案是否需要马上实现?

经过一天的群友测试,1.1 版本技术预览版本已发布
因为 aki 和洪总的友链是截图形式的,
本着麻烦用户就是犯罪的原则,我进行了这种截图形式和截图与原生混合形式的适配
最新 1.11 版本已更新

最新 1.12 版本已更新
适配了 gitee 友链
可以通过编辑userinfo.txt的内容爬取友链仓库的信息

xml
1
2
3
owner: zfe
repo: friend
state: open

重要提示:

:后面有一个空格
owner: zfe #用户名
repo: friend #仓库名
state: open #抓取提交的 issue
state: progressing #抓取进行中的 issue
state: closed #抓取完成的 issue

issue 格式如下,yaml 代码块不能省略:

markdown
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
**标题请书写你的链接,不要写其他内容**

```yaml
# 显示名称
name: 小冰博客

# 跳转地址
link: https://zfe.space/

# 你的头像
avatar: https://zfe.space/images/headimage.png

# 你的描述
descr: 咕咕咕
```
Issues
  • 樱花

    樱花

    sakura 樱花主题分包,友链规则可以正常使用,主页规则有点问题,我怀疑是获取文章发布时间的字符串需要截取,但咱也不会截啊,等冰老师来看看怎么搞。

    bug 
    opened by brqs 3
  • 写了多线程版本

    写了多线程版本

    emmm 本来要23分钟的东西3分钟就跑完了

    opened by 2X-ercha 2
  • 换个链接抓取

    换个链接抓取

    opened by zhheo 1
  • butterfly主题开启懒加载后图片无法加载出来

    butterfly主题开启懒加载后图片无法加载出来

    开启懒加载后

    image

    关闭懒加载后

    image

    opened by wayne0926 1
  • 6

    6

    6

    opened by brqs 0
  • * feat(.gitignore): 添加git例外文件

    * feat(.gitignore): 添加git例外文件

    • feat(handlers.coreSettings.py): 增加全局配置控件,载入各方面设置
    • feat(request_data.request.py): 重构request.py请求器
    • feat(request_data.requestOld.py): 备份request.py
    • feat(request_data.middleware.py): 添加请求器中间件 UA处理 & 编码处理。
    • feat(settings.py): 增加全局settings.py文件,用于设置
    • feat(run.py): 增加debug模式时使用不同的精益云
    • style(*): 增加注释
    • todo(settings.py): 将请求器部分超时设置迁移过来
    opened by DeSireFire 0
  • 主程序减肥,结构分离

    主程序减肥,结构分离

    • feat(handlers.coreDatas.py): 增加数据处理控件,分离自run.py
    • feat(handlers.coreLink.py): 增加友链处理控件,分离自run.py
    • feat(handlers.coreSettings.py): 增加增加全局设置控件初始值和debug模式自检
    • feat(component.getTime.py): 增加时间信息处理组件
    • feat(component.ohter.py): 增加其他组件,备用
    • feat(request_data.request.py): 打印调整
    • feat(run.py): 重构主程序结构,减肥
    • feat(runOld.py): 备份主程序
    • feat(settings.py): 增加一些变量
    • feat(run.py): 增加debug模式时使用不同的精益云
    • style(*): 添加主程序的执行流程说明
    • todo(settings.py): 将请求器部分超时设置迁移过来
    • todo(coreDatas.py): 数据处理leancloud对象传递分离扔不完全或可能存在问题。
    opened by DeSireFire 0
  • * feat(handlers.coreRequest.py): 开发信息的多线程请求处理器

    * feat(handlers.coreRequest.py): 开发信息的多线程请求处理器

    • feat(component.getThread.py): 增加多线程回调组件
    • feat(component.getWeb.py): 增加网页请求组件
    • style(*): 添加部分注释
    • todo(coreDatas.py): 数据处理leancloud对象传递分离扔不完全或可能存在问题。
    • todo(run.py): 待有空实装多线程,主程序不敢动
    opened by DeSireFire 0
  • 【临时反馈区】配置出问题之类的可以在这里反馈

    【临时反馈区】配置出问题之类的可以在这里反馈

    冰老师不运维这个项目已经很久了,今天才发现冰老师说明书那一堆待解决问题(头疼

    然后冰老师也没给我友链朋友圈仓库setting的权限,所以我暂时也没办法开Discussions,只能在这里临时开个issus用于讨论

    另外老说明书也有一部分配置内容跟不上现在的版本,新说明书已经在写了,会和3.0版本同步发布(具体什么时候得等店长写完新UI)

    help wanted question 
    opened by 2X-ercha 0
  • feat(handlers/corelink.py): 对 WordPress 平台的抓取支持

    feat(handlers/corelink.py): 对 WordPress 平台的抓取支持

    WordPress 的小伙伴也可以玩耍。❤️

    opened by fongsoul 9
  • 【功能建议】【3.0预期】希望增加文章更新的展示建议

    【功能建议】【3.0预期】希望增加文章更新的展示建议

    我发现目前爬取文章的逻辑是对比文章的发布时间选取最新的文章作为展示,但是如果有历史文章更新了就不会得到展示。如果可能的话,希望增加更新文章的展示。

    duplicate enhancement 
    opened by hermitlsr 6
Releases(3.1)
  • 3.1(Sep 14, 2021)

    目前 release 3.1 版本: ① 支持butterfly、volantis、matery、sakura、fluid主题的友链获取 ② 支持小康友链及 volantis 主题友链,即部署于 gitee 上的 issuse 友链获取 ③ 支持 butterfly、volantis、matery、sakura、fluid主题的最新文章获取 ④ 去除sitemap,新增目前最通用的atom和rss规则 ⑤ 拥有友链屏蔽、关键词屏蔽、等自定义 yaml 的配置项 ⑥ 代码重构并规范化,便于二次开发 ⑦ 可以支持更新时间和创建时间排序 ⑧ 未适配的hexo主题和非hexo用户也可使用(使用方法见说明书) ⑨ 可以爬取typecho类型的博客

    bug修复 ① 重复爬取同一文章问题 ② 非bf主题爬取报错 ③ sitemap重新置后(不通用) ④ hexo-theme-sakura主题两种时间格式引发错误 ⑤ 屏蔽链接修复

    Source code(tar.gz)
    Source code(zip)
  • 3.0(Sep 8, 2021)

    目前 release 3.0 版本: ① 支持butterfly、volantis、matery、sakura、fluid主题的友链获取 ② 支持小康友链及 volantis 主题友链,即部署于 gitee 上的 issuse 友链获取 ③ 支持 butterfly、volantis、matery、sakura、fluid主题的最新文章获取 ④ 去除sitemap,新增目前最通用的atom和rss规则 ⑤ 拥有友链屏蔽、关键词屏蔽、等自定义 yaml 的配置项 ⑥ 代码重构并规范化,便于二次开发 ⑦ 可以支持更新时间和创建时间排序 ⑧ 未适配的hexo主题和非hexo用户也可使用(使用方法见说明书)

    bug修复 ① 重复爬取同一文章问题 ② 非bf主题爬取报错 ③ sitemap重新置后(不通用) ④ hexo-theme-sakura主题两种时间格式引发错误 ⑤ 屏蔽链接修复

    Source code(tar.gz)
    Source code(zip)
  • 2.0(Jul 18, 2021)

    目前 release 2.0 版本: ① 支持butterfly、volantis、matery、sakura、fluid主题的友链获取 ② 支持小康友链及 volantis 主题友链,即部署于 gitee 上的 issuse 友链获取 ③ 支持 butterfly、volantis、matery、sakura、fluid主题的最新文章获取 ④ 去除sitemap,新增目前最通用的atom和rss规则 ⑤ 拥有友链屏蔽、关键词屏蔽、等自定义 yaml 的配置项 ⑥ 代码重构并规范化,便于二次开发

    bug修复 ① 重复爬取同一文章问题 ② 非bf主题爬取报错 ③ sitemap重新置后(不通用) ④ hexo-theme-sakura主题两种时间格式引发错误 ⑤ 屏蔽链接修复 ⑥ sitemap的各种问题

    Source code(tar.gz)
    Source code(zip)
  • 1.19(Jun 9, 2021)

    目前 release 1.19 版本: ① 支持butterfly、volantis、matery、sakura、fluid主题的友链获取 ② 支持小康友链及 volantis 主题友链,即部署于 gitee 上的 issuse 友链获取 ③ 支持 butterfly、volantis、matery、sakura、fluid主题的最新文章获取 ④ 支持大部分拥有 sitemap 网站的文章获取 ⑤ 拥有友链屏蔽、关键词屏蔽、等自定义 yaml 的配置项 ⑥ 代码重构并规范化,便于二次开发

    bug修复 ① 重复爬取同一文章问题 ② 非bf主题爬取报错 ③ sitemap重新置后(不通用) ④ hexo-theme-sakura主题两种时间格式引发错误 ⑤ 屏蔽链接修复

    Source code(tar.gz)
    Source code(zip)
  • 1.18(May 19, 2021)

  • 1.17(Apr 30, 2021)

  • 1.16(Apr 7, 2021)

  • 1.14(Feb 17, 2021)

    加入了友链链接的去重,适配了中文时间sitemap抓取, 同时解决了时间格式不统一的问题导致的朋友圈时间显示错乱问题

    Source code(tar.gz)
    Source code(zip)
  • 1.12(Feb 11, 2021)

    gitee友链需配置txt中的配置选项 userinfo.txt

    owner: zfe repo: friend state: open

    :后有空格请注意 state: open #抓取提交的issue state: progressing #抓取进行中的issue state: closed #抓取完成的issue

    Source code(tar.gz)
    Source code(zip)
  • 1.11(Feb 11, 2021)

    适配了https://akilar.top/ 的截图样式 以及适配了https://blog.zhheo.com/ 的混合样式的友链获取 另外增加了筛选条件,可去除部分非友链链接

    Source code(tar.gz)
    Source code(zip)
The Foursquare API client for Python

foursquare Python client for the foursquare API. Philosophy: Map foursquare's endpoints one-to-one Clean, simple, Pythonic calls Only handle raw data,

Mike Lewis 390 Oct 12, 2021
Python wrapper for Wikipedia

Wikipedia API Wikipedia-API is easy to use Python wrapper for Wikipedias' API. It supports extracting texts, sections, links, categories, translations

Martin Majlis 267 Oct 19, 2021
Python Twitter API

Python Twitter Tools The Minimalist Twitter API for Python is a Python API for Twitter, everyone's favorite Web 2.0 Facebook-style status updater for

Mike Verdone 2.7k Oct 16, 2021
Python Twitter API

Python Twitter Tools The Minimalist Twitter API for Python is a Python API for Twitter, everyone's favorite Web 2.0 Facebook-style status updater for

null 2.7k Oct 20, 2021
Python interface to the LinkedIn API

Python LinkedIn Python interface to the LinkedIn API This library provides a pure Python interface to the LinkedIn Profile, Group, Company, Jobs, Sear

ozgur 789 Oct 21, 2021
A new coin listing alert bot using Python, Flask, MongoDB, Telegram API and Binance API

Bzzmans New Coin Listing Detection Bot Architecture About Project Work in progress. This bot basically gets new coin listings from Binance using Binan

Eyüp Barlas 3 Oct 20, 2021
Twitter bot that finds new friends in Twitter.

PythonTwitterBot Twitter Bot Thats Find New Friends pip install textblob pip install tweepy pip install googletrans check requirements.txt file Env

IbukiYoshida 4 Aug 11, 2021
Discord Panel is an AIO panel for Discord that aims to have all the needed tools related to user token interactions, as in nuking and also everything you could possibly need for raids

Discord Panel Discord Panel is an AIO panel for Discord that aims to have all the needed tools related to user token interactions, as in nuking and al

null 6 Oct 8, 2021
A Telegram Bot written in Python for mirroring files on the Internet to your Google Drive

No support is going to be provided of any kind, only maintaining this for vps user on request. This is a Telegram Bot written in Python for mirroring

Sunil Kumar 6 Oct 20, 2021
Aria/qBittorrent Telegram mirror/leech bot

This is a Telegram Bot written in Python for mirroring files on the Internet to your Google Drive or Telegram. Based on python-aria-mirror-bot Feature

null 6 Oct 22, 2021
Automatically detect changes made to the official Telegram sites.

?? Telegram Web Crawler This project is developed to automatically detect changes made to the official Telegram sites. This is necessary for anticipat

Il'ya 33 Oct 12, 2021
A Discord bot for osu!

This is the mostly-complete repo for the owo Discord osu! bot which you can invite here. As you look through this repo, please keep in mind that all o

Stevy 27 Oct 3, 2021
A collective list of free APIs for use in software and web development.

Public APIs A collective list of free APIs for use in software and web development. A public API for this project can be found here! For information o

null 165k Oct 22, 2021
Google Sheets Python API v4

pygsheets - Google Spreadsheets Python API v4 A simple, intuitive library for google sheets which gets your work done. Features: Open, create, delete

Nithin Murali 1.2k Oct 15, 2021
Slam Mirror Bot is a multipurpose Telegram Bot written in Python for mirroring files on the Internet to our beloved Google Drive.

Slam Mirror Bot is a multipurpose Telegram Bot written in Python for mirroring files on the Internet to our beloved Google Drive.

Abinash939 1 Oct 10, 2021
Facebook open graph api implementation using the Django web framework in python

Django Facebook by Thierry Schellenbach (mellowmorning.com) Status Django and Facebook are both rapidly changing at the moment. Meanwhile, I'm caught

Thierry Schellenbach 1.4k Oct 12, 2021
Secret messaging app which you can use to communicate with your friends by encrypting / decrypting secret messages or sending secret message through mail.

Secret-Whisper A Secret messaging app which you can use to communicate with your friends by encrypting / decrypting secret messages ?? or sending secr

null 4 May 31, 2021
Aria/qBittorrent Telegram mirror/leech bot

This Telegram Bot written in Python for mirroring files on the Internet to our Google Drive or Telegram. Based on python-aria-mirror-bot Features: qBi

Anas 131 Oct 13, 2021
✨ A Telegram mirror/leech bot By SparkXcloud Group ✨

SparkXcloud-Gdrive-MirrorBot SparkXcloud-Gdrive-MirrorBot is a multipurpose Telegram Bot writen in Python for mirroring files on the Internet to our b

null 5 Oct 21, 2021