diff --git a/package.json b/package.json index c6173dcc..8813f644 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "@catppuccin/tailwindcss": "^0.1.6", "@commitlint/cli": "^17.6.6", "@commitlint/config-conventional": "^17.6.6", - "@extractus/feed-extractor": "6.2.4", "@netlify/plugin-lighthouse": "^5.0.0", "@quasibit/eleventy-plugin-schema": "^1.11.0", "@sherby/eleventy-plugin-files-minifier": "^1.1.1", @@ -58,6 +57,7 @@ "postcss": "^8.4.27", "prettier": "^3.0.0", "prettier-plugin-tailwindcss": "^0.4.1", + "rss-parser": "^3.13.0", "sanitize-html": "^2.11.0", "striptags": "^3.2.0", "tailwindcss": "^3.3.2" diff --git a/src/_data/movies.js b/src/_data/movies.js index 7c8f63b3..f1a495ff 100644 --- a/src/_data/movies.js +++ b/src/_data/movies.js @@ -1,24 +1,23 @@ -const { extract } = require('@extractus/feed-extractor') +const Parser = require('rss-parser') const { AssetCache } = require('@11ty/eleventy-fetch') module.exports = async function () { + const parser = new Parser() const url = 'https://letterboxd.com/cdme/rss' - // noinspection JSCheckFunctionSignatures const asset = new AssetCache('movies_data') if (asset.isCacheValid('1h')) return await asset.getCachedValue() - const res = await extract(url, { - getExtraEntryFields: (feedEntry) => { - const images = feedEntry['description']?.match(/]*src="[^"]*"[^>]*>/gm) || [] - return { - image: images.length - ? images.map((image) => image.replace(/.*src="([^"]*)".*/, '$1'))[0] - : '', - } - }, - }).catch((error) => { + const res = await parser.parseURL(url).catch((error) => { console.log(error.message) }) - const data = res.entries.splice(0, 6) + const data = res.items + .map((item) => { + const images = item['content']?.match(/]*src="[^"]*"[^>]*>/gm) || [] + item.image = images.length + ? images.map((image) => image.replace(/.*src="([^"]*)".*/, '$1'))[0] + : 'https://cdn.coryd.dev/movies/missing-movie.jpg' + return item + }) + .splice(0, 6) await asset.save(data, 'json') return data } diff --git a/yarn.lock b/yarn.lock index 95a94853..675ebd6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -416,9 +416,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.0.tgz#5b63f0df5528a44e28aa8578d393de908cc3d4d0" - integrity sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw== + version "4.6.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.1.tgz#0b371c118b8e4ebf9dbddb56120ab4befd791211" + integrity sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A== "@eslint/eslintrc@^2.1.0": version "2.1.0" @@ -440,16 +440,6 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== -"@extractus/feed-extractor@6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@extractus/feed-extractor/-/feed-extractor-6.2.4.tgz#a527d2bd870bd1a2e49ea1ec31044e19381e9fae" - integrity sha512-VqeFvRGkL9mo6Z/EzkXGJ1Z45F2h5jN/PrjZnMmkh67MzsEubdYGfZTsEtM+BTflA+jsKvtnIgGjU/sYFJFnWA== - dependencies: - bellajs "^11.1.2" - cross-fetch "^4.0.0" - fast-xml-parser "^4.2.5" - html-entities "^2.4.0" - "@fontsource/inter@^5.0.5": version "5.0.5" resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-5.0.5.tgz#bd3e923660cc4632d09b1882d104b0cb9430dec6" @@ -1282,11 +1272,6 @@ bcp-47@^1.0.0: is-alphanumerical "^1.0.0" is-decimal "^1.0.0" -bellajs@^11.1.2: - version "11.1.2" - resolved "https://registry.yarnpkg.com/bellajs/-/bellajs-11.1.2.tgz#1b7d5660bd7f34158349e76b1451461d938f1d50" - integrity sha512-2Fy3Km5JKyIy/KunW3oica2gZtkjD2qSqti2Q3xPhHvXXdMbc+32pEMOPG+xrSat0BXVhRjHIx++lzxIPK0GqQ== - big-integer@^1.6.44: version "1.6.51" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" @@ -1919,13 +1904,6 @@ cross-fetch@3.1.5: dependencies: node-fetch "2.6.7" -cross-fetch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" - integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== - dependencies: - node-fetch "^2.6.12" - cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2350,9 +2328,9 @@ ejs@^3.1.8, ejs@^3.1.9: jake "^10.8.5" electron-to-chromium@^1.4.431: - version "1.4.468" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz#3cbf64ad67d9f12bfe69fefe5eb1935ec4f6ab7a" - integrity sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag== + version "1.4.469" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.469.tgz#c9cea85ab94031e239ca4ab03158726672d6f960" + integrity sha512-HRN9XQjElxJBrdDky5iiUUr3eDwXGTg6Cp4IV8MuNc8VqMkYSneSnIe6poFKx9PsNzkudCgaWCBVxwDqirwQWQ== eleventy-plugin-tabler-icons@^1.0.8: version "1.0.8" @@ -2921,7 +2899,7 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-xml-parser@^4.0.14, fast-xml-parser@^4.2.5: +fast-xml-parser@^4.0.14: version "4.2.6" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.6.tgz#30ad37b014c16e31eec0e01fbf90a85cedb4eacf" integrity sha512-Xo1qV++h/Y3Ng8dphjahnYe+rGHaaNdsYOBWL9Y9GCPKpNKilJtilvWkLcI9f9X2DoKTLsZsGYAls5+JL5jfLA== @@ -3367,11 +3345,6 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -html-entities@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" - integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== - html-minifier@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" @@ -4831,7 +4804,7 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.0, node-fetch@^2.6.12, node-fetch@^2.6.7: +node-fetch@^2.6.0, node-fetch@^2.6.7: version "2.6.12" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== @@ -5863,7 +5836,7 @@ robots-parser@^3.0.0: resolved "https://registry.yarnpkg.com/robots-parser/-/robots-parser-3.0.1.tgz#3d8a3cdfa8ac240cbb062a4bd16fcc0e0fb9ed23" integrity sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ== -rss-parser@^3.7.0: +rss-parser@^3.13.0, rss-parser@^3.7.0: version "3.13.0" resolved "https://registry.yarnpkg.com/rss-parser/-/rss-parser-3.13.0.tgz#f1f83b0a85166b8310ec531da6fbaa53ff0f50f0" integrity sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w== @@ -6662,9 +6635,9 @@ tslib@^1.8.1, tslib@^1.9.3: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.1.0, tslib@^2.5.0, tslib@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" - integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== tsutils@^3.21.0: version "3.21.0"