76 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
class HolonometriaMangaBridge extends BridgeAbstract
 | 
						|
{
 | 
						|
    const MAINTAINER = 'Brawl, Akamaru';
 | 
						|
    const NAME = 'Holonometria Manga Series';
 | 
						|
    const URI = 'https://holoearth.com/en/alt/holonometria/manga/';
 | 
						|
    const CACHE_TIMEOUT = 21600; // 6h
 | 
						|
    const DESCRIPTION = 'Get the latest chapters of the Holonometria Manga series.';
 | 
						|
 | 
						|
    const PARAMETERS = [
 | 
						|
        [
 | 
						|
            'manga' => [
 | 
						|
                'name' => 'Manga',
 | 
						|
                'type' => 'list',
 | 
						|
                'values' => [
 | 
						|
                    'Vesta de Cooking' => 'vestadecooking',
 | 
						|
                    'Underworld Academy Overload!!' => 'soreyukemakaigakko',
 | 
						|
                    'Yamato Phantasia' => 'yamatokasoukaiitan',
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
        ],
 | 
						|
    ];
 | 
						|
 | 
						|
    public function getIcon()
 | 
						|
    {
 | 
						|
        return 'https://holoearth.com/assets/img/favicon_holonometria.ico';
 | 
						|
    }
 | 
						|
 | 
						|
    public function collectData()
 | 
						|
    {
 | 
						|
        $manga = $this->getInput('manga');
 | 
						|
        $pageUrl = self::URI . $manga . '/';
 | 
						|
        $html = getSimpleHTMLDOM($pageUrl)
 | 
						|
            or returnServerError('Konnte die Webseite nicht laden: ' . $pageUrl);
 | 
						|
 | 
						|
        $items = [];
 | 
						|
        foreach ($html->find('ul.manga-detail__list li.manga-detail__list-item') as $element) {
 | 
						|
            $a = $element->find('a.manga-detail__list-link', 0);
 | 
						|
            if (!$a) continue;
 | 
						|
            $item = [];
 | 
						|
            $item['uri'] = $a->href;
 | 
						|
            $title = $a->find('p.manga-detail__list-title', 0);
 | 
						|
            $date = $a->find('p.manga-detail__list-date', 0);
 | 
						|
            $timestamp = null;
 | 
						|
            $date_str = '';
 | 
						|
            if ($date) {
 | 
						|
                $date_raw = trim(strip_tags($date->innertext));
 | 
						|
                if (preg_match('/^(\d{4})\.(\d{2})\.(\d{2})$/', $date_raw, $m)) {
 | 
						|
                    $timestamp = mktime(0, 0, 0, $m[2], $m[3], $m[1]);
 | 
						|
                } else {
 | 
						|
                    $timestamp = strtotime($date_raw);
 | 
						|
                }
 | 
						|
                if ($timestamp && $timestamp > 0) {
 | 
						|
                    $date_str = ' (' . date('d.m.Y', $timestamp) . ')';
 | 
						|
                    $item['timestamp'] = $timestamp;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            $item['title'] = ($title ? trim(strip_tags($title->innertext)) : 'Kapitel') . $date_str;
 | 
						|
            $thumb = $a->find('p.manga-detail__list-thumb img', 0);
 | 
						|
            if ($thumb) {
 | 
						|
                $item['enclosures'] = [$thumb->src];
 | 
						|
                $item['content'] = '<img src="' . $thumb->src . '" />';
 | 
						|
            }
 | 
						|
            $item['uid'] = $item['uri'];
 | 
						|
            $items[] = $item;
 | 
						|
        }
 | 
						|
        // Nach Datum absteigend sortieren (neustes zuerst, ohne 0-Timestamps)
 | 
						|
        usort($items, function($a, $b) {
 | 
						|
            $at = isset($a['timestamp']) ? $a['timestamp'] : 0;
 | 
						|
            $bt = isset($b['timestamp']) ? $b['timestamp'] : 0;
 | 
						|
            return $bt <=> $at;
 | 
						|
        });
 | 
						|
        $this->items = array_slice($items, 0, 15);
 | 
						|
    }
 | 
						|
}
 |