summaryrefslogtreecommitdiff
path: root/bridges/EZTVBridge.php
blob: c016ff3308165d3611bb3858ca2d167dc69bd949 (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
<?php
class EZTVBridge extends BridgeAbstract {

	const MAINTAINER = 'alexAubin';
	const NAME = 'EZTV';
	const URI = 'https://eztv.ch/';
	const DESCRIPTION = 'Returns list of *recent* torrents for a specific show
on EZTV. Get showID from URLs in https://eztv.ch/shows/showID/show-full-name.';

	const PARAMETERS = array( array(
		'i' => array(
			'name' => 'Show ids',
			'exampleValue' => 'showID1,showID2,…',
			'required' => true
		)
	));

	public function collectData(){

		// Make timestamp from relative released time in table
		function makeTimestamp($relativeReleaseTime){

			$relativeDays = 0;
			$relativeHours = 0;

			foreach(explode(' ', $relativeReleaseTime) as $relativeTimeElement) {
				if(substr($relativeTimeElement, -1) == 'd') $relativeDays = substr($relativeTimeElement, 0, -1);
				if(substr($relativeTimeElement, -1) == 'h') $relativeHours = substr($relativeTimeElement, 0, -1);
			}
			return mktime(date('h') - $relativeHours, 0, 0, date('m'), date('d') - $relativeDays, date('Y'));
		}

		// Loop on show ids
		$showList = explode(',', $this->getInput('i'));
		foreach($showList as $showID) {

			// Get show page
			$html = getSimpleHTMLDOM(self::URI . 'shows/' . rawurlencode($showID) . '/')
				or returnServerError('Could not request EZTV for id "' . $showID . '"');

			// Loop on each element that look like an episode entry...
			foreach($html->find('.forum_header_border') as $element) {

				// Filter entries that are not episode entries
				$ep = $element->find('td', 1);
				if(empty($ep)) continue;
				$epinfo = $ep->find('.epinfo', 0);
				$released = $element->find('td', 3);
				if(empty($epinfo)) continue;
				if(empty($released->plaintext)) continue;

				// Filter entries that are older than 1 week
				if($released->plaintext == '&gt;1 week') continue;

				// Fill item
				$item = array();
				$item['uri'] = self::URI . $epinfo->href;
				$item['id'] = $item['uri'];
				$item['timestamp'] = makeTimestamp($released->plaintext);
				$item['title'] = $epinfo->plaintext;
				$item['content'] = $epinfo->alt;
				if(isset($item['title']))
					$this->items[] = $item;
			}
		}
	}
}