aboutsummaryrefslogtreecommitdiff
path: root/bridges/CubariBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/CubariBridge.php')
-rw-r--r--bridges/CubariBridge.php182
1 files changed, 93 insertions, 89 deletions
diff --git a/bridges/CubariBridge.php b/bridges/CubariBridge.php
index 00a2a0ba..9a08dbba 100644
--- a/bridges/CubariBridge.php
+++ b/bridges/CubariBridge.php
@@ -1,98 +1,102 @@
<?php
+
class CubariBridge extends BridgeAbstract
{
- const NAME = 'Cubari';
- const URI = 'https://cubari.moe';
- const DESCRIPTION = 'Parses given cubari-formatted JSON file for updates.';
- const MAINTAINER = 'KamaleiZestri';
- const PARAMETERS = array(array(
- 'gist' => array(
- 'name' => 'Gist/Raw Url',
- 'type' => 'text',
- 'required' => true,
- 'exampleValue' => 'https://raw.githubusercontent.com/kurisumx/baka/main/ikedan'
- )
- ));
-
- private $mangaTitle = '';
-
- public function getName()
- {
- if (!empty($this->mangaTitle))
- return $this->mangaTitle . ' - ' . self::NAME;
- else
- return self::NAME;
- }
-
- public function getURI()
- {
- if ($this->getInput('gist') != '')
- return self::URI . '/read/gist/' . $this->getEncodedGist();
- else
- return self::URI;
- }
-
- /**
- * The Cubari bridge.
- *
- * Cubari urls are base64 encodes of a given github raw or gist link described as below:
- * https://cubari.moe/read/gist/${bаse64.url_encode(raw/<rest of the url...>)}/
- * https://cubari.moe/read/gist/${bаse64.url_encode(gist/<rest of the url...>)}/
- * https://cubari.moe/read/gist/${gitio shortcode}
- *
- * This bridge uses just the raw/gist and generates matching cubari urls.
- */
- public function collectData()
- {
- $jsonSite = getContents($this->getInput('gist'));
- $jsonFile = json_decode($jsonSite, true);
-
- $this->mangaTitle = $jsonFile['title'];
-
- $chapters = $jsonFile['chapters'];
-
- foreach ($chapters as $chapnum => $chapter) {
- $item = $this->getItemFromChapter($chapnum, $chapter);
- $this->items[] = $item;
- }
-
- array_multisort(array_column($this->items, 'timestamp'), SORT_DESC, $this->items);
- }
-
- protected function getEncodedGist()
- {
- $url = $this->getInput('gist');
-
- preg_match('/\/([a-z]*)\.githubusercontent.com(.*)/', $url, $matches);
-
- // raw or gist is first match.
- $unencoded = $matches[1] . $matches[2];
-
- return base64_encode($unencoded);
- }
-
- private function getSanitizedHash($string)
- {
- return hash('sha1', preg_replace('/[^a-zA-Z0-9\-\.]/', '', ucwords(strtolower($string))));
- }
-
- protected function getItemFromChapter($chapnum, $chapter)
- {
- $item = array();
-
- $item['uri'] = $this->getURI() . '/' . $chapnum;
- $item['title'] = 'Chapter ' . $chapnum . ' - ' . $chapter['title'] . ' - ' . $this->mangaTitle;
- foreach ($chapter['groups'] as $key => $value)
- $item['author'] = $key;
- $item['timestamp'] = $chapter['last_updated'];
-
- $item['content'] = '<p>Manga: <a href=' . $this->getURI() . '>' . $this->mangaTitle . '</a> </p>
+ const NAME = 'Cubari';
+ const URI = 'https://cubari.moe';
+ const DESCRIPTION = 'Parses given cubari-formatted JSON file for updates.';
+ const MAINTAINER = 'KamaleiZestri';
+ const PARAMETERS = [[
+ 'gist' => [
+ 'name' => 'Gist/Raw Url',
+ 'type' => 'text',
+ 'required' => true,
+ 'exampleValue' => 'https://raw.githubusercontent.com/kurisumx/baka/main/ikedan'
+ ]
+ ]];
+
+ private $mangaTitle = '';
+
+ public function getName()
+ {
+ if (!empty($this->mangaTitle)) {
+ return $this->mangaTitle . ' - ' . self::NAME;
+ } else {
+ return self::NAME;
+ }
+ }
+
+ public function getURI()
+ {
+ if ($this->getInput('gist') != '') {
+ return self::URI . '/read/gist/' . $this->getEncodedGist();
+ } else {
+ return self::URI;
+ }
+ }
+
+ /**
+ * The Cubari bridge.
+ *
+ * Cubari urls are base64 encodes of a given github raw or gist link described as below:
+ * https://cubari.moe/read/gist/${bаse64.url_encode(raw/<rest of the url...>)}/
+ * https://cubari.moe/read/gist/${bаse64.url_encode(gist/<rest of the url...>)}/
+ * https://cubari.moe/read/gist/${gitio shortcode}
+ *
+ * This bridge uses just the raw/gist and generates matching cubari urls.
+ */
+ public function collectData()
+ {
+ $jsonSite = getContents($this->getInput('gist'));
+ $jsonFile = json_decode($jsonSite, true);
+
+ $this->mangaTitle = $jsonFile['title'];
+
+ $chapters = $jsonFile['chapters'];
+
+ foreach ($chapters as $chapnum => $chapter) {
+ $item = $this->getItemFromChapter($chapnum, $chapter);
+ $this->items[] = $item;
+ }
+
+ array_multisort(array_column($this->items, 'timestamp'), SORT_DESC, $this->items);
+ }
+
+ protected function getEncodedGist()
+ {
+ $url = $this->getInput('gist');
+
+ preg_match('/\/([a-z]*)\.githubusercontent.com(.*)/', $url, $matches);
+
+ // raw or gist is first match.
+ $unencoded = $matches[1] . $matches[2];
+
+ return base64_encode($unencoded);
+ }
+
+ private function getSanitizedHash($string)
+ {
+ return hash('sha1', preg_replace('/[^a-zA-Z0-9\-\.]/', '', ucwords(strtolower($string))));
+ }
+
+ protected function getItemFromChapter($chapnum, $chapter)
+ {
+ $item = [];
+
+ $item['uri'] = $this->getURI() . '/' . $chapnum;
+ $item['title'] = 'Chapter ' . $chapnum . ' - ' . $chapter['title'] . ' - ' . $this->mangaTitle;
+ foreach ($chapter['groups'] as $key => $value) {
+ $item['author'] = $key;
+ }
+ $item['timestamp'] = $chapter['last_updated'];
+
+ $item['content'] = '<p>Manga: <a href=' . $this->getURI() . '>' . $this->mangaTitle . '</a> </p>
<p>Chapter Number: ' . $chapnum . '</p>
<p>Chapter Title: <a href=' . $item['uri'] . '>' . $chapter['title'] . '</a></p>
<p>Group: ' . $item['author'] . '</p>';
- $item['uid'] = $this->getSanitizedHash($item['title'] . $item['author']);
+ $item['uid'] = $this->getSanitizedHash($item['title'] . $item['author']);
- return $item;
- }
+ return $item;
+ }
}