Bilibili-Evolved/dev-tools/donate-table/index.ts

65 lines
2.1 KiB
TypeScript

import { parse } from 'csv-parse/sync'
import * as 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>[]) => {
const items = csv
.filter(item => item. === '赞赏码')
.map(item => ({
...item,
sortKey: Number(new Date(item.)).toString(),
toString: () => {
let name = item.
if (name === '/') {
name = '匿名'
}
const noteMatch = item..match(/付款方留言:(.+)/)
if (noteMatch) {
name += ` ${noteMatch[1]}`
}
if (item..trim() !== '/') {
name += ` ${item.}`
}
item. = item..trim()
console.log(item, item.)
return `| ${item..replace(/-/g, '.')} | ${name} | ${item..substring(
item..length - 4,
)} | ${item['金额(元)']} |`
},
}))
return items
}
const items = files
.map(file => {
const text = fs.readFileSync(file, { encoding: 'utf-8' })
const csv = parse(text, { columns: true, bom: true, trim: 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.mkdirSync('dist/', { recursive: true })
fs.writeFileSync('dist/output.md', items.join('\n'))