diff --git a/docs/README.md b/docs/README.md index 9ca4e5d85..9a00aad64 100644 --- a/docs/README.md +++ b/docs/README.md @@ -871,6 +871,10 @@ GitHub 官方也提供了一些 RSS: +### F-Droid + + + ### Greasy Fork diff --git a/docs/en/README.md b/docs/en/README.md index 26f40eb19..c1c2a51d1 100644 --- a/docs/en/README.md +++ b/docs/en/README.md @@ -170,6 +170,10 @@ If no matching results were found, the server returns only a HTTP status code `2 +### F-Droid + + + ### Greasy Fork diff --git a/router.js b/router.js index a8976cacd..c490ea23e 100644 --- a/router.js +++ b/router.js @@ -288,6 +288,9 @@ router.get('/github/issue/:user/:repo', require('./routes/github/issue')); router.get('/github/user/followers/:user', require('./routes/github/follower')); router.get('/github/stars/:user/:repo', require('./routes/github/star')); +// f-droid +router.get('/fdroid/apprelease/:app', require('./routes/fdroid/apprelease')); + // konachan router.get('/konachan/post/popular_recent', require('./routes/konachan/post_popular_recent')); router.get('/konachan.com/post/popular_recent', require('./routes/konachan/post_popular_recent')); diff --git a/routes/fdroid/apprelease.js b/routes/fdroid/apprelease.js new file mode 100644 index 000000000..2fdc35f94 --- /dev/null +++ b/routes/fdroid/apprelease.js @@ -0,0 +1,60 @@ +const axios = require('../../utils/axios'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const response = await axios.get(`https://f-droid.org/en/packages/${ctx.params.app}/`); + const data = response.data; + const $ = cheerio.load(data); + + const app_name = $('.package-title') + .find('h3') + .text(); + const app_descr = $('.package-title') + .find('.package-summary') + .text(); + + const items = []; + $('.package-versions-list') + .find('.package-version') + .each(function() { + const item = {}; + const version = $(this) + .find('.package-version-header') + .find('a') + .eq(0) + .attr('name'); + item.title = version; + item.guid = $(this) + .find('.package-version-header') + .find('a') + .eq(1) + .attr('name'); + item.pubDate = new Date( + $(this) + .find('.package-version-header') + .text() + .split('Added on ')[1] + ).toUTCString(); + item.description = [ + $(this) + .find('.package-version-download') + .html(), + $(this) + .find('.package-version-requirement') + .html(), + $(this) + .find('.package-version-source') + .html(), + ].join('
'); + item.link = `https://f-droid.org/en/packages/${ctx.params.app}/#${version}`; + + items.push(item); + }); + + ctx.state.data = { + title: `${app_name} releases on F-Droid`, + discription: app_descr, + link: `https://f-droid.org/en/packages/${ctx.params.app}/`, + item: items, + }; +};