Hexo 添加 Github 贡献图

news2024/11/16 15:26:59

参考:https://akilar.top/posts/1f9c68c9/

安装 hexo-filter-gitcalendar 插件

  1. 执行命令安装 hexo-filter-gitcalendar 插件

    npm install hexo-filter-gitcalendar --save
    
  2. 在站点配置文件 _config.yml 或者主题配置文件如 _config.butterfly.yml 中添加

    # hexo-filter-gitcalendar
    # see https://akilar.top/posts/1f9c68c9/
    gitcalendar:
      enable: true # 开关
      priority: 5 #过滤器优先权
      enable_page: / # 应用页面
      # butterfly挂载容器
      layout: # 挂载容器类型
        type: id
        name: recent-posts
        index: 0
      user: ShiJieCloud #git用户名
      apiurl: "https://gitcalendar.zfe.space/api" #替换自建 api
      minheight:
        pc: 280px #桌面端最小高度
        mibile: 0px #移动端最小高度
      # color: "['#e4dfd7', '#f9f4dc', '#f7e8aa', '#f7e8aa', '#f8df72', '#fcd217', '#fcc515', '#f28e16', '#fb8b05', '#d85916', '#f43e06']" #橘黄色调
      color: "['#ebedf0', '#fdcdec', '#fc9bd9', '#fa6ac5', '#f838b2', '#f5089f', '#c4067e', '#92055e', '#540336', '#48022f', '#30021f']" #浅紫色调
      # color: "['#ebedf0', '#f0fff4', '#dcffe4', '#bef5cb', '#85e89d', '#34d058', '#28a745', '#22863a', '#176f2c', '#165c26', '#144620']" #翠绿色调
      # color: "['#ebedf0', '#f1f8ff', '#dbedff', '#c8e1ff', '#79b8ff', '#2188ff', '#0366d6', '#005cc5', '#044289', '#032f62', '#05264c']" #天青色调
      container: .recent-post-item(style='width:100%;height:auto;padding:10px;') #父元素容器,需要使用pug语法
      gitcalendar_css: https://cdn.cbd.int/hexo-filter-gitcalendar/lib/gitcalendar.css
      gitcalendar_js: https://cdn.cbd.int/hexo-filter-gitcalendar/lib/gitcalendar.js
    
  3. 参数释义

    参数备选值/类型释义
    prioritynumber【可选】过滤器优先级,数值越小,执行越早,默认为10,选填
    enabletrue/false【必选】控制开关
    enable_pagepath/all【可选】填写想要应用的页面的相对路径(即路由地址),如根目录就填’/‘,分类页面就填’/categories/‘。若要应用于所有页面,就填’all’,默认为’/‘
    layout.typeid/class【可选】挂载容器类型,填写id或class,不填则默认为id
    layout.nametext【必选】挂载容器名称
    layout.index0和正整数【可选】前提是layout.type为class,因为同一页面可能有多个class,此项用来确认究竟排在第几个顺位
    usertext【必选】git用户名
    apiurlurl【可选】默认使用提供文档提供的api,但还是建议自建api,参考教程:自建API部署
    minheight.pc280px【可选】桌面端最小高度,默认为280px
    minheight.mobile0px【可选】移动端最小高度,默认为0px
    colorlist【可选】一个包含11个色值的数组,文档给出了四款预设值
    containerpug【可选】预留的父元素容器,用以适配多主题,需要用pug语法填写,目前已适配butterfly,volantis,matery,mengd主题,这四个主题,插件会自自动识别_config.yml内填写的theme配置项。其余主题需要自己填写父元素容器。
    gitcalendar_cssURL【可选】自定义CSS样式链接
    gitcalendar_jsURL【可选】自定义js链接
  4. 配置好【git用户名】和【apiurl】之后执行命令本地访问即可

    hexo cl && hexo g && hexo s
    

使用 Vercel 自建 API 部署

部署自建 API

参考教程:https://github.com/Zfour/python_github_calendar_api

  1. 前往 Vercel 官网,点击【SignUp】注册,建议使用 GitHub 账号登录

    在这里插入图片描述

  2. 登录成功后,进入【Dashboard】,点击【Create a New Project】创建一个项目

    在这里插入图片描述

  3. 在弹出的窗口中,默认即可,点击【Install】

    在这里插入图片描述

  4. 点击【Import Third-Party Git Repository →】,导入第三方仓库

    在这里插入图片描述

  5. 在输入框中输入下面仓库的链接,点击【Continue】

    https://github.com/Zfour/python_github_calendar_api.git
    

    在这里插入图片描述

  6. 自定义仓库名,点击【Create】

    在这里插入图片描述

  7. 等待 Deploy 完成

    在这里插入图片描述

  8. 点击中间的框,在浏览器的 Url 后面添加参数【/api/?git用户名】即可获取 Json 格式的数据,自建 API 部署成功

    在这里插入图片描述


部署自建 API 报错误

访问链接时报 500: INTERNAL_SERVER_ERROR 错误

在这里插入图片描述

解决方法:

发生错误的原始是因为 GitHub 改版导致匹配的正则表达式失效。

复制下面的代码替换掉 GitHub 仓库中的 /api/index.py 中的原代码即可正常获取数据。

# -*- coding: UTF-8 -*-
import requests
import re
from http.server import BaseHTTPRequestHandler
import json

def list_split(items, n):
    return [items[i:i + n] for i in range(0, len(items), n)]
def getdata(name):
    gitpage = requests.get("https://github.com/" + name)
    data = gitpage.text
    datadatereg = re.compile(r'data-date="(.*?)" data-level')
    datacountreg = re.compile(r'rx="2" ry="2">(.*?) contribution')
    datadate = datadatereg.findall(data)
    datacount = datacountreg.findall(data)
    datacount = list(map(int, [0 if i == "No" else i for i in datacount]))
    contributions = sum(datacount)
    datalist = []
    for index, item in enumerate(datadate):
        itemlist = {"date": item, "count": datacount[index]}
        datalist.append(itemlist)
    datalistsplit = list_split(datalist, 7)
    returndata = {
        "total": contributions,
        "contributions": datalistsplit
    }
    return returndata
class handler(BaseHTTPRequestHandler):
    def do_GET(self):
        path = self.path
        user = path.split('?')[1]
        data = getdata(user)
        self.send_response(200)
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        self.wfile.write(json.dumps(data).encode('utf-8'))
        return

绑定个人域名

绑定个人域名之后即可通过个人域名获取数据

  1. 登录成功后,进入【Dashboard】
  2. 点击部署的 API 项目
  3. 点击【Setting】
  4. 点击【Domains】
  5. 输入自定义的二级域名,点击【Add】添加
  6. 去域名服务商处添加域名解析记录,等待即可

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter录制脚本及报错:Could not create script recorder解决办法

本文分两部分:一、录制脚本最简单步骤;二、报错解决步骤 一、录制脚本步骤 1、右击【测试计划】添加一个线程组(用于存放录制的脚本); 2、右击测试计划添加一个HTTP代理服务器(添加--非测试元件--HTTP代理…

(mysql的相关操作)和(Navicat与MySQL的连接使用)

mysql的相关操作 详细教程 链接1: http://edu.jb51.net/mysql/mysql-tutorial.html 链接2: http://c.biancheng.net/view/2441.html mysql安装教程:https://blog.csdn.net/weixin_36369605/article/details/113599400?ops_request_misc%257B%2522request%255Fid%…

ABAP CDS-介绍(ABAP CDS视图)

目录前言架构概述CDS版本SAP平台CDS的可用性CDS其他的好处后续参考前言文章翻译自Tushar Sharma的文章,转载请注明原作者和译者!在SAP发展到SAP HANA版本之后,SAP内部的技术正在快速地变化,SAP开发业务应用程序的方式已经发生了范…

CUDA编程笔记(8)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言原子函数完全在GPU中归约性能比较总结前言 原子函数的合理使用 原子函数 在cuda里,一个线程的原子操作可以在不受其他线程的任何操作的影响下完成对…

快!用Vim

文章目录简介基操移动删改查搜索替换多文件操作text object赋值粘贴macro补全配色自定义配置映射插件常用插件gopython浏览补全格式化gitTmuxneovim简介 在 Linux 平台使用 Vim 编辑器,成为NB Vimer安装 vim 就不介绍了 基操 三种模式 inserta: append i: inser…

ESP-C3入门6. 使用UART串口

ESP-C3入门6. 使用UART串口一、简介二、UART使用的一般步骤三、使用的API1. uart_config_t结构体和设置参数函数uart_param_config()2. 专用函数设置参数3. 设置通信管脚uart_set_pin()4. 安装驱动程序uart_driver_install()5. 运行UART通信 uart_write_bytes()和uart_read_byt…

Spring Batch 批处理-执行上下文

引言 接着上篇:Spring Batch 批处理-作业监听器,了解作业监听器后,本篇就来了解一下Spring Batch执行上下文,来看看Spring Batch 如何在作业与步骤间进行数据共享。 作业与步骤上下文 语文中有个词叫上下文,比如&am…

设置mysql远程链接

一、 进入mysql数据库 mysql -uroot –p密码 二、 创建用户进行远程链接 Mysql>grant all privileges on *.* to duan%identified by 111111 with grant option; ‘duan’:用户名 ‘%’:表示所有主机都可以登录,如果‘ip’表示该主机可…

[GXYCTF2019]luck_guy1题解

无论风暴把我带到什么样的岸边,我都将以主人的身份上岸。 ——贺拉斯 目录 1.查壳 2.静态分析 分析信息 猜测 3.wp 1.查壳 x86-64 拖入64位IDA 2.静态分析 找到main函数,按下F5反编译 int __cdecl main(int argc, const char **argv, const cha…

Python Windows Apache部署Django项目运行环境

目录 一、安装Apache服务器 1、在官网http://httpd.apache.org/download.cgi或网上搜索下载zip压缩包 2、Apache相关配置 3、创建Apache服务器 解决报错AH00369: Failed to open the Windows service manager, perhaps you forgot to log in as Adminstrator? 4、启动ap…

【每周Java技术】2023.01.26 周四 到 01.29 周日

文章目录一、01.26 周四 大年初五1.1)Python的一道算法题目1.1.1) 题目1.1.2) 解答1.1.3) 知识点一、01.26 周四 大年初五 1.1)Python的一道算法题目 1.1.1) 题目 2437. 有效时间的数目 给你一个长度为 5 的字符串 time ,表示一个电子时钟…

产线工控设备安全经验分享

工控设备安全现状 工业控制系统是支撑国民经济的重要设施,是工业领域的神经中枢。现在工业控制系统已经广泛应用于电力、通信、化工、交通、航天等工业领域,支撑起国计民生的关键基础设施。 随着传统的工业转型,数字化、网络化和智能化的工…

机器学习算法竞赛实战--3,数据探索

数据挖掘是竞赛的核心模块之一,贯彻竞赛始终也是很多竞赛胜利的关键那么数据探索又是什么呢?可以解决哪些问题?首先应该明确3点,即如何确保自己准备好竞赛使用的算法模型如何为数据集选择最合适的算法如何定义可用于算法模型的特征…

安装DevStack稳定版本zed

STEP1: 创建stack用户(一定要!) sudo useradd -s /bin/bash -d /opt/stack -m stack sudo chmod x /opt/stack echo "stack ALL(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack sudo -u stack -i //用stack用户登陆 STEP2: git clone devsta…

SAP中物料价格改变导致的库存价值变动业务分析

基于审计的需求要看看物料在标准成本价格变更前后的库存成本变化情况。找了下资料,需要用到 CKMPCSEARCH这个事务,相当于是一个用于价格修改凭证查询的事务。但试了一下在本公司的系统中并没有从搜索到其菜单位置。 尝试直接输入Tcode后,是可…

CSRF 伪造跨域请求

文章目录一、什么是伪造跨域请求二、攻击方式三、防御措施1、检查Referer字段2、添加校验token一、什么是伪造跨域请求 伪造跨域请求(英语:Cross-site request forgery),通常缩写为 CSRF, 是一种挟制用户在当前已登录…

IntelliJ IDEA 2021.2(Community Edition)安装阿里编码规约插件,亲测有效

1.背景阿里巴巴java开发手册不断完善并出了很多版本到目前2023年1月截止,已经出了黄山版,在文章最后有参考资料可根据需要下载;随着企业对项目质量的要求,对开发代码也有了更高的要求和规范,借助阿里巴巴编码规约插件&…

redis geo 没有迁移手工插入数据

1、docker ps |grep redis2、docker exec -it qinghai-sc-xining-redis-single/eadd4cc4eefe bin\sh --进入redis容器[rootlocalhost ~]# [rootlocalhost ~]# [rootlocalhost ~]# [rootlocalhost ~]# docker ps|grep rediseadd4cc4eefe redis "docker-entrypoint.s…"…

python 气体扩散,在 Python中用数值模拟研究气体扩散

在 Python 中,可以使用数值模拟来研究气体扩散。 模拟气体扩散需要解决两个问题:流体动力学方程(如 Navier-Stokes 方程)和扩散方程。 文章目录Python 代码模拟气体扩散计算并显示气体浓度的均值和标准差研究气体扩展的高级方法Py…

Word控件Spire.Doc 【Table】教程(7): 如何在C#中用表格替换word文档中的文本

Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…