From e0414fe9a68ab1fb796c64e59b54012cfc40b4ec Mon Sep 17 00:00:00 2001 From: Sven Wiegand Date: Tue, 27 Aug 2019 20:07:30 +0200 Subject: [PATCH] Implemented custom extractor epaper.zeit.de --- fixtures/epaper.zeit.de/1566927390034.html | 31 +++++ src/extractors/custom/epaper.zeit.de/index.js | 37 ++++++ .../custom/epaper.zeit.de/index.test.js | 109 ++++++++++++++++++ src/extractors/custom/index.js | 1 + 4 files changed, 178 insertions(+) create mode 100644 fixtures/epaper.zeit.de/1566927390034.html create mode 100644 src/extractors/custom/epaper.zeit.de/index.js create mode 100644 src/extractors/custom/epaper.zeit.de/index.test.js diff --git a/fixtures/epaper.zeit.de/1566927390034.html b/fixtures/epaper.zeit.de/1566927390034.html new file mode 100644 index 000000000..bd6c78ee8 --- /dev/null +++ b/fixtures/epaper.zeit.de/1566927390034.html @@ -0,0 +1,31 @@ + + + + + + + + Was heißt Sozialismus für Sie, Kevin Kühnert? + + +
+
+
+ +
+ +
+

Was heißt Sozialismus für Sie, Kevin Kühnert?

Zum Beispiel die Kollektivierung von Firmen wie BMW, sagt der Chef der Jusos. In der Wirtschaftsordnung, die er sich vorstellt, gäbe es auch kein Eigentum an Wohnraum mehr. Ein Gespräch über eine radikale Alternative Foto: Tibor Boz/Redux/laif +

»Der Zeitgeist ist nun wirklich kein altruistischer«

+xxx +

DIE ZEIT: Herr Kühnert, Sie nennen sich einen Sozialisten. Was verstehen Sie darunter?

Kevin Kühnert: Das ist erst mal ein Nichteinverständnis mit der Wirtschafts- und teilweise auch mit der Gesellschaftsordnung. Es markiert den Anspruch, dass eine bessere Welt nicht nur denkbar, sondern auch realisierbar ist. Sprich: eine Welt freier Menschen, die kollektive Bedürfnisse in den Vordergrund stellt und nicht Profitstreben.

ZEIT: Das klingt etwas blumig. Die klassische Definition heißt: Vergesellschaftung von Produktionsmitteln. Unterschreiben Sie das?

Kühnert: Wenn wir Sozialismus sagen, haben wir oft Bilder aus der Marxschen Zeit vor uns: große Fabriken, die nicht denen gehören, die darin arbeiten. In unsere heutige Zeit übersetzt, reden wir über den Umgang mit Internetgiganten, den Zugang zu großen Datenmengen und ob das wirklich in privatwirtschaftlicher Hand sein sollte. Der Grundsatz ist unverändert: Was unser Leben bestimmt, soll in der Hand der Gesellschaft sein und demokratisch von ihr bestimmt werden. Eine Welt, in der Menschen ihren Bedürfnissen nachgehen können. Eine Demokratisierung aller Lebensbereiche.

DIE FRAGEN STELLTEN JOCHEN BITTNER UND TINA HILDEBRANDT Lesen Sie eine längere Version des Interviews bei ZEIT ONLINE unter www.zeit.de/kevin-kuehnert

Mieten oder kaufen? Für Kevin Kühnert eine Frage des Gemeinwohls

+
+ + + +
+
+
+ + diff --git a/src/extractors/custom/epaper.zeit.de/index.js b/src/extractors/custom/epaper.zeit.de/index.js new file mode 100644 index 000000000..2b27a6ff9 --- /dev/null +++ b/src/extractors/custom/epaper.zeit.de/index.js @@ -0,0 +1,37 @@ +export const EpaperZeitDeExtractor = { + domain: 'epaper.zeit.de', + + title: { + selectors: ['p.title'], + }, + + author: { + selectors: ['.article__author'], + }, + + date_published: null, + + excerpt: { + selectors: ['subtitle'], + }, + + lead_image_url: null, + + content: { + selectors: ['.article'], + + // Is there anything in the content you selected that needs transformed + // before it's consumable content? E.g., unusual lazy loaded images + transforms: { + 'p.title': 'h1', + '.article__author': 'p', + byline: 'p', + linkbox: 'p', + }, + + // Is there anything that is in the result that shouldn't be? + // The clean selectors will remove anything that matches from + // the result + clean: ['image-credits', 'box[type=citation]'], + }, +}; diff --git a/src/extractors/custom/epaper.zeit.de/index.test.js b/src/extractors/custom/epaper.zeit.de/index.test.js new file mode 100644 index 000000000..ad80d2570 --- /dev/null +++ b/src/extractors/custom/epaper.zeit.de/index.test.js @@ -0,0 +1,109 @@ +import assert from 'assert'; +import URL from 'url'; +import cheerio from 'cheerio'; + +import Mercury from 'mercury'; +import getExtractor from 'extractors/get-extractor'; +import { excerptContent } from 'utils/text'; + +const fs = require('fs'); + +describe('EpaperZeitDeExtractor', () => { + describe('initial test case', () => { + let result; + let url; + beforeAll(() => { + url = + 'https://epaper.zeit.de/article/702225a4061dfbf97ab93df8de77e8c54aa3f5fe7a8c2799e8d425953d123acf'; + const html = fs.readFileSync( + './fixtures/epaper.zeit.de/1566927390034.html' + ); + result = Mercury.parse(url, { html, fallback: false }); + }); + + it('is selected properly', () => { + // This test should be passing by default. + // It sanity checks that the correct parser + // is being selected for URLs from this domain + const extractor = getExtractor(url); + assert.equal(extractor.domain, URL.parse(url).hostname); + }); + + it('returns the title', async () => { + // To pass this test, fill out the title selector + // in ./src/extractors/custom/epaper.zeit.de/index.js. + const { title } = await result; + + // Update these values with the expected values from + // the article. + assert.equal(title, `Was heißt Sozialismus für Sie, Kevin Kühnert?`); + }); + + it('returns the author', async () => { + // To pass this test, fill out the author selector + // in ./src/extractors/custom/epaper.zeit.de/index.js. + const { author } = await result; + + // Update these values with the expected values from + // the article. + assert.equal(author, 'Politik · Jochen Bittner, Tina Hildebrandt'); + }); + + it('returns the date_published', async () => { + // To pass this test, fill out the date_published selector + // in ./src/extractors/custom/epaper.zeit.de/index.js. + const { date_published } = await result; + + // Update these values with the expected values from + // the article. + assert.equal(date_published, null); + }); + + it('returns the excerpt', async () => { + // To pass this test, fill out the excerpt selector + // in ./src/extractors/custom/epaper.zeit.de/index.js. + const { excerpt } = await result; + + // Update these values with the expected values from + // the article. + assert.equal( + excerpt, + 'Zum Beispiel die Kollektivierung von Firmen wie BMW, sagt der Chef der Jusos. In der Wirtschaftsordnung, die er sich vorstellt, gäbe es auch kein Eigentum an Wohnraum mehr. Ein Gespräch über eine radikale Alternative' + ); + }); + + it('returns the lead_image_url', async () => { + // To pass this test, fill out the lead_image_url selector + // in ./src/extractors/custom/epaper.zeit.de/index.js. + const { lead_image_url } = await result; + + // Update these values with the expected values from + // the article. + assert.equal(lead_image_url, null); + }); + + it('returns the content', async () => { + // To pass this test, fill out the content selector + // in ./src/extractors/custom/epaper.zeit.de/index.js. + // You may also want to make use of the clean and transform + // options. + const { content } = await result; + + const $ = cheerio.load(content || ''); + + const first13 = excerptContent( + $('*') + .first() + .text(), + 13 + ); + + // Update these values with the expected values from + // the article. + assert.equal( + first13, + 'Politik · Jochen Bittner, Tina Hildebrandt Zum Beispiel die Kollektivierung von Firmen wie' + ); + }); + }); +}); diff --git a/src/extractors/custom/index.js b/src/extractors/custom/index.js index eeb4a344f..e3bc157c4 100644 --- a/src/extractors/custom/index.js +++ b/src/extractors/custom/index.js @@ -131,3 +131,4 @@ export * from './www.lemonde.fr'; export * from './www.phoronix.com'; export * from './pitchfork.com'; export * from './biorxiv.org'; +export * from './epaper.zeit.de';