UNPKG

cnpoems

Version:

中国 唐诗宋词(诗歌,论语,诗经等) (Chinese poems util)

130 lines (121 loc) 4.38 kB
import songciData from 'chinese-poetry/chinese-poetry/ci/宋词三百首.json'; import tangshiData from 'chinese-poetry/chinese-poetry/json/唐诗三百首.json'; import songAuthorData from 'chinese-poetry/chinese-poetry/json/authors.song.json'; import tangAuthorData from 'chinese-poetry/chinese-poetry/json/authors.tang.json'; // import songciData from 'chinese-poetry/chinese-poetry/ci/宋词三百首.json' assert { type: "json" }; // jest // import tangshiData from 'chinese-poetry/chinese-poetry/json/唐诗三百首.json' assert { type: "json" }; // jest // import songAuthorData from 'chinese-poetry/chinese-poetry/json/authors.song.json' assert { type: "json" }; // jest // import tangAuthorData from 'chinese-poetry/chinese-poetry/json/authors.tang.json' assert { type: "json" }; // jest import cnchar from 'cnchar'; import trad from 'cnchar-trad'; import { nanoid } from 'nanoid'; import _ from 'loadsh'; cnchar.use(trad); // cnchar.convert.simpleToTrad(string); // 简体 => 繁体 // cnchar.convert.simpleToSpark(string); // 简体 => 火星文 // cnchar.convert.tradToSimple(string); // 繁体 => 简体 // cnchar.convert.tradToSpark(string); // 繁体 => 火星文 // cnchar.convert.sparkToSimple(string); // 火星文 => 简体 // cnchar.convert.sparkToTrad(string); // 火星文 => 繁体 // string.convertSimpleToTrad(); // string.convertSimpleToSpark(); // string.convertTradToSimple(); // string.convertTradToSpark(); // string.convertSparkToSimple(); // string.convertSparkToTrad(); const songcis = _.cloneDeep(songciData); const tangshis = _.cloneDeep(tangshiData); const songciAuthors = _.cloneDeep(songAuthorData); const tangsiAuthors = _.cloneDeep(tangAuthorData); const songciList = [...songcis].map(item => { const author = [...songciAuthors].filter(aItem => aItem.name.convertTradToSimple() === item.author) item.info = author.length ? author[0]: { desc: '信息不详,未采集到', name: item.author, id: nanoid() } const pgIndex = _.random(item.paragraphs.length - 1) item.daySentence = item.paragraphs.filter((pg, pi) => pgIndex === pi)[0] return item }) const tangshiList = [...tangshis].map(item => { const author = [...tangsiAuthors].filter(aItem => aItem.name.convertTradToSimple() === item.author.convertTradToSimple()) item.info = author.length ? author[0]: { desc: '信息不详,未采集到', name: item.author, id: nanoid() } const pgIndex = _.random(item.paragraphs.length - 1) item.daySentence = item.paragraphs.filter((pg, pi) => pgIndex === pi)[0] return item }) const TradToSimpleFn = (data) => { if (typeof data !== 'object') { return data.convertTradToSimple() } if (!_.isArray(data)) { for (const key in data) { const val = data[key]; if (key!=='id') { data[key] = TradToSimpleFn(val) } } } else { data = data.map(item => { return TradToSimpleFn(item) }) } return data } const SimpleToTradFn = (data) => { if (typeof data !== 'object') { return data.convertSimpleToTrad() } if (!_.isArray(data)) { for (const key in data) { const val = data[key]; if (key!=='id') { data[key] = SimpleToTradFn(val) } } } else { data = data.map(item => { return SimpleToTradFn(item) }) } return data } const tangshiSimpleList = TradToSimpleFn(_.cloneDeep(tangshiList)); const tangshiTradList = SimpleToTradFn(_.cloneDeep(tangshiList)); const songciTradList = SimpleToTradFn(_.cloneDeep(songciList)); const getRandomItems = (arr, n = 10) => { const shuffled = _.cloneDeep(arr); let i = shuffled.length; const result = []; while (i-- && n > 0) { const randomIndex = Math.floor(Math.random() * (i + 1)); [shuffled[i], shuffled[randomIndex]] = [shuffled[randomIndex], shuffled[i]]; result.push(shuffled[i]); n--; } return result; } const songciRandomList = (n) => { return getRandomItems(songciList, n) } const tangshiRandomList = (n) => { return getRandomItems(tangshiSimpleList, n) } var info = { songciAuthors, tangsiAuthors, songciList, songciTradList, tangshiList, tangshiSimpleList, tangshiTradList, getRandomItems, songciRandomList, tangshiRandomList, } export { info as default} ;