12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- class SexactuBridge extends BridgeAbstract{
- const MAINTAINER = "Riduidel";
- const NAME = "Sexactu";
- const URI = "https://www.gqmagazine.fr";
- const HTTPS_STATUS = HTTPS_STATUS_VALID;
- const DESCRIPTION = "Sexactu via rss-bridge";
- public function collectData(){
- $find = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'novembre', 'décembre');
- $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
- $html = $this->getSimpleHTMLDOM($this->getURI()) or $this->returnServerError('Could not request '.$this->getURI());
- foreach($html->find('.content-holder') as $contentHolder) {
- // only use first list as second one only contains pages numbers
- $articles = $contentHolder->find('ul', 0);
- foreach($articles->find('li') as $element) {
- // if you ask about that method_exists, there seems to be a bug in simple html dom
- // see stackoverflow for more details : http://stackoverflow.com/a/10828479/15619
- if(is_object($element)) {
- $item = array();
- // various metadata
- $titleBlock = $element->find('.title-holder', 0);
- if(is_object($titleBlock)) {
- $titleDetails = $titleBlock->find('.article-title',0);
- $titleData = $titleDetails->find('h2', 0)->find('a',0);
- $titleTimestamp =$titleDetails->find('h4',0);
- $item['title'] = $this->correctCase(trim($titleData->innertext));
- $item['uri'] = self::URI.$titleData->href;
- // Fugly date parsing due to the fact my DNS-323 doesn't support php intl extension
- $dateText = $titleTimestamp->innertext;
- $dateText = substr($dateText, strpos($dateText,',')+1);
- $dateText = str_replace($find, $replace, strtolower($dateText));
- $date = strtotime($dateText);
- $item['timestamp'] = $date;
- $item['author'] = "Maïa Mazaurette";
- $elementText = $element->find('.text-container', 0);
- // don't forget to replace images server url with gq one
- foreach($elementText->find('img') as $image) {
- $image->src = self::URI.$image->src;
- }
- $item['content'] = $elementText->innertext;
- $this->items[] = $item;
- }
- }
- }
- }
- }
- public function getURI(){
- return self::URI.'/sexactu';
- }
- public function getCacheDuration(){
- return 7200; // 2h hours
- }
- private function correctCase($str) {
- $sentences=explode('.', mb_strtolower($str, "UTF-8"));
- $str="";
- $sep="";
- foreach ($sentences as $sentence)
- {
- //upper case first char
- $sentence=ucfirst(trim($sentence));
- //append sentence to output
- $str=$str.$sep.$sentence;
- $sep=". ";
- }
- return $str;
- }
- }
|