From cfdbf3324cfbc4f1e49c9dccc3e6dee750c3b043 Mon Sep 17 00:00:00 2001
From: Gary Williams <32130780+garywill@users.noreply.github.com>
Date: Mon, 17 Sep 2018 23:15:42 +0800
Subject: [PATCH] F-Droid app update (#726)
---
docs/README.md | 4 +++
docs/en/README.md | 4 +++
router.js | 3 ++
routes/fdroid/apprelease.js | 60 +++++++++++++++++++++++++++++++++++++
4 files changed, 71 insertions(+)
create mode 100644 routes/fdroid/apprelease.js
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,
+ };
+};