123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- class SexactuBridge extends BridgeAbstract {
- const MAINTAINER = 'Riduidel';
- const NAME = 'Sexactu';
- const URI = 'https://www.gqmagazine.fr';
- const CACHE_TIMEOUT = 7200; // 2h
- 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 = getSimpleHTMLDOM($this->getURI())
- or 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';
- }
- 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;
- }
- }
|