diff --git a/javascript/manga/src/ar/oduto.js b/javascript/manga/src/ar/oduto.js new file mode 100644 index 00000000..b80b1eeb --- /dev/null +++ b/javascript/manga/src/ar/oduto.js @@ -0,0 +1,94 @@ +// prettier-ignore +const mangayomiSources = [{ + "name": "Oduto - Boruto", + "lang": "ar", + "baseUrl": "https://nb19u.blogspot.com", + "apiUrl": "", + "iconUrl": "https://blogger.googleusercontent.com/img/a/AVvXsEgKFmNQCUC7ARtXurDIwfOimVn3wogUvH7VaUOfjdutG44-cT4ajgh0KYkqSbRIoQ0b8YG3H6Edx-y1O3GW5SL88jymLZsO6cmS0QRtsp1y4gc24vmF4OGqyIY3PYSjxUYR1iJ5J-sP-00A7NwhNa19SPc0R_62KcuG6dbu2Rg-2YiMV1uUgaB0DGB6IBY_=s1600", + "typeSource": "single", + "itemType": 0, + "version": "0.0.1", + "isNsfw": false, + "pkgPath": "manga/src/ar/oduto.js", + "notes": "This Source Just For Boruto" +}]; + +class DefaultExtension extends MProvider { + async request(slug) { + this.client ??= new Client(); + const res = await this.client.get(slug); + return new Document(res.body); + } + + getPopular(_) { + return { + list: [ + { + name: "BORUTO: Two Blue Vortex", + imageUrl: + "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggWB9vWPMqjEvIoDsJSO29OmW-srULDQD3cS9HJ8cDk0vq2jLwDerUX-i61CqmZf62eBVmWZwU5CgXi0p2lxhKrh2_nZum3p-k3q9QJ2uozove0QAbOKtbd1QPjytjrJc9UsL65X4BbFdgcicLDYubD9LgY1Kco8wyhDGm4YEOim8u1TL42gOFe16NaaEP/s3464/4D55C3C5-9168-4103-B45C-99B52B58B6A5.jpeg", + link: "https://nb19u.blogspot.com/search/label/%D9%85%D8%A7%D9%86%D8%AC%D8%A7%20%D8%A8%D9%88%D8%B1%D9%88%D8%AA%D9%88?&max-results=4&m=1", + }, + ], + hasNextPage: false, + }; + } + getLatestUpdates(_) { + return this.getPopular(); + } + + // Chapters + chapterFromElement(element) { + const anchor = element.selectFirst("div.iPostInfoWrap > h3 > a"); + const timeElement = element.selectFirst("div.iPostInfoWrap time"); + if (!anchor || !timeElement) return {}; + + const name = anchor.text?.trim(); + const url = anchor.getHref; + const rawDate = timeElement.attr("datetime")?.trim(); + const dateUpload = rawDate ? new Date(rawDate).getTime().toString() : null; + + return { name, dateUpload, url }; + } + + // Detail + async getDetail(url) { + let doc = await this.request(url); + const allElements = []; + + for (;;) { + const pageChapters = doc.select("#Blog1 article.blog-post.index-post"); + if (!pageChapters || pageChapters.length === 0) break; + allElements.push(...pageChapters); + + const nextUrl = doc + .selectFirst("#Blog1 > div.iPostsNavigation > button[data-load]") + .attr("data-load"); + if (!nextUrl || nextUrl.length === 0) break; + doc = await this.request(nextUrl); + } + + const chapters = allElements.map((element) => + this.chapterFromElement(element), + ); + + return { + title: "BORUTO: Two Blue Vortex", + imageUrl: + "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggWB9vWPMqjEvIoDsJSO29OmW-srULDQD3cS9HJ8cDk0vq2jLwDerUX-i61CqmZf62eBVmWZwU5CgXi0p2lxhKrh2_nZum3p-k3q9QJ2uozove0QAbOKtbd1QPjytjrJc9UsL65X4BbFdgcicLDYubD9LgY1Kco8wyhDGm4YEOim8u1TL42gOFe16NaaEP/s3464/4D55C3C5-9168-4103-B45C-99B52B58B6A5.jpeg", + author: "Masashi Kishimoto", + description: "Artist: Mikio Ikemoto", + status: 0, + genre: ["شونين", "دراما", "خيال", "أكشن", "نينجا"], + chapters, + }; + } + + // chapter pages + async getPageList(url) { + const doc = await this.request(url); + return doc.select("div.#post-body img[src]").map((x) => ({ + url: x.attr("src"), + })); + } +}