af_comics_pa.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. class Af_Comics_Pa extends Af_ComicFilter {
  3. function supported() {
  4. return array("Penny Arcade");
  5. }
  6. function process(&$article) {
  7. if (strpos($article["link"], "penny-arcade.com") !== FALSE && strpos($article["title"], "Comic:") !== FALSE) {
  8. if ($debug_enabled) {
  9. _debug("af_pennyarcade: Processing comic");
  10. }
  11. $doc = new DOMDocument();
  12. $doc->loadHTML(fetch_file_contents($article["link"]));
  13. $basenode = false;
  14. if ($doc) {
  15. $xpath = new DOMXPath($doc);
  16. $basenode = $xpath->query('(//div[@id="comicFrame"])')->item(0);
  17. if ($basenode) {
  18. $article["content"] = $doc->saveXML($basenode);
  19. }
  20. }
  21. return true;
  22. }
  23. if (strpos($article["link"], "penny-arcade.com") !== FALSE && strpos($article["title"], "News Post:") !== FALSE) {
  24. if ($debug_enabled) {
  25. _debug("af_pennyarcade: Processing news post");
  26. }
  27. $doc = new DOMDocument();
  28. $doc->loadHTML(fetch_file_contents($article["link"]));
  29. if ($doc) {
  30. $xpath = new DOMXPath($doc);
  31. $entries = $xpath->query('(//div[@class="post"])');
  32. $basenode = false;
  33. foreach ($entries as $entry) {
  34. $basenode = $entry;
  35. }
  36. $meta = $xpath->query('(//div[@class="meta"])')->item(0);
  37. if ($meta->parentNode) { $meta->parentNode->removeChild($meta); }
  38. $header = $xpath->query('(//div[@class="postBody"]/h2)')->item(0);
  39. if ($header->parentNode) { $header->parentNode->removeChild($header); }
  40. $header = $xpath->query('(//div[@class="postBody"]/div[@class="comicPost"])')->item(0);
  41. if ($header->parentNode) { $header->parentNode->removeChild($header); }
  42. $avatar = $xpath->query('(//div[@class="avatar"]//img)')->item(0);
  43. if ($basenode)
  44. $basenode->insertBefore($avatar, $basenode->firstChild);
  45. $uninteresting = $xpath->query('(//div[@class="avatar"])');
  46. foreach ($uninteresting as $i) {
  47. $i->parentNode->removeChild($i);
  48. }
  49. if ($basenode){
  50. $article["content"] = $doc->saveXML($basenode);
  51. }
  52. }
  53. return true;
  54. }
  55. return false;
  56. }
  57. }
  58. ?>