SexactuBridge.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. class SexactuBridge extends BridgeAbstract{
  3. const MAINTAINER = "Riduidel";
  4. const NAME = "Sexactu";
  5. const URI = "https://www.gqmagazine.fr";
  6. const CACHE_TIMEOUT = 7200; // 2h
  7. const DESCRIPTION = "Sexactu via rss-bridge";
  8. public function collectData(){
  9. $find = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'novembre', 'décembre');
  10. $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
  11. $html = getSimpleHTMLDOM($this->getURI()) or returnServerError('Could not request '.$this->getURI());
  12. foreach($html->find('.content-holder') as $contentHolder) {
  13. // only use first list as second one only contains pages numbers
  14. $articles = $contentHolder->find('ul', 0);
  15. foreach($articles->find('li') as $element) {
  16. // if you ask about that method_exists, there seems to be a bug in simple html dom
  17. // see stackoverflow for more details : http://stackoverflow.com/a/10828479/15619
  18. if(is_object($element)) {
  19. $item = array();
  20. // various metadata
  21. $titleBlock = $element->find('.title-holder', 0);
  22. if(is_object($titleBlock)) {
  23. $titleDetails = $titleBlock->find('.article-title',0);
  24. $titleData = $titleDetails->find('h2', 0)->find('a',0);
  25. $titleTimestamp =$titleDetails->find('h4',0);
  26. $item['title'] = $this->correctCase(trim($titleData->innertext));
  27. $item['uri'] = self::URI.$titleData->href;
  28. // Fugly date parsing due to the fact my DNS-323 doesn't support php intl extension
  29. $dateText = $titleTimestamp->innertext;
  30. $dateText = substr($dateText, strpos($dateText,',')+1);
  31. $dateText = str_replace($find, $replace, strtolower($dateText));
  32. $date = strtotime($dateText);
  33. $item['timestamp'] = $date;
  34. $item['author'] = "Maïa Mazaurette";
  35. $elementText = $element->find('.text-container', 0);
  36. // don't forget to replace images server url with gq one
  37. foreach($elementText->find('img') as $image) {
  38. $image->src = self::URI.$image->src;
  39. }
  40. $item['content'] = $elementText->innertext;
  41. $this->items[] = $item;
  42. }
  43. }
  44. }
  45. }
  46. }
  47. public function getURI(){
  48. return self::URI.'/sexactu';
  49. }
  50. private function correctCase($str) {
  51. $sentences=explode('.', mb_strtolower($str, "UTF-8"));
  52. $str="";
  53. $sep="";
  54. foreach ($sentences as $sentence)
  55. {
  56. //upper case first char
  57. $sentence=ucfirst(trim($sentence));
  58. //append sentence to output
  59. $str=$str.$sep.$sentence;
  60. $sep=". ";
  61. }
  62. return $str;
  63. }
  64. }