1
0
Files
Bridges/HolonometriaMangaBridge.php
Akamaru efbc4f60da Übernehme Bridges von Brawl
- GenshinImpactNewsBridge
- HolonometriaMangaBridge
- PokemonGOBridge
2025-07-03 21:32:20 +02:00

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);
}
}