diff --git a/docs/program-update.md b/docs/program-update.md index 8d4373cb4a..a655288137 100644 --- a/docs/program-update.md +++ b/docs/program-update.md @@ -128,6 +128,10 @@ pageClass: routes +### Release 更新 + + + ## Thunderbird ### 更新日志 diff --git a/lib/router.js b/lib/router.js index 514c1b53d2..a416e6557e 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1111,8 +1111,11 @@ router.get('/nowcoder/discuss/:type/:order', require('./routes/nowcoder/discuss' // Xiaomi.eu router.get('/xiaomieu/releases', require('./routes/xiaomieu/releases')); + // sketch.com router.get('/sketch/beta', require('./routes/sketch/beta')); +router.get('/sketch/updates', require('./routes/sketch/updates')); + // 每日安全 router.get('/security/pulses', require('./routes/security/pulses')); diff --git a/lib/routes/sketch/updates.js b/lib/routes/sketch/updates.js new file mode 100644 index 0000000000..d13f5a6431 --- /dev/null +++ b/lib/routes/sketch/updates.js @@ -0,0 +1,56 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const response = await got({ + method: 'get', + url: 'https://cdn.sketchapp.com/releases.html', + }); + const data = response.data; + const $ = cheerio.load(data); + const list = $('div.update'); + + ctx.state.data = { + title: 'Sketch Release版本', + link: response.url, + description: $('meta[name="description"]').attr('content'), + image: 'https://cdn.sketchapp.com/assets/components/block-buy/logo.png', + + item: + list && + list + .map((index, item) => { + item = $(item); + // sketch update 提供的时间 年月反了.要重新调整 + const pubday = item + .find('section.update-highlights time') + .attr('datetime') + .substr(0, 2); + const pubmonth = item + .find('section.update-highlights time') + .attr('datetime') + .substr(3, 2); + const pubyear = item + .find('section.update-highlights time') + .attr('datetime') + .substr(-4); + const pubdateString = pubmonth + `-` + pubday + `-` + pubyear; + + return { + title: `${item + .find('h2.update-version-title') + .first() + .text()}`, + description: `${item.find('section.update-highlights .lead').html()}
+ ${item.find('section.update-highlights footer').html()}
+ ${item.find('aside.update-details .mask').html()}`, + link: `https://www.sketch.com/updates/${item.find('.update-version-title a').attr('href')}`, + pubDate: new Date(pubdateString).toLocaleDateString(), + }; + }) + + .get(), + }; +};