add_hook($host::HOOK_ARTICLE_FILTER, $this);
$host->add_hook($host::HOOK_RENDER_ARTICLE_CDM, $this);
$host->add_hook($host::HOOK_RENDER_ARTICLE, $this);
}
function hook_render_article_cdm($article) {
return $this->mangle_article($article);
}
function hook_render_article($article) {
try {
return $this->mangle_article($article);
}
catch (Exception $e) {
$article['content'] .= "
Error processing via gdorn_comics plugin!
" . $e->getMessage();
}
}
function mangle_article($article) {
// Penny Arcade
if (strpos($article["link"], "penny-arcade.com") !== FALSE && strpos($article["title"], "Comic:") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@id="comicFrame"])', $article);
}
// The Trenches
elseif (strpos($article["link"], "trenchescomic.com/comic/post/") !== FALSE &&
strpos($article["title"], "Comic:") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@id="comic"]//img)', $article);
}
// The Better To Find You With (http://sorcery101.net/)
elseif (strpos($article["link"], "sorcery101.net/the-city-between/thebettertofindyouwith") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@class="webcomic-image"]//img)', $article);
}
// Drugs and Wires
elseif (strpos($article["link"], "drugsandwires.fail/dnwcomic/") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@class="webcomic-image"]//img)', $article);
}
// SatW
elseif (strpos($article["link"], "satwcomic.com/") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@class="container"]//center//img)', $article);
}
// Manic Pixie Nightmare Girls
elseif (strpos($article["link"], "manicpixienightmaregirls.com/") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@id="main"]//img)', $article);
}
// PhD Unknown
elseif (strpos($article["link"], "www.phdunknown.com/index.php?id=") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@id="comicbody"]//img)', $article) . $article['content'];
}
// PhD Unknown
elseif (strpos($article["link"], "www.pilotside.us/comic/") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@id="comic"]//img)', $article) . $article['content'];
}
// SBMC
elseif (strpos($article["link"], "www.smbc-comics.com/comic/") !== FALSE) {
if (strpos($article["content"], "bonus panel!") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$aftercomic = $this->get_img_tags($xpath, '(//div[@id="aftercomic"]//img)', $article);
$article['content'] .= $aftercomic;
}
}
// Chainsawsuit
elseif (strpos($article["link"], "chainsawsuit.com/comic/") !== FALSE ) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@id="comic"]//img)', $article) . $article['content'];
}
// Eat That Toast
elseif (strpos($article["link"], "eatthattoast.com/comic/") !== FALSE ) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//div[@id="comic"]//img)', $article);
}
// Poorly Drawn Lines
elseif (strpos($article["link"], "poorlydrawnlines.com/comic/") !== FALSE ) {
$xpath = $this->get_xpath_dealie($article['link']);
$img_tag = $this->get_img_tags($xpath, '(//div[@class="post"]//img)', $article);
$article['content'] = $img_tag . $article['content'];
}
// Cyanide & Happiness
elseif (strpos($article["link"], "explosm.net/comics") !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '(//img[@id="main-comic"])', $article);
}
// Joy of Tech
elseif (strpos($article['link'], 'www.geekculture.com/joyoftech/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '//p[@class="Maintext"]//img[contains(@src, "joyimages")]', $article);
}
/* OotS uses some kind of referer check which prevents the browser from getting the image.
* Possible fix would be to download the image via fetch_file_contents and mirror it.
// Order of the Stick
elseif (strpos(strtolower($article['link']), 'giantitp.com/comics/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, '//td/img[contains(@src, "/comics/images/")]', $article);
}
*/
// Girls with Slingshots
elseif (strpos($article['link'], 'girlswithslingshots.com/comic/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//div[@id='cc-comicbody']//img", $article);
}
// CTRL+ALT+DEL Sillies
elseif (strpos($article['link'], 'cad-comic.com/sillies/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//div[@id='content']/img", $article);
}
// CTRL+ALT+DEL
elseif (strpos($article['link'], 'cad-comic.com/comic/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//div[@class='comicpage']//img[contains(@src, 'Strip')]", $article);
}
// Three Panel Soul
elseif (strpos($article['link'], 'threepanelsoul.com/comic/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//div[@id='cc-comicbody']/img", $article);
}
// Two Lumps
elseif (strpos($article['link'], 'twolumps.net/d/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//img[@class='ksc' and contains(@src, 'comics')]", $article);
}
// Breaking Cat News
elseif (strpos($article['link'], 'breakingcatnews.com/comic/') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']/img", $article);
}
// Something Positive
elseif (strpos($article['link'], 'somethingpositive.net') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//img[contains(@src, 'sp') and contains(@src, 'uploads') and contains(@src, 'png')]", $article);
}
// Gunnerkrigg Court
elseif (strpos($article['link'], 'gunnerkrigg.com/?p') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//img[starts-with(@src, '/comics/') and @class='comic_image']", $article);
}
// Jesus & Mo
elseif (strpos($article['link'], 'jesusandmo.net') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']/noscript/img", $article);
}
// Timothy Winchester (People I Know)
elseif (strpos($article['link'], 'www.timothywinchester.com/2') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$orig_content = strip_tags($article['content']);
$article['content'] = $this->get_img_tags($xpath, "//div[@class='singleImage']/img[@class='magicfields']", $article);
$article['content'] .= "
$orig_content";
}
// Awkward Zombie
elseif (strpos($article['link'], 'awkwardzombie.com/index.php?comic') !== FALSE) {
$xpath = $this->get_xpath_dealie($article['link']);
$orig_content = strip_tags($article['content']);
$article['content'] = $this->get_img_tags($xpath, "//div[@id='cc-comicbody']/img", $article);
$article['content'] .= "
$orig_content
"; $article['content'] = str_replace('comicsthumbs', 'comics', $article['content']); //also append the blarg post because that's small, interesting, //and sometimes necessary for old fogeys like me to get what game it's about $entries = $xpath->query("//div[@id='blarg']/div[last()]"); foreach ($entries as $entry) { $article['content'] .= "" . $entry->textContent . "
"; } } // Camp Weedonwantcha elseif (strpos($article['link'], 'campcomic.com/comic/') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']//img", $article); } // The Oatmeal elseif (strpos($article['link'], '//theoatmeal.com/comics/') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']//img", $article); } // Poly In Pictures elseif (strpos($article['link'], 'polyinpictures.com/comic/') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']//img", $article); } // Dilbert elseif (strpos($article['link'], 'dilbert.com/strip/') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@class='img-comic-container']//img", $article); } // Doghouse Diaries, which has broken alt tags in feedburner (if there are quotes) elseif (strpos($article['content'], 'thedoghousediaries.com/dhdcomics/') !== FALSE){ $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='imgdiv']//img", $article); //also get blog $entries = $xpath->query("//div[@id='signoff-wrapper']"); foreach ($entries as $entry) { $article['content'] .= "" . $entry->textContent . "
"; } } // Pain Train (to get alt tag) elseif (strpos($article['link'], 'paintraincomic.com/comic/') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']//img", $article); } // Achewood (alt tag) elseif (strpos($article['link'], 'http://www.achewood.com/index.php?date=') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//p[@id='comic_body']//a//img", $article); } // Scenes From A Multiverse (to get alt tags) elseif (strpos($article['link'], 'amultiverse.com/comic/') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']//img", $article); } // Dead Philosophers elseif (strpos($article['link'], 'dead-philosophers.com/?p') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic-1']//img", $article); } // Robot Hugs elseif (strpos($article['link'], 'www.robot-hugs.com/') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic-1']//img", $article); // And get blog entry $entries = $xpath->query("//div[@class='entry']"); foreach ($entries as $entry) { $article['content'] .= "" . $entry->textContent . "
"; } } // Dinosaur Comics Cleanup elseif (strpos($article['link'], 'qwantz.com/index.php?comic') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//img[@class='comic']", $article); //also get the blog $entries = $xpath->query("//span[@class='rss-content']"); foreach ($entries as $entry) { $article['content'] .= "" . $entry->ownerDocument->saveXML($entry) . "
"; } } // XKCD (alt tags we don't need to call out for) elseif (strpos($article['content'], 'imgs.xkcd.com/comics/') !== FALSE) { //noop } // Wondermark (alt tag already present) elseif (strpos($article['link'], 'wondermark.com/c') !== FALSE) { $xpath = $this->get_xpath_dealie($article['link']); $article['content'] = $this->get_img_tags($xpath, "//div[@id='comic']//img", $article); $entries = $xpath->query("//div[@id='comic-notes']"); foreach ($entries as $entry) { $article['content'] .= "" . $entry->ownerDocument->saveXML($entry) . "
"; } } // Invisible Bread (make the bread visible) elseif (strpos($article['content'], 'invisiblebread.com/2') !== FALSE) { $doc = new DOMDocument(); $doc->loadHTML($article['content']); $xpath = new DOMXpath($doc); $bread = $xpath->query("//a[contains(@href, 'bonus-panel')]")->item(0); if ($bread) { $bread_page_url = $bread->getAttribute('href'); $xpath = $this->get_xpath_dealie($bread_page_url); $extraimage = $xpath->query("//img[@class='extrapanelimage']")->item(0); if ($extraimage) { $new_element = $doc->createElement("img"); $new_element->setAttribute('src', $extraimage->getAttribute('src')); $bread->parentNode->replaceChild($new_element, $bread); $article['content'] = $doc->saveXML(); } } } // Questionable Content (cleanup) elseif (strpos($article['link'], 'questionablecontent') !== FALSE) { // replace the