本程序用于初始化Gitalk的评论
#本程序用于初始化Gitalk的评论
#Gitalk是Github Pages创建的博客的最佳插件,使用了Issues作为博客评论
#需要初始化评论的文章链接,把所有需要初始化的文章链接写到这里面,urls无论有没有中文都可以(代码已做处理)
#urls = ["https://longzeping.github.io/2017/02/07/%E4%B8%BA%E5%8D%9A%E5%AE%A2%E6%B7%BB%E5%8A%A0-Gitalk-%E8%AF%84%E8%AE%BA%E6%8F%92%E4%BB%B6/"]
urls = ["https://longzeping.github.io/2017/02/07/为博客添加-Gitalk-评论插件/"]
username = "long***ing" # GitHub 用户名
token = "82c975b05**********d9375c198cc401dc287" # GitHub Token,在账户设置中申请
repo_name = "lon***ing.github.io" # 存放 issues
# Issue标签,Issue可以加很多个标签
label1 = "Gitalk" # Issue的标签1,我用"Gitalk"标识这类issue是给Gitalk插件使用的
require 'open-uri'
require 'faraday'
require 'active_support'
require 'active_support/core_ext'
# 建立到指定用户名、指定指定仓库的issues的链接
conn = Faraday.new(:url => "https://api.github.com/repos/#{username}/#{repo_name}/issues") do |conn|
conn.basic_auth(username, token)
conn.adapter Faraday.default_adapter
end
urls.each_with_index do |url, index|
url = URI::escape(url) #url中可能含有中文,需要先编码
url = URI::parse(url)
#从url读取网页,并获取网页的标题(title),标题可能是中文,所以要使用UTF-8编码
title = open(url).read.scan(/<title>(.*?)<\/title>/).first.first.force_encoding('UTF-8')
# Issue的标签2,我用特定博文的url的pathname作标签,让issue和博文对应,注意要解码,否则会标签长度
#用这句直接获取pathname,比下面通过正则表达式获取要方便
uri = URI(url)
label2 = URI::unescape(uri.path)
#下面两句是去掉网址,只保留pathname,类似window.location.pathname
#label2 = /[^:\/]\/.*/.match(label2)
#label2 = /\/.*/.match(label2)
# Issue的内容,内容为带链接的标题(Issue支持Markdown,使用Markdown语法)
# issueBody = ""
#上面用markdown语法,可以写进去,但访问时被跳转了,所以改为直接写url
issueBody = "#{title} #{url}"
# print(label2)
# print(issueBody)
# exit
# post一个json格式的数据给前面建立的连接,这个json格式的数据描述了一个issue
response = conn.post do |req|
req.body = { body: issueBody, labels: [label1, label2], title: title }.to_json
end
puts response.body
end
# Gitalk
gitalk:
enable: true #是否开启Gitalk评论
clientID: aafe7c361a63df2c2436 #生成的clientID
clientSecret: 2d742104da5ec426ca74344e39542faeb8fb9239 #生成的clientSecret
repo: longzeping.github.io #仓库名称
owner: longzeping #github用户名
admin: longzeping
distractionFreeMode: true #是否启用类似FB的阴影遮罩