diff options
author | 元兒~ <[email protected]> | 2014-02-17 23:16:35 +0800 |
---|---|---|
committer | 元兒~ <[email protected]> | 2014-02-17 23:16:35 +0800 |
commit | b916161aa5888ef0c644a8e714f3a7a119c689a7 (patch) | |
tree | fb6c40ba4b81319675c32bd9b0b623744e001563 /plugins/af_comics/filters/af_comics_pa.php | |
parent | f3e8c805f1170f9d246badf9e318a967d2bd544d (diff) | |
parent | 901dd67a1a756f5c4e03cc452c40b39584184474 (diff) |
Merge branch 'master' of github.com:gothfox/Tiny-Tiny-RSS
Diffstat (limited to 'plugins/af_comics/filters/af_comics_pa.php')
-rw-r--r-- | plugins/af_comics/filters/af_comics_pa.php | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/plugins/af_comics/filters/af_comics_pa.php b/plugins/af_comics/filters/af_comics_pa.php new file mode 100644 index 000000000..b44de9cff --- /dev/null +++ b/plugins/af_comics/filters/af_comics_pa.php @@ -0,0 +1,89 @@ +<?php +class Af_Comics_Pa extends Af_ComicFilter { + + function supported() { + return array("Penny Arcade"); + } + + function process(&$article) { + $owner_uid = $article["owner_uid"]; + + if (strpos($article["link"], "penny-arcade.com") !== FALSE && strpos($article["title"], "Comic:") !== FALSE) { + if (strpos($article["plugin_data"], "af_comics,$owner_uid:") === FALSE) { + + if ($debug_enabled) { + _debug("af_pennyarcade: Processing comic"); + } + + $doc = new DOMDocument(); + $doc->loadHTML(fetch_file_contents($article["link"])); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('(//div[@id="comicFrame"])')->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + $article["plugin_data"] = "af_comics,$owner_uid:" . $article["plugin_data"]; + } + } + } else if (isset($article["stored"]["content"])) { + $article["content"] = $article["stored"]["content"]; + } + + return true; + } + + if (strpos($article["link"], "penny-arcade.com") !== FALSE && strpos($article["title"], "News Post:") !== FALSE) { + if (strpos($article["plugin_data"], "af_comics,$owner_uid:") === FALSE) { + if ($debug_enabled) { + _debug("af_pennyarcade: Processing news post"); + } + $doc = new DOMDocument(); + $doc->loadHTML(fetch_file_contents($article["link"])); + + if ($doc) { + $xpath = new DOMXPath($doc); + $entries = $xpath->query('(//div[@class="post"])'); + + $basenode = false; + + foreach ($entries as $entry) { + $basenode = $entry; + } + + $meta = $xpath->query('(//div[@class="meta"])')->item(0); + if ($meta->parentNode) { $meta->parentNode->removeChild($meta); } + + $header = $xpath->query('(//div[@class="postBody"]/h2)')->item(0); + if ($header->parentNode) { $header->parentNode->removeChild($header); } + + $header = $xpath->query('(//div[@class="postBody"]/div[@class="comicPost"])')->item(0); + if ($header->parentNode) { $header->parentNode->removeChild($header); } + + $avatar = $xpath->query('(//div[@class="avatar"]//img)')->item(0); + $basenode->insertBefore($avatar, $basenode->firstChild); + + $uninteresting = $xpath->query('(//div[@class="avatar"])'); + foreach ($uninteresting as $i) { + $i->parentNode->removeChild($i); + } + + if ($basenode){ + $article["content"] = $doc->saveXML($basenode); + $article["plugin_data"] = "af_comics,$owner_uid:" . $article["plugin_data"]; + } + } + } else if (isset($article["stored"]["content"])) { + $article["content"] = $article["stored"]["content"]; + } + + return true; + } + + return false; + } +} +?> |