1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-07-21 11:41:18 -04:00

use rss-parser for /api/hits

This commit is contained in:
2021-11-19 10:26:33 -05:00
parent aba9b6d64a
commit d8a552cf5a
3 changed files with 33 additions and 7 deletions

View File

@@ -1,6 +1,5 @@
import * as Sentry from "@sentry/node";
import fetch from "node-fetch";
import parser from "fast-xml-parser";
import Parser from "rss-parser";
import { decode } from "html-entities";
import pRetry from "p-retry";
import faunadb from "faunadb";
@@ -91,8 +90,9 @@ const incrementPageHits = async (slug, client) => {
const getSiteStats = async (client) => {
// get database and RSS results asynchronously
const parser = new Parser();
const [feed, result] = await Promise.all([
parser.parse(await (await fetch(BASE_URL + "feed.xml")).text()), // this is messy but it works :)
parser.parseURL(BASE_URL + "feed.xml"),
client.query(
q.Map(
q.Paginate(q.Documents(q.Collection("hits")), { size: 99 }),
@@ -109,7 +109,7 @@ const getSiteStats = async (client) => {
pages.map((p) => {
// match URLs from RSS feed with db to populate some metadata
const match = feed.rss.channel.item.find((x) => x.link === BASE_URL + p.slug + "/");
const match = feed.items.find((x) => x.link === BASE_URL + p.slug + "/");
if (match) {
p.title = decode(match.title);
p.url = match.link;

View File

@@ -35,7 +35,6 @@
"cross-fetch": "^3.1.4",
"dark-mode-switcheroo": "^0.10.0",
"dayjs": "^1.10.7",
"fast-xml-parser": "^3.21.1",
"faunadb": "^4.4.1",
"get-canonical-url": "^1.1.0",
"get-stream": "^6.0.1",
@@ -46,6 +45,7 @@
"node-fetch": "^3.1.0",
"p-retry": "^5.0.0",
"query-string": "^7.0.1",
"rss-parser": "^3.12.0",
"simple-anchor": "^1.0.3",
"trim-newlines": "^4.0.2",
"twemoji": "^13.1.0",

View File

@@ -3416,7 +3416,7 @@ enquirer@^2.3.5, enquirer@^2.3.6:
dependencies:
ansi-colors "^4.1.1"
entities@^2.0.0:
entities@^2.0.0, entities@^2.0.3:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
@@ -3984,7 +3984,7 @@ fast-levenshtein@^2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
fast-xml-parser@^3.19.0, fast-xml-parser@^3.21.1:
fast-xml-parser@^3.19.0:
version "3.21.1"
resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz#152a1d51d445380f7046b304672dd55d15c9e736"
integrity sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==
@@ -8382,6 +8382,14 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
rss-parser@^3.12.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/rss-parser/-/rss-parser-3.12.0.tgz#b8888699ea46304a74363fbd8144671b2997984c"
integrity sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A==
dependencies:
entities "^2.0.3"
xml2js "^0.4.19"
run-con@~1.2.10:
version "1.2.10"
resolved "https://registry.yarnpkg.com/run-con/-/run-con-1.2.10.tgz#90de9d43d20274d00478f4c000495bd72f417d22"
@@ -8443,6 +8451,11 @@ sass@^1.43.4:
dependencies:
chokidar ">=3.0.0 <4.0.0"
sax@>=0.6.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
schema-utils@^2.6.5:
version "2.7.1"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
@@ -10215,6 +10228,19 @@ ws@^8.1.0:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
xml2js@^0.4.19:
version "0.4.23"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
dependencies:
sax ">=0.6.0"
xmlbuilder "~11.0.0"
xmlbuilder@~11.0.0:
version "11.0.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"