From ea8d0fd5719fb9e37ef78c903b8801c34263a399 Mon Sep 17 00:00:00 2001 From: aeritir Date: Sun, 4 Jun 2017 19:55:04 +0200 Subject: [PATCH] af_comics_dilbert: More details (title, tags, transcript) --- .../af_comics/filters/af_comics_dilbert.php | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/plugins/af_comics/filters/af_comics_dilbert.php b/plugins/af_comics/filters/af_comics_dilbert.php index 9eed7232..da5a44de 100644 --- a/plugins/af_comics/filters/af_comics_dilbert.php +++ b/plugins/af_comics/filters/af_comics_dilbert.php @@ -1,4 +1,5 @@ loadHTML($res); + $basenode = false; + if ($doc) { $xpath = new DOMXPath($doc); - $basenode = $xpath->query('//img[contains(@class, "img-comic")]')->item(0); + // Get the image container + $basenode = $xpath->query('(//div[@class="img-comic-container"]/a[@class="img-comic-link"])')->item(0); + + // Get the comic title + $comic_title = $xpath->query('(//span[@class="comic-title-name"])')->item(0)->textContent; + + // Get tags from the article + $matches = $xpath->query('(//p[contains(@class, "comic-tags")][1]//a)'); + $tags = array(); + + foreach ($matches as $tag) { + // Only strings starting with a number sign are considered tags + if ( substr($tag->textContent, 0, 1) == '#' ) { + $tags[] = mb_strtolower(substr($tag->textContent, 1), 'utf-8'); + } + } + + // Get the current comics transcript and set it + // as the title so it will be visible on mousover + $transcript = $xpath->query('(//div[starts-with(@id, "js-toggle-transcript-")]//p)')->item(0); + if ($transcript) { + $basenode->setAttribute("title", $transcript->textContent); + } if ($basenode) { $article["content"] = $doc->saveXML($basenode); } + + // Add comic title to article type if not empty (mostly Sunday strips) + if ($comic_title) { + $article["title"] = $article["title"] . " - " . $comic_title; + } + + if (!empty($tags)) { + // Ignore existing tags and just replace them all + $article["tags"] = array_unique($tags); + } + } return true; @@ -34,4 +72,5 @@ class Af_Comics_Dilbert extends Af_ComicFilter { return false; } -} \ No newline at end of file +} +?>