Textadventures.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /*
  3. Microblog bot for game release notifications
  4. Copyright (C) 2017 Alexander Yakovlev
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or
  8. (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. namespace Source;
  17. use \Game;
  18. class Textadventures extends Source {
  19. public $title = "Textadventures.co.uk";
  20. protected function parse() {
  21. $text = $this->get_text('http://textadventures.co.uk/games/latest');
  22. $this->dom->loadStr($text, []);
  23. unset($text);
  24. $games = $this->dom->find('.games-item');
  25. foreach ($games as $gameBlock) {
  26. $game = new Game;
  27. $game->url = 'http://textadventures.co.uk'.$gameBlock->find('.games-title a')->getAttribute('href');
  28. $lines = $this->dom->find('.game_info_panel_widget tr');
  29. $game->title = $gameBlock->find('.games-title a')->innerHtml;
  30. $date = strtotime($gameBlock->find('.games-date')->innerHtml);
  31. if ($date < $this->period) continue;
  32. $game_page = new \PHPHtmlParser\Dom;
  33. $text = $this->get_text($game->url);
  34. $game_page->loadStr($text, []);
  35. unset($text);
  36. try {
  37. $game->author = str_replace('by ', '', $game_page->find('h1 small')->innerHtml);
  38. $desc = $game_page->find('.col-md-12 .col-md-10 .col-md-7')[0];
  39. if ($desc) {
  40. $desc = strip_tags($desc->innerHtml);
  41. $game->description = trim(str_replace(
  42. 'You are not logged in. If you log in before playing, you\'ll be able to save your progress - which means you can come back later and pick up where you left off. Log in Play online',
  43. '',
  44. $desc
  45. ));
  46. $game->description = trim(str_replace(
  47. ' Play online',
  48. '',
  49. $desc
  50. ));
  51. }
  52. } catch (\Exception $e) {} // probably a 18+ game, no info on game page
  53. $this->games[] = $game;
  54. }
  55. }
  56. }