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

	const MAINTAINER = 'corenting';
	const NAME = 'NASA APOD Bridge';
	const URI = 'https://apod.nasa.gov/apod/';
	const CACHE_TIMEOUT = 43200; // 12h
	const DESCRIPTION = 'Returns the 3 latest NASA APOD pictures and explanations';

	public function collectData(){

		$html = getSimpleHTMLDOM(self::URI . 'archivepix.html')
			or returnServerError('Error while downloading the website content');

		$list = explode('<br>', $html->find('b', 0)->innertext);

		for($i = 0; $i < 3; $i++) {
			$line = $list[$i];
			$item = array();

			$uri_page = $html->find('a', $i + 3)->href;
			$uri = self::URI . $uri_page;
			$item['uri'] = $uri;

			$picture_html = getSimpleHTMLDOM($uri);
			$picture_html_string = $picture_html->innertext;

			//Extract image and explanation
			$media = $picture_html->find('p', 1)->innertext;
			$media = strstr($media, '<br>');
			$media = preg_replace('/<br>/', '', $media, 1);
			$explanation = $picture_html->find('p', 2)->innertext;

			//Extract date from the picture page
			$date = explode(' ', $picture_html->find('p', 1)->innertext);
			$item['timestamp'] = strtotime($date[4] . $date[3] . $date[2]);

			//Other informations
			$item['content'] = $media . '<br />' . $explanation;
			$item['title'] = $picture_html->find('b', 0)->innertext;
			$this->items[] = $item;
		}
	}
}