]>
git.wh0rd.org - tt-rss.git/blob - plugins/af_redditimgur/init.php
2 class Af_RedditImgur
extends Plugin
{
7 "Inline image links in Reddit RSS feeds",
11 function init($host) {
14 $host->add_hook($host::HOOK_ARTICLE_FILTER
, $this);
17 function hook_article_filter($article) {
19 if (strpos($article["link"], "reddit.com/r/") !== FALSE) {
20 $doc = new DOMDocument();
21 @$doc->loadHTML($article["content"]);
24 $xpath = new DOMXPath($doc);
25 $entries = $xpath->query('(//a[@href]|//img[@src])');
29 foreach ($entries as $entry) {
30 if ($entry->hasAttribute("href")) {
31 if (preg_match("/\.(jpg|jpeg|gif|png)$/i", $entry->getAttribute("href"))) {
33 $img = $doc->createElement('img');
34 $img->setAttribute("src", $entry->getAttribute("href"));
36 $br = $doc->createElement('br');
37 $entry->parentNode
->insertBefore($img, $entry);
38 $entry->parentNode
->insertBefore($br, $entry);
43 // links to imgur pages
45 if (preg_match("/^http:\/\/imgur.com\/([^\.\/]+$)/", $entry->getAttribute("href"), $matches)) {
49 $album_content = fetch_file_contents($entry->getAttribute("href"),
50 false, false, false, false, 10);
52 if ($album_content && $token) {
53 $adoc = new DOMDocument();
54 @$adoc->loadHTML($album_content);
57 $axpath = new DOMXPath($adoc);
58 $aentries = $axpath->query('(//img[@src])');
60 foreach ($aentries as $aentry) {
61 if (preg_match("/\/\/i.imgur.com\/$token\./", $aentry->getAttribute("src"))) {
62 $img = $doc->createElement('img');
63 $img->setAttribute("src", $aentry->getAttribute("src"));
65 $br = $doc->createElement('br');
67 $entry->parentNode
->insertBefore($img, $entry);
68 $entry->parentNode
->insertBefore($br, $entry);
80 if (preg_match("/^http:\/\/imgur.com\/(a|album)\/[^\.]+$/", $entry->getAttribute("href"), $matches)) {
82 $album_content = fetch_file_contents($entry->getAttribute("href"),
83 false, false, false, false, 10);
86 $adoc = new DOMDocument();
87 @$adoc->loadHTML($album_content);
90 $axpath = new DOMXPath($adoc);
91 $aentries = $axpath->query("//div[@class='image']//a[@href and @class='zoom']");
93 foreach ($aentries as $aentry) {
94 $img = $doc->createElement('img');
95 $img->setAttribute("src", $aentry->getAttribute("href"));
96 $entry->parentNode
->insertBefore($doc->createElement('br'), $entry);
98 $br = $doc->createElement('br');
100 $entry->parentNode
->insertBefore($img, $entry);
101 $entry->parentNode
->insertBefore($br, $entry);
110 // remove tiny thumbnails
111 if ($entry->hasAttribute("src")) {
112 if ($entry->parentNode
&& $entry->parentNode
->parentNode
) {
113 $entry->parentNode
->parentNode
->removeChild($entry->parentNode
);
118 $node = $doc->getElementsByTagName('body')->item(0);
120 if ($node && $found) {
121 $article["content"] = $doc->saveXML($node);
129 function api_version() {