From 5a0bacbd8a173480fe65223e0aa89b5d36c4b887 Mon Sep 17 00:00:00 2001 From: rmscoelho <50850007+rmscoelho@users.noreply.github.com> Date: Tue, 20 Jun 2023 11:45:50 +0100 Subject: [PATCH] [New Bridge] Videocardz.com bridge (#3442) * [New Bridge] Videocardz.com Bridge * [New Bridge] Videocardz.com Bridge * [Videocardz.com] cache timeout increase * [VideoCardzBridge] cache timeout change * [VideoCardzBridge] formatting * [VideoCardBridge] formatting fixes * [VideoCardzBridge] formatting fixes --- bridges/VideoCardzBridge.php | 79 ++++++++++++++++++++++++++++++++++++ config.default.ini.php | 10 +---- 2 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 bridges/VideoCardzBridge.php diff --git a/bridges/VideoCardzBridge.php b/bridges/VideoCardzBridge.php new file mode 100644 index 00000000..d5787435 --- /dev/null +++ b/bridges/VideoCardzBridge.php @@ -0,0 +1,79 @@ + [ + 'name' => 'News Feed', + 'type' => 'list', + 'title' => 'Feeds from VideoCardz.com', + 'values' => [ + 'News' => 'sections/news', + 'Featured' => 'sections/featured', + 'Leak' => 'sections/leak', + 'Press Releases' => 'sections/press-releases', + 'Preview Roundup' => 'sections/review-roundup', + 'Rumour' => 'sections/rumor', + ] + ] + ] + ]; + + public function getIcon() + { + return 'https://videocardz.com/favicon-32x32.png?x66580'; + } + + public function getURI() + { + switch ($this->queriedContext) { + case 'feed': + $url = self::URI . $this->getInput('feed'); + break; + default: + $url = self::URI; + } + return $url; + } + + public function collectData() + { + $url = sprintf('https://videocardz.com/%s', $this->getInput('feed')); + $dom = getSimpleHTMLDOM($url); + $dom = $dom->find('.subcategory-news', 0); + if (!$dom) { + throw new \Exception(sprintf('Unable to find css selector on `%s`', $url)); + } + $dom = defaultLinkTo($dom, $this->getURI()); + + foreach ($dom->find('article') as $article) { + //Get thumbnail + $image = $article->style; + $image = preg_replace('/background-image:url\(/i', '', $image); + $image = substr_replace($image, '', -3); + //Get date and time of publishing + $datetime = date_parse($article->find('.main-index-article-datetitle-date > a', 0)->plaintext); + $year = $datetime['year']; + $month = $datetime['month']; + $day = $datetime['day']; + $hour = $datetime['hour']; + $minute = $datetime['minute']; + $timestamp = mktime($hour, $minute, 0, $month, $day, $year); + + $content = '' . $article->find('h2', 0)->plaintext . ' thumbnail'; + + $this->items[] = [ + 'title' => $article->find('h2', 0)->plaintext, + 'uri' => $article->find('p.main-index-article-datetitle-date > a', 0)->href, + 'content' => $content, + 'timestamp' => $timestamp, + ]; + } + } +} diff --git a/config.default.ini.php b/config.default.ini.php index d715d58b..955dc9c0 100644 --- a/config.default.ini.php +++ b/config.default.ini.php @@ -7,15 +7,7 @@ [system] ; Only these bridges are available for feed production -enabled_bridges[] = Youtube -enabled_bridges[] = Twitter -enabled_bridges[] = Telegram -enabled_bridges[] = Reddit -enabled_bridges[] = Filter -enabled_bridges[] = Vk -enabled_bridges[] = FeedMerge -enabled_bridges[] = Twitch -enabled_bridges[] = ThePirateBay +enabled_bridges[] = * ; Defines the timezone used by RSS-Bridge ; Find a list of supported timezones at