github个人信息展示

github新功能profile Readme结合hugo生成的blog进行自动更新

post thumb
Tools
作者 Louis 发表于 2020年7月27日

[TOC]

创建一个 和自己github id同名的 repositories,修改你想展示的文字到README.md,然后回到你的首页就有了。然后有大佬已经有写一些插件直接用,可以展示github的一些汇总信息,start数、commit数、issues数等

效果图

可以上我的github查看一下.

编写自动更新源码

采用golang进行自动发布. blog采用的是hugo生成。 采用gorequest获取blog生成的index.json. 然后进行截取所需信息即可.

package main

import (
	"bytes"
	"crypto/tls"
	"fmt"
	"github.com/parnurzeal/gorequest"
	"io/ioutil"
	"log"
	"net/http"
	"time"
)

type blog struct {
	Categories []string `json:"categories"`
	Tags       []string `json:"tags"`
	Permalink  string   `json:"permalink"`
	Title      string   `json:"title"`
	Contents   string   `json:"contents"`
}

type Blogs []struct {
	collet []blog
}

var (
	githubUserName = "oldthreefeng"
	// 取最新的6篇文章
	max            = 5
)

func main() {
	res := make([]blog, 0)
	response, data, errs := gorequest.New().TLSClientConfig(&tls.Config{InsecureSkipVerify: true}).
		Get("https://www.fenghong.tech/index.json").EndStruct(&res)
	if errs != nil || http.StatusOK != response.StatusCode {
		log.Fatal(errs, data)
	}
	buf := &bytes.Buffer{}
	buf.WriteString("\n\n")
	cstSh, _ := time.LoadLocation("Asia/Shanghai")
	updated := time.Now().In(cstSh).Format("2006-01-02 15:04:05")
	buf.WriteString("### 我的近期动态\n\n⭐️ Star [个人主页](https://github.com/" + githubUserName + "/" + githubUserName + ") 后会自动更新,最近更新时间:`" + updated + "`\n\n")
	for k, v := range res {
		if k > max {
			break
		}
		url := v.Permalink
		title := v.Title
		buf.WriteString("📝 * " + " [" + title + "](" + url + ")\n\n" + " \n")
	}
	buf.WriteString("\n\n")

	fmt.Println(buf.String())

	readme, err := ioutil.ReadFile("README.md")
	if nil != err {
		log.Fatalf("read README.md failed: %s", data)
	}
	startFlag := []byte("<!--events start -->")
	beforeStart := readme[:bytes.Index(readme, startFlag)+len(startFlag)]
	newBeforeStart := make([]byte, len(beforeStart))
	copy(newBeforeStart, beforeStart)
	endFlag := []byte("<!--events end -->")
	afterEnd := readme[bytes.Index(readme, endFlag):]
	newAfterEnd := make([]byte, len(afterEnd))
	copy(newAfterEnd, afterEnd)
	newReadme := append(newBeforeStart, buf.Bytes()...)
	newReadme = append(newReadme, newAfterEnd...)
	if err := ioutil.WriteFile("README.md", newReadme, 0644); nil != err {
		log.Fatalf("write README.md failed: %s", data)
	}
}

写完之后. 执行即可.

$ go run main.go 

我的README模板如下. <!--events start --> , <!--events end -->之间的都是go生成文章链接的.

Currently working on [JUNHSUE](https://www.junhsue.com/) Read [my blog](https://www.fenghong.tech/) or add my WeChat account:
<div align="center">
  <p>
    
  <img src="https://www.fenghong.tech/images/images/wechat-qrcode.png" width="300" alt="接引道人" />

  </p>
</div>

### 我在 GitHub 上的统计

![louis's github stats](https://github-readme-stats.vercel.app/api?username=oldthreefeng&show_icons=true&hide_border=false)

<!--events start -->


<!--events end -->

 💗🌙💗🌙- [www.fenghong.tech](https://www.fenghong.tech)
Tags:
上一篇
kubernetes ingress rewrite配置

文章推荐