Kaaiman

Update: De man is onderhand met pensioen en het ding offline, en dat is prima.

Al ben ik allerminst onvoorwaardelijk fan van Koen Meulenaeres ‘vlijmscherpe column’, een RSS-feed leek me wel geestig.

Ook op de site van De Tijd bestaat Kaaiman in RSS-vorm, maar dan moet je er wel de schrijfsels van de andere columnisten bij nemen. Gelukkig bestaat er gewoon een webpagina met links naar de meest recente stukjes.

Dan: RSS-Bridge. Da’s een webtoepassing die het doodeenvoudig maakt om pagina’s met een (chronologisch) lijstje links om te zetten in een Atom‑ of JSON-feed.

En om aan RSS-Bridge een nieuwe bron aan toe te voegen, maak je gewoon een nieuw bestand1 aan in bridges. Een beetje zo, dus:

<?php

class KaaimanBridge extends BridgeAbstract
{
  const MAINTAINER = 'ochtendgrijs';
  const NAME = 'Kaaiman';
  const URI = 'https://www.tijd.be/dossiers/kaaiman.html';
  const CACHE_TIMEOUT = 3600;
  const DESCRIPTION = 'De vlijmscherpe column van Koen Meulenaere in De Tijd';

  public function collectData()
  {
    $pageUrl = self::URI;
    $html = getSimpleHTMLDOM($pageUrl) or returnServerError('Could not request Kaaiman: ' . $pageUrl);

    foreach ($html->find('div.c-articleteaser') as $element) {
      if (count($this->items) >= 10) {
        break;
      }

      $item = [
        'uri' => 'https://www.tijd.be' . $element->find('a.c-articleteaser__link', 0)->href,
        'title' => trim($element->find('div.c-articleteaser__title', 0)->plaintext),
        'content' => '<p>' . trim($element->find('div.c-articleteaser__text', 0)->plaintext) . '</p>',
      ];

      $this->items[] = $item;
    }
  }
}

Daarna voeg je alleen nog Kaaiman toe aan whitelist.txt, en klaar.

  1. Zelf gebruik ik Docker voor het draaien van RSS-Bridge, en volumes om dit nieuwe bestand naar de appcontainer te syncen.