mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-23 07:37:35 +00:00
60 lines
1.7 KiB
PHP
60 lines
1.7 KiB
PHP
<?php
|
|
|
|
class AwwwardsBridge extends BridgeAbstract
|
|
{
|
|
const NAME = 'Awwwards';
|
|
const URI = 'https://www.awwwards.com/';
|
|
const DESCRIPTION = 'Fetches the latest ten sites of the day from Awwwards';
|
|
const MAINTAINER = 'Paroleen';
|
|
const CACHE_TIMEOUT = 3600;
|
|
|
|
const SITESURI = 'https://www.awwwards.com/websites/sites_of_the_day/';
|
|
const SITEURI = 'https://www.awwwards.com/sites/';
|
|
const ASSETSURI = 'https://assets.awwwards.com/awards/media/cache/thumb_417_299/';
|
|
|
|
private $sites = [];
|
|
|
|
public function collectData()
|
|
{
|
|
$this->fetchSites();
|
|
|
|
foreach ($this->sites as $site) {
|
|
$item = [];
|
|
$item['title'] = $site['title'];
|
|
$item['timestamp'] = $site['createdAt'];
|
|
$item['categories'] = $site['tags'];
|
|
|
|
$item['content'] = '<img src="'
|
|
. self::ASSETSURI
|
|
. $site['images']['thumbnail']
|
|
. '">';
|
|
$item['uri'] = self::SITEURI . $site['slug'];
|
|
|
|
$this->items[] = $item;
|
|
|
|
if (count($this->items) >= 10) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getIcon()
|
|
{
|
|
return 'https://www.awwwards.com/favicon.ico';
|
|
}
|
|
|
|
private function fetchSites()
|
|
{
|
|
$sites = getSimpleHTMLDOM(self::SITESURI);
|
|
foreach ($sites->find('.grid-sites li') as $li) {
|
|
$encodedJson = $li->attr['data-collectable-model-value'] ?? null;
|
|
if (!$encodedJson) {
|
|
continue;
|
|
}
|
|
$json = html_entity_decode($encodedJson, ENT_QUOTES, 'utf-8');
|
|
$site = Json::decode($json);
|
|
$this->sites[] = $site;
|
|
}
|
|
}
|
|
}
|