af_comics_pa.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. if ($doc->loadHTML(fetch_file_contents($article["link"]))) {
  13. $xpath = new DOMXPath($doc);
  14. $basenode = $xpath->query('(//div[@id="comicFrame"])')->item(0);
  15. if ($basenode) {
  16. $article["content"] = $doc->saveHTML($basenode);
  17. }
  18. }
  19. return true;
  20. }
  21. if (strpos($article["link"], "penny-arcade.com") !== FALSE && strpos($article["title"], "News Post:") !== FALSE) {
  22. /*if ($debug_enabled) {
  23. _debug("af_pennyarcade: Processing news post");
  24. }*/
  25. $doc = new DOMDocument();
  26. if ($doc->loadHTML(fetch_file_contents($article["link"]))) {
  27. $xpath = new DOMXPath($doc);
  28. $entries = $xpath->query('(//div[@class="post"])');
  29. $basenode = false;
  30. foreach ($entries as $entry) {
  31. $basenode = $entry;
  32. }
  33. $meta = $xpath->query('(//div[@class="meta"])')->item(0);
  34. if ($meta->parentNode) { $meta->parentNode->removeChild($meta); }
  35. $header = $xpath->query('(//div[@class="postBody"]/h2)')->item(0);
  36. if ($header->parentNode) { $header->parentNode->removeChild($header); }
  37. $header = $xpath->query('(//div[@class="postBody"]/div[@class="comicPost"])')->item(0);
  38. if ($header->parentNode) { $header->parentNode->removeChild($header); }
  39. $avatar = $xpath->query('(//div[@class="avatar"]//img)')->item(0);
  40. if ($basenode)
  41. $basenode->insertBefore($avatar, $basenode->firstChild);
  42. $uninteresting = $xpath->query('(//div[@class="avatar"])');
  43. foreach ($uninteresting as $i) {
  44. $i->parentNode->removeChild($i);
  45. }
  46. if ($basenode){
  47. $article["content"] = $doc->saveHTML($basenode);
  48. }
  49. }
  50. return true;
  51. }
  52. return false;
  53. }
  54. }