Преглед изворни кода

[DealabsBridge] Add new bridge

sysadminstory пре 6 година
родитељ
комит
fe48340327
1 измењених фајлова са 134 додато и 0 уклоњено
  1. 134 0
      bridges/DealabsBridge.php

+ 134 - 0
bridges/DealabsBridge.php

@@ -0,0 +1,134 @@
+<?php
+class DealabsBridge extends BridgeAbstract {
+	const NAME = 'Dealabs search bridge';
+	const URI = 'https://www.dealabs.com/';
+	const DESCRIPTION = 'Return the Dealabs search result using keywords, with/without expired deals, with/without shop deals and by category';
+	const MAINTAINER = 'sysadminstory';
+	const PARAMETERS = array( array (
+		'q' => array('name' => 'Mot(s) clé(s)', 'type' => 'text', 'required' => true ),
+		'expired_choice' => array('name' => 'Afficher deals expirés', 'type' => 'checkbox'),
+		'instore_choice' => array('name' => 'Afficher deals en magasin', 'type' => 'checkbox'),
+		'cat' => array(
+			'name' => 'Catégorie',
+			'type' => 'list',
+			'values' => array(
+				'Toutes les catégories' => '',
+				'High-tech' => array(
+					'Tous' => 'c2',
+					'Informatique' => 's3',
+					'Téléphonie' => 's4',
+					'Accessoires, consommables' => 's6',
+					'Gadgets' => 's8',
+					'Applications, logiciels' => 's46'
+				),
+				'Audiovisuel' => array(
+					'Tous' => 'c5',
+					'Image et son' => 's9',
+					'Photo, caméscopes' => 's10',
+					'CD, DVD, Blu-ray' => 's11',
+					'Jeux vidéo, consoles' => 's12'
+				),
+				'Loisirs' => array(
+					'Tous' => 'c7',
+					'Jeux, jouets' => 's13',
+					'Livres, papeterie' => 's14',
+					'Plein air' => 's15',
+					'Sport' => 's35',
+					'Auto/Moto, accessoires' => 's37',
+					'Animaux, accessoires' => 's47',
+					'Instruments de musique' => 's48'
+				),
+				'Mode' => array(
+					'Tous' => 'c16',
+					'Homme' => 's17',
+					'Femme' => 's18',
+					'Mixte' => 's50',
+					'Enfants' => 's19',
+					'Puériculture' => 's36',
+					'Beauté, santé' => 's21',
+					'Bijoux, accessoires' => 's20',
+					'Bagagerie' => 's38'
+				),
+				'Maison' => array(
+					'Tous' => 'c23',
+					'Meuble, literie, déco' => 's24',
+					'Cuisine, art de la table' => 's25',
+					'Électroménager' => 's26',
+					'Bricolage' => 's27',
+					'Jardin' => 's28'
+				),
+				'Services' => array(
+					'Tous' => 'c51',
+					'Voyages' => 's57',
+					'Hébergement, restauration' => 's52',
+					'Sorties' => 's53',
+					'Presse' => 's24',
+					'Bien-être' => 's55',
+					'Transport, expédition' => 's56',
+					'Autres' => 's58'
+				),
+				'Épicerie' => 'c31'
+
+			)
+		)
+
+
+	));
+	const CACHE_TIMEOUT = 3600;
+
+	public function collectData(){
+		$q = $this->getInput('q');
+
+		$expired_choice = $this->getInput('expired_choice');
+		$instore_choice = $this->getInput('instore_choice');
+		$cat_subcat = $this->getInput('cat');
+		$html = getSimpleHTMLDOM(self::URI
+			. '/search/?q='
+			. urlencode($q)
+			. '&hide_expired='
+			. $expired_choice
+			. '&hide_instore='
+			. $instore_choice
+			. '&' . $this->getCatSubcatParam($cat_subcat))
+			or returnServerError('Could not request Dealabs.');
+		$list = $html->find('article');
+		if($list === null) {
+			return;
+		}
+
+		foreach($list as $deal) {
+			$item = array();
+			$item['uri'] = $deal->find('a.title',0)->href;
+			$item['title'] = $deal->find('a.title', 0)->plaintext;
+			$item['author'] = $deal->find('a.poster_link', 0)->plaintext;
+			$item['content'] = '<table><tr><td>' .$deal->find('div.image_part',0)->outertext . '</td><td>'. $deal->find('a.title',0)->outertext . $deal->find('p.description',0)->outertext .'</td><td>'. $deal->find('div.vote_part',0)->outertext . '</td></table>';
+			$item['timestamp'] = $this->relativeDateToTimestamp($deal->find('p.date_deal',0)->plaintext);
+			$this->items[] = $item;
+		}
+
+	}
+
+	private function relativeDateToTimestamp($str) {
+		$date = new DateTime();
+		$date->modify(str_replace(array('il y a ', 'min' , 'h', 'jour', 'jours', 'mois', 'ans'), array('-', 'minute', 'hour', 'day', 'month', 'year'), $str));
+		return $date->getTimestamp();
+	}
+
+	private function getCatSubcatParam($str) {
+		if(strlen($str) >=2) {
+			if(substr($str, 0, 1) == 'c') {
+				$var_name = 'cat[]';
+			}
+			else if(substr($str, 0, 1) == 's') {
+				$var_name = 'sub_cat[]';
+			}
+			$value = substr($str, 1);
+			return $var_name .'='. $value;
+		}
+		else
+		{
+			return '';
+		}
+	}
+
+}