var articles = getArticles()
var classifyName = 'author' // 按作者分类
// var classifyName = 'time' // 按时间分类
var classifiedArticles = classifyArticle(articles, classifyName)
outputArticle(classifiedArticles, classifyName)
function getArticles() {
var $articles = $('.note-list .content')
var res = []
$articles.each(function () {
var $artcile = $(this)
var time = $artcile.find('.time').text()
if(time.indexOf('小时') !== -1
|| time.indexOf('分') !== -1
|| time.indexOf('秒') !== -1) {
time = '今天'
}
res.push({
author: $artcile.find('.name>a').text(),
title: $artcile.find('.title').text(),
href: $artcile.find('.title').attr('href'),
time: time
})
})
return res
}
function classifyArticle(articles, classifyName='author') {
var res = {}
articles.forEach(article => {
var key = article[classifyName]
if(classifyName === 'time') {
key = key.split(' ')[0]
}
if(!res[key]){
res[key] = []
}
res[key].push(article)
})
return res
}
function outputArticle(classifiedArticles, classifyName='author') {
var res = ['\n']
// 这边有些耦合。为了整体流程的清爽,忍了~
var otherInfoKey = classifyName === 'author' ? 'time' : 'author'
if(classifyName === 'author') {
let dailyUpdateNames = []
var minArticleLen = (new Date()).getDate() - 13 + 1// 1月13号开始
for (var classifyName in classifiedArticles) {
let articles = classifiedArticles[classifyName]
// 有 bug。认为收录的文章大于天数,则算完成
if(articles.length >= minArticleLen) {
dailyUpdateNames.push(classifyName)
}
}
res.push(`日更完成名单 ${dailyUpdateNames.join()}\n\n`)
}
for (var classifyName in classifiedArticles) {
res.push(`### ${classifyName} \n`)
let articles = classifiedArticles[classifyName]
res.push(articles.reduce((prevRes, curr)=>{
return prevRes + `* [${curr.title}](${curr.href}) ${curr[otherInfoKey]} \n`
}, ''))
res.push('\n')
}
return res.join('')
}