aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Reader
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-09-10 00:06:05 -0700
committerFuwn <[email protected]>2024-09-10 00:06:05 -0700
commitfcbc26f544a5ad7ec841561dec695aaceb63d709 (patch)
treec94210ebbdec428cac3cd7148ae2fb5929474d12 /src/lib/Reader
parentrefactor(reader): chapter list component (diff)
downloaddue.moe-fcbc26f544a5ad7ec841561dec695aaceb63d709.tar.xz
due.moe-fcbc26f544a5ad7ec841561dec695aaceb63d709.zip
feat(reader): add rawkuma chapter support
Diffstat (limited to 'src/lib/Reader')
-rw-r--r--src/lib/Reader/Chapters/MangaDex.svelte (renamed from src/lib/Reader/Chapters.svelte)2
-rw-r--r--src/lib/Reader/Chapters/Rawkuma.svelte22
-rw-r--r--src/lib/Reader/resource.ts40
3 files changed, 63 insertions, 1 deletions
diff --git a/src/lib/Reader/Chapters.svelte b/src/lib/Reader/Chapters/MangaDex.svelte
index 9953036e..12eca713 100644
--- a/src/lib/Reader/Chapters.svelte
+++ b/src/lib/Reader/Chapters/MangaDex.svelte
@@ -1,5 +1,5 @@
<script lang="ts">
- export let data;
+ export let data: any;
</script>
<ul>
diff --git a/src/lib/Reader/Chapters/Rawkuma.svelte b/src/lib/Reader/Chapters/Rawkuma.svelte
new file mode 100644
index 00000000..5a7e57ad
--- /dev/null
+++ b/src/lib/Reader/Chapters/Rawkuma.svelte
@@ -0,0 +1,22 @@
+<script lang="ts">
+ import { getChaptersFromText } from '$lib/Data/Manga/raw';
+ import { onMount } from 'svelte';
+
+ export let data: string;
+
+ onMount(() => {
+ console.log();
+ });
+</script>
+
+<ul>
+ {#each getChaptersFromText(data) as chapter}
+ <li>
+ {chapter.chapterDate}
+ <span class="opaque">|</span>
+ <a href={chapter.href} target="_blank" rel="noopener noreferrer">
+ {chapter.chapterNum}
+ </a>
+ </li>
+ {/each}
+</ul>
diff --git a/src/lib/Reader/resource.ts b/src/lib/Reader/resource.ts
new file mode 100644
index 00000000..b96a890f
--- /dev/null
+++ b/src/lib/Reader/resource.ts
@@ -0,0 +1,40 @@
+export enum Resource {
+ MangaDex = 'MangaDex',
+ Rawkuma = 'Rawkuma'
+}
+
+export const identify = (url: string): Resource | undefined => {
+ if (url.match(/mangadex\.org\/title\/([a-f0-9-]+)\/?/)?.[1]) {
+ return Resource.MangaDex;
+ } else if (url.match(/rawkuma\.com\/manga\/([a-z0-9-]+)\/?/)?.[1]) {
+ return Resource.Rawkuma;
+ }
+
+ return undefined;
+};
+
+export const fetchResource = async (url: string) => {
+ const resource = identify(url);
+
+ if (resource === Resource.MangaDex) {
+ return await fetch(
+ `https://api.mangadex.org/manga/${
+ url.match(/mangadex\.org\/title\/([a-f0-9-]+)\/?/)?.[1]
+ }/feed?order[chapter]=desc&translatedLanguage[]=en`
+ );
+ } else if (resource === Resource.Rawkuma) {
+ return await fetch(url);
+ }
+
+ return fetch(url);
+};
+
+export const decodeResource = async (response: Response, url: string) => {
+ const resource = identify(url);
+
+ if (resource === Resource.MangaDex) {
+ return await response.json();
+ } else {
+ return await response.text();
+ }
+};