-
Notifications
You must be signed in to change notification settings - Fork 0
/
BungieNetBridge.php
73 lines (56 loc) · 1.95 KB
/
BungieNetBridge.php
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
<?php
class BungieNetBridge extends FeedExpander {
const MAINTAINER = 'Deanosim';
const NAME = 'Bungie.net News Bridge';
const URI = 'https://www.bungie.net/en/news';
const DESCRIPTION = 'RSS Feed for Bungie.net and Destiny 2 News';
const PARAMETERS = array();
const CACHE_TIMEOUT = 10;
public function collectData(){
$this->collectExpandableDatas('https://www.bungie.net/en/rss/News');
}
protected function parseItem($newsItem){
$item = parent::parseItem($newsItem);
// Parse Categories
$categories = array();
foreach($newsItem->category as $cat) {
$categories[] = (string) $cat;
}
if (!empty($categories)) {
$item['categories'] = $categories;
}
// Parse uid
if (!empty($newsItem->guid)) {
$item['uid'] = (string) $newsItem->guid;
}
// --- Recovering the article ---
// $articlePage gets the entire page's contents
$articlePage = getSimpleHTMLDOM($newsItem->link);
// featured-image contain's the main article image
$metatags = get_meta_tags($newsItem->link);
$article_image = $metatags['twitter:image'];
// Make a new array
$enclosures = array();
// Add the article image URL to the array
$enclosures[] = $article_image;
// Put the enclosures array into the RSS item
$item['enclosures'] = $enclosures;
// post-content has the actual article
foreach($articlePage->find('div.content.text-content') as $element)
$article = $article . $element;
$article .= $metatags['twitter:image'];
// --- Fixing ugly elements ---
// List of all the crap in the article
$uselessElements = array(
'div#article-container script'
);
// Remove the listed crap
foreach($uselessElements as $uslElement) {
foreach($articlePage->find($uslElement) as $uslElementLoc) {
$article = str_replace($uslElementLoc, '', $article);
}
}
$item['content'] = $article; // A unique ID to identify the current item
return $item;
}
}