From 6c8a1632fb20355fd19442e0a4112d05e44d81d1 Mon Sep 17 00:00:00 2001 From: xcffl <2216902+xcffl@users.noreply.github.com> Date: Wed, 10 Feb 2021 10:03:06 +0800 Subject: [PATCH] Add `summary` field to the build-in atom parsing --- index.d.ts | 1 + lib/fields.js | 1 + lib/parser.js | 3 +++ test/output/heise.json | 15 +++++++++++++++ 4 files changed, 20 insertions(+) diff --git a/index.d.ts b/index.d.ts index 13fc0ec..5777290 100644 --- a/index.d.ts +++ b/index.d.ts @@ -36,6 +36,7 @@ declare namespace Parser { title?: string; pubDate?: string; creator?: string; + summary?: string; content?: string; isoDate?: string; categories?: string[]; diff --git a/lib/fields.js b/lib/fields.js index 78fdebc..6e32c5a 100644 --- a/lib/fields.js +++ b/lib/fields.js @@ -38,6 +38,7 @@ fields.item = [ 'link', 'pubDate', 'author', + 'summary', ['content:encoded', 'content:encoded', {includeSnippet: true}], 'enclosure', 'dc:creator', diff --git a/lib/parser.js b/lib/parser.js index fb27061..139778f 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -148,6 +148,9 @@ class Parser { item.content = utils.getContent(entry.content[0]); item.contentSnippet = utils.getSnippet(item.content) } + if (entry.summary && entry.summary.length) { + item.summary = utils.getContent(entry.summary[0]); + } if (entry.id) { item.id = entry.id[0]; } diff --git a/test/output/heise.json b/test/output/heise.json index 98a967f..79e1fed 100644 --- a/test/output/heise.json +++ b/test/output/heise.json @@ -7,6 +7,7 @@ "pubDate": "2016-02-01T16:22:00.000Z", "content": "\n \n \n \"WildFly\n \n \n

Die nun verfügbare Version 10 des Enterprise-Java-Servers stellt die Basis für Red Hats kommerzielle JBoss Enterprise Application Platform 7 ist zugleich das dritte größere Release seit dem Namenswechsel des Open-Source-Projekts.

\n ", "contentSnippet": "Die nun verfügbare Version 10 des Enterprise-Java-Servers stellt die Basis für Red Hats kommerzielle JBoss Enterprise Application Platform 7 ist zugleich das dritte größere Release seit dem Namenswechsel des Open-Source-Projekts.", + "summary": "Die nun verfügbare Version 10 des Enterprise-Java-Servers stellt die Basis für Red Hats kommerzielle JBoss Enterprise Application Platform 7 ist zugleich das dritte größere Release seit dem Namenswechsel des Open-Source-Projekts.", "id": "http://heise.de/-3088438", "isoDate": "2016-02-01T16:22:00.000Z" }, @@ -16,6 +17,7 @@ "pubDate": "2016-02-01T13:29:00.000Z", "content": "\n \n \n \"Vortragseinreichungen\n \n \n

Über das Programm des zehnten Scrum Day stimmen die Teilnehmer selbst ab. Doch zuvor sind Scrum-Experten dran, sich bis Ende Februar mit einem Vortrag oder Workshop zu bewerben.

\n ", "contentSnippet": "Über das Programm des zehnten Scrum Day stimmen die Teilnehmer selbst ab. Doch zuvor sind Scrum-Experten dran, sich bis Ende Februar mit einem Vortrag oder Workshop zu bewerben.", + "summary": "Über das Programm des zehnten Scrum Day stimmen die Teilnehmer selbst ab. Doch zuvor sind Scrum-Experten dran, sich bis Ende Februar mit einem Vortrag oder Workshop zu bewerben.", "id": "http://heise.de/-3088627", "isoDate": "2016-02-01T13:29:00.000Z" }, @@ -25,6 +27,7 @@ "pubDate": "2016-02-01T11:12:00.000Z", "content": "\n \n \n \"Microsoft\n \n \n

Mit dem für unterschiedliche Plattformen verfügbaren Code-Editor lassen sich nun auch hybride Apps für iOS, Android, Blackberry und Windows Phone auf Basis von HTML, CSS und JavaScript entwickeln.

\n ", "contentSnippet": "Mit dem für unterschiedliche Plattformen verfügbaren Code-Editor lassen sich nun auch hybride Apps für iOS, Android, Blackberry und Windows Phone auf Basis von HTML, CSS und JavaScript entwickeln.", + "summary": "Mit dem für unterschiedliche Plattformen verfügbaren Code-Editor lassen sich nun auch hybride Apps für iOS, Android, Blackberry und Windows Phone auf Basis von HTML, CSS und JavaScript entwickeln.", "id": "http://heise.de/-3088372", "isoDate": "2016-02-01T11:12:00.000Z" }, @@ -34,6 +37,7 @@ "pubDate": "2016-02-01T09:34:00.000Z", "content": "\n \n \n \"Ungewisse\n \n \n

Daniel Schlichtholz hat sich von der Entwicklung des PHP- beziehungsweise Perl-Skripts verabschiedet, mit dem sich MySQL-Daten sichern und gegebenenfalls wiederherstellen lassen. Fällige Anpassungen an das neue PHP 7 würden ihn zu viel Zeit kosten.

\n ", "contentSnippet": "Daniel Schlichtholz hat sich von der Entwicklung des PHP- beziehungsweise Perl-Skripts verabschiedet, mit dem sich MySQL-Daten sichern und gegebenenfalls wiederherstellen lassen. Fällige Anpassungen an das neue PHP 7 würden ihn zu viel Zeit kosten.", + "summary": "Daniel Schlichtholz hat sich von der Entwicklung des PHP- beziehungsweise Perl-Skripts verabschiedet, mit dem sich MySQL-Daten sichern und gegebenenfalls wiederherstellen lassen. Fällige Anpassungen an das neue PHP 7 würden ihn zu viel Zeit kosten.", "id": "http://heise.de/-3088410", "isoDate": "2016-02-01T09:34:00.000Z" }, @@ -43,6 +47,7 @@ "pubDate": "2016-02-01T09:19:00.000Z", "content": "\n \n \n \"Änderungen\n \n \n

Microsoft ändert das v2.0 Auth Protocol zur Anmeldung an die Cloud-Dienste Microsoft Account und Azure Active Directory. Entwickler müssen aufgrund der Neuerungen vermutlich vorhandenen Code anpassen.

\n ", "contentSnippet": "Microsoft ändert das v2.0 Auth Protocol zur Anmeldung an die Cloud-Dienste Microsoft Account und Azure Active Directory. Entwickler müssen aufgrund der Neuerungen vermutlich vorhandenen Code anpassen.", + "summary": "Microsoft ändert das v2.0 Auth Protocol zur Anmeldung an die Cloud-Dienste Microsoft Account und Azure Active Directory. Entwickler müssen aufgrund der Neuerungen vermutlich vorhandenen Code anpassen.", "id": "http://heise.de/-3088319", "isoDate": "2016-02-01T09:19:00.000Z" }, @@ -52,6 +57,7 @@ "pubDate": "2016-02-01T07:24:00.000Z", "content": "\n

Wie entwirft ein Softwarearchitekt am besten ein System? Dass es dafür kein einfaches Rezept gibt, ist der Komplexität und Heterogenität von Softwareprojekten geschuldet. Die Sache ist aber nicht hoffnungslos. Szenarien bieten für diesen Zweck ein sehr gutes Instrumentarium.

\n ", "contentSnippet": "Wie entwirft ein Softwarearchitekt am besten ein System? Dass es dafür kein einfaches Rezept gibt, ist der Komplexität und Heterogenität von Softwareprojekten geschuldet. Die Sache ist aber nicht hoffnungslos. Szenarien bieten für diesen Zweck ein sehr gutes Instrumentarium.", + "summary": "Wie entwirft ein Softwarearchitekt am besten ein System? Dass es dafür kein einfaches Rezept gibt, ist der Komplexität und Heterogenität von Softwareprojekten geschuldet. Die Sache ist aber nicht hoffnungslos. Szenarien bieten für diesen Zweck ein sehr gutes Instrumentarium.", "id": "http://heise.de/-3088146", "isoDate": "2016-02-01T07:24:00.000Z" }, @@ -61,6 +67,7 @@ "pubDate": "2016-01-29T14:37:00.000Z", "content": "\n \n \n \"Developer\n \n \n

heise Developer fasst jede Woche bisher vernachlässigte, aber doch wichtige Nachrichten zu Tools, Spezifikationen oder anderem zusammen – dieses Mal u.a. mit einem OCaml-Cross-Compiler für iOS, LLVM 3.8 und Cloud9-Integration in Googles Cloud-Plattform.

\n ", "contentSnippet": "heise Developer fasst jede Woche bisher vernachlässigte, aber doch wichtige Nachrichten zu Tools, Spezifikationen oder anderem zusammen – dieses Mal u.a. mit einem OCaml-Cross-Compiler für iOS, LLVM 3.8 und Cloud9-Integration in Googles Cloud-Plattform.", + "summary": "heise Developer fasst jede Woche bisher vernachlässigte, aber doch wichtige Nachrichten zu Tools, Spezifikationen oder anderem zusammen – dieses Mal u.a. mit einem OCaml-Cross-Compiler für iOS, LLVM 3.8 und Cloud9-Integration in Googles Cloud-Plattform.", "id": "http://heise.de/-3087585", "isoDate": "2016-01-29T14:37:00.000Z" }, @@ -70,6 +77,7 @@ "pubDate": "2016-01-29T12:59:00.000Z", "content": "\n

Die Windows PowerShell biete eine schnelle Lösung für die Aufgabe, eine größere Menge von XML-Dateien zu sortieren.

\n ", "contentSnippet": "Die Windows PowerShell biete eine schnelle Lösung für die Aufgabe, eine größere Menge von XML-Dateien zu sortieren.", + "summary": "Die Windows PowerShell biete eine schnelle Lösung für die Aufgabe, eine größere Menge von XML-Dateien zu sortieren.", "id": "http://heise.de/-3087150", "isoDate": "2016-01-29T12:59:00.000Z" }, @@ -79,6 +87,7 @@ "pubDate": "2016-01-29T12:02:00.000Z", "content": "\n \n \n \"SourceForge\n \n \n

Der neue Besitzer, ein US-amerikanisches Webmedia-Unternehmen, will offenbar den ramponierten Ruf der Hosting-Plattform für Open-Source-Projekte aufpolieren.

\n ", "contentSnippet": "Der neue Besitzer, ein US-amerikanisches Webmedia-Unternehmen, will offenbar den ramponierten Ruf der Hosting-Plattform für Open-Source-Projekte aufpolieren.", + "summary": "Der neue Besitzer, ein US-amerikanisches Webmedia-Unternehmen, will offenbar den ramponierten Ruf der Hosting-Plattform für Open-Source-Projekte aufpolieren.", "id": "http://heise.de/-3087034", "isoDate": "2016-01-29T12:02:00.000Z" }, @@ -88,6 +97,7 @@ "pubDate": "2016-01-29T10:23:00.000Z", "content": "\n

Der instanceof-Operator in JavaScript kann in einigen Fällen problematisch sein kann, nämlich immer dann, wenn man mit mehreren Versionen der gleichen "Klasse" arbeitet. Nun werden einige Lösungsansätze skizziert.

\n ", "contentSnippet": "Der instanceof-Operator in JavaScript kann in einigen Fällen problematisch sein kann, nämlich immer dann, wenn man mit mehreren Versionen der gleichen \"Klasse\" arbeitet. Nun werden einige Lösungsansätze skizziert.", + "summary": "Der instanceof-Operator in JavaScript kann in einigen Fällen problematisch sein kann, nämlich immer dann, wenn man mit mehreren Versionen der gleichen "Klasse" arbeitet. Nun werden einige Lösungsansätze skizziert.", "id": "http://heise.de/-3086830", "isoDate": "2016-01-29T10:23:00.000Z" }, @@ -97,6 +107,7 @@ "pubDate": "2016-01-29T09:12:00.000Z", "content": "\n \n \n \"Facebook\n \n \n

Ein Jahr bleibt Entwicklern, die den Mobile Backend as a Service nutzen, auf ein eigenes MongoDB-basiertes Angebot zu migrieren oder den nun als Open Source verfügbaren Parse-Server zu verwenden.

\n ", "contentSnippet": "Ein Jahr bleibt Entwicklern, die den Mobile Backend as a Service nutzen, auf ein eigenes MongoDB-basiertes Angebot zu migrieren oder den nun als Open Source verfügbaren Parse-Server zu verwenden.", + "summary": "Ein Jahr bleibt Entwicklern, die den Mobile Backend as a Service nutzen, auf ein eigenes MongoDB-basiertes Angebot zu migrieren oder den nun als Open Source verfügbaren Parse-Server zu verwenden.", "id": "http://heise.de/-3086857", "isoDate": "2016-01-29T09:12:00.000Z" }, @@ -106,6 +117,7 @@ "pubDate": "2016-01-29T09:10:00.000Z", "content": "\n \n \n \"Continuous\n \n \n

Anfang Mai feiert die englische Version der Continuous-Lifecycle-Konferenz in London Premiere. Jez Humble und Dave Farley sind nur zwei der Sprecher aus dem nun bekannt gegebenen Programm, das Continuous Delivery, DevOps und Co. ins Zentrum stellt.

\n ", "contentSnippet": "Anfang Mai feiert die englische Version der Continuous-Lifecycle-Konferenz in London Premiere. Jez Humble und Dave Farley sind nur zwei der Sprecher aus dem nun bekannt gegebenen Programm, das Continuous Delivery, DevOps und Co. ins Zentrum stellt.", + "summary": "Anfang Mai feiert die englische Version der Continuous-Lifecycle-Konferenz in London Premiere. Jez Humble und Dave Farley sind nur zwei der Sprecher aus dem nun bekannt gegebenen Programm, das Continuous Delivery, DevOps und Co. ins Zentrum stellt.", "id": "http://heise.de/-3086901", "isoDate": "2016-01-29T09:10:00.000Z" }, @@ -115,6 +127,7 @@ "pubDate": "2016-01-29T08:58:00.000Z", "content": "\n \n \n \"Java\n \n \n

Die Java Virtual Machine Zing ist speziell auf speicherhungrige Anwendungen ausgelegt. Mit Version 16.1 darf der dynamische Speicher auf 2 Terabyte steigen.

\n ", "contentSnippet": "Die Java Virtual Machine Zing ist speziell auf speicherhungrige Anwendungen ausgelegt. Mit Version 16.1 darf der dynamische Speicher auf 2 Terabyte steigen.", + "summary": "Die Java Virtual Machine Zing ist speziell auf speicherhungrige Anwendungen ausgelegt. Mit Version 16.1 darf der dynamische Speicher auf 2 Terabyte steigen.", "id": "http://heise.de/-3086807", "isoDate": "2016-01-29T08:58:00.000Z" }, @@ -124,6 +137,7 @@ "pubDate": "2016-01-29T08:00:00.000Z", "content": "\n \n \n \"C#\n \n \n

Ein Blick auf die möglichen Neuerungen für C# 7 zeigt, wie sich die Sprache Anregungen jenseits des Tellerands der objektorientierten Programmierung holt.

\n ", "contentSnippet": "Ein Blick auf die möglichen Neuerungen für C# 7 zeigt, wie sich die Sprache Anregungen jenseits des Tellerands der objektorientierten Programmierung holt.", + "summary": "Ein Blick auf die möglichen Neuerungen für C# 7 zeigt, wie sich die Sprache Anregungen jenseits des Tellerands der objektorientierten Programmierung holt.", "id": "http://heise.de/-3086504", "isoDate": "2016-01-29T08:00:00.000Z" }, @@ -133,6 +147,7 @@ "pubDate": "2016-01-28T16:07:00.000Z", "content": "\n \n \n \"Apache\n \n \n

Das neue Logos soll zugleich die bisherige Vergangenheit und den zukunftsorientierten energischen Wachstum der Open-Source-Organisation reflektieren.

\n ", "contentSnippet": "Das neue Logos soll zugleich die bisherige Vergangenheit und den zukunftsorientierten energischen Wachstum der Open-Source-Organisation reflektieren.", + "summary": "Das neue Logos soll zugleich die bisherige Vergangenheit und den zukunftsorientierten energischen Wachstum der Open-Source-Organisation reflektieren.", "id": "http://heise.de/-3086458", "isoDate": "2016-01-28T16:07:00.000Z" }