Bilibili-Evolved/builder/node/donate-table/index.ts
2021-05-10 13:55:17 +08:00

50 lines
1.7 KiB
TypeScript

import parse from 'csv-parse/lib/sync'
import fs from 'fs'
const files = process.argv.slice(2)
const parseAliPay = (csv: Record<string, string>[]) => {
csv.forEach(item => {
item.sortKey = Number(new Date(item.)).toString()
item.toString = () => {
let name = ''
if (item. !== '收钱码收款') {
name += item. + ' '
}
name += item. + ' ' + item.
return `| ${item..replace(/-/g, '.')} | ${name} | ${item..substring(item..length - 4)} | ¥${item['订单金额(元)']} |`
}
})
return csv
}
const parseWeChat = (csv: Record<string, string>[]) => {
csv.forEach(item => {
item.sortKey = Number(new Date(item.)).toString()
item.toString = () => {
let name = item.
const noteMatch = item..match(/付款方留言:(.+)/)
if (noteMatch) {
name += ' ' + noteMatch[1]
}
if (item..trim() !== '/') {
name += ' ' + item.
}
item. = item..trim()
return `| ${item..replace(/-/g, '.')} | ${name} | ${item..substring(item..length - 4)} | ${item['金额(元)']} |`
}
})
return csv
}
const items = files.map(file => {
const text = fs.readFileSync(file, { encoding: 'utf-8' })
const csv = parse(text, { columns: true })
if (file.includes('支付宝')) {
return parseAliPay(csv)
}
if (file.includes('微信')) {
return parseWeChat(csv)
}
console.warn(`not parse method for ${file}`)
return []
}).flat().sort((a, b) => parseInt(b.sortKey) - parseInt(a.sortKey))
fs.writeFileSync('dist/output.md', items.join('\n'))