summaryrefslogtreecommitdiff
path: root/bridges/HDWallpapersBridge.php
blob: cea6e3447c82722f120c15ae52e0f68c169d205d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
class HDWallpapersBridge extends BridgeAbstract {
	const MAINTAINER = 'nel50n';
	const NAME = 'HD Wallpapers Bridge';
	const URI = 'http://www.hdwallpapers.in/';
	const CACHE_TIMEOUT = 43200; //12h
	const DESCRIPTION = 'Returns the latests wallpapers from HDWallpapers';

	const PARAMETERS = array( array(
		'c' => array(
			'name' => 'category',
			'defaultValue' => 'latest_wallpapers'
		),
		'm' => array(
			'name' => 'max number of wallpapers'
		),
		'r' => array(
			'name' => 'resolution',
			'defaultValue' => '1920x1200',
			'exampleValue' => '1920x1200, 1680x1050,…'
		)
	));

	public function collectData(){
		$category = $this->category;
		if(strrpos($category, 'wallpapers') !== strlen($category) - strlen('wallpapers')) {
			$category .= '-desktop-wallpapers';
		}

		$num = 0;
		$max = $this->getInput('m') ?: 14;
		$lastpage = 1;

		for($page = 1; $page <= $lastpage; $page++) {
			$link = self::URI . '/' . $category . '/page/' . $page;
			$html = getSimpleHTMLDOM($link)
				or returnServerError('No results for this query.');

			if($page === 1) {
				preg_match('/page\/(\d+)$/', $html->find('.pagination a', -2)->href, $matches);
				$lastpage = min($matches[1], ceil($max / 14));
			}

			foreach($html->find('.wallpapers .wall a') as $element) {
				$thumbnail = $element->find('img', 0);

				$item = array();
				// http://www.hdwallpapers.in/download/yosemite_reflections-1680x1050.jpg
				$item['uri'] = self::URI
				. '/download'
				. str_replace('wallpapers.html', $this->getInput('r') . '.jpg', $element->href);

				$item['timestamp'] = time();
				$item['title'] = $element->find('p', 0)->text();
				$item['content'] = $item['title']
				. '<br><a href="'
				. $item['uri']
				. '"><img src="'
				. self::URI
				. $thumbnail->src
				. '" /></a>';

				$this->items[] = $item;

				$num++;
				if ($num >= $max)
					break 2;
			}
		}
	}

	public function getName(){
		if(!is_null($this->getInput('c')) && !is_null($this->getInput('r'))) {
			return 'HDWallpapers - '
			. str_replace(['__', '_'], [' & ', ' '], $this->getInput('c'))
			. ' ['
			. $this->getInput('r')
			. ']';
		}

		return parent::getName();
	}
}