longzeping
8/5/2018 - 12:56 AM

本程序用于初始化Gitalk的评论

本程序用于初始化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 = "![#{title}](#{url})"
    #上面用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的阴影遮罩