├── Katsu ├── Zoro │ ├── Info │ │ ├── Info1.js │ │ └── Info.js │ ├── Chapters │ │ ├── chapters.js │ │ └── chapters1.js │ └── Search │ │ └── search.js ├── GumGum │ ├── .DS_Store │ ├── Info │ │ └── .DS_Store │ ├── Episodes │ │ └── .DS_Store │ ├── Search │ │ └── .DS_Store │ └── Main Page │ │ └── .DS_Store ├── French-anime │ ├── .DS_Store │ ├── Info │ │ └── .DS_Store │ ├── Search │ │ └── .DS_Store │ ├── Episodes │ │ └── .DS_Store │ └── Main Page │ │ └── .DS_Store ├── Univers-Anime │ ├── .DS_Store │ ├── Info │ │ └── .DS_Store │ ├── Search │ │ └── .DS_Store │ ├── Episodes │ │ └── .DS_Store │ └── Main Page │ │ └── .DS_Store ├── OtakuFr │ ├── Episodes │ │ ├── episodes1.js │ │ └── episodes.js │ ├── Search │ │ └── search.js │ ├── Mainpage │ │ └── mainpage.js │ └── Info │ │ └── info.js └── Gogo │ ├── Info1.js │ └── Info.js ├── Zoro.to ├── .gitignore ├── Chapters │ └── chapters.js └── Info │ └── Info1.js ├── Asura ├── Info │ ├── .DS_Store │ └── Info.js ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.html ├── Drama_Cool ├── .DS_Store ├── Info │ └── .DS_Store ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.js ├── FrenchAnime ├── .DS_Store ├── Info │ ├── .DS_Store │ └── Info.html ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.html ├── Goojara.to ├── .DS_Store ├── Info │ └── .DS_Store ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.js ├── Librairie ├── .DS_Store ├── Info │ ├── .DS_Store │ └── Info.html ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.html ├── Manga Weeb ├── .DS_Store ├── Info │ └── .DS_Store ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.js ├── main ├── images │ ├── Thumbs.db │ ├── logo.png │ └── logoapple.png └── main.css ├── Senmanga ├── Info │ ├── .DS_Store │ └── Info.js ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.js ├── LelScanVF ├── Info │ └── .DS_Store ├── Search │ └── .DS_Store └── Chapters │ ├── .DS_Store │ └── Chapters.js ├── VoirAnime ├── Info │ └── .DS_Store ├── Search │ └── .DS_Store ├── Chapters │ ├── .DS_Store │ └── Chapters.js └── helper │ └── helper.js ├── .gitignore ├── Anime-Flex └── README.md ├── Mangas-Origines ├── README.md └── Chapters │ └── Chapters1.js ├── scarlet.json ├── README.md ├── AnimeSaturne ├── Chapters │ ├── Chapters1.js │ └── Chapters2.js └── Info │ └── Info.js ├── Livre1 ├── Chapters │ └── Chapters.html └── Info │ └── Info.html ├── ScansMangas ├── Chapters │ └── Chapters1.js └── Info │ └── Info.js ├── FrenchStream ├── Episodes │ └── Episodes1.js └── Info │ └── Info.js ├── VostAnimes ├── Episodes │ ├── Episodes1.js │ └── Episodes2.js └── Info │ └── Info.js ├── StreamingCommunity ├── Episodes │ ├── Episodes2.js │ └── Episodes1.js └── Info │ └── Info.js ├── Cineblog ├── Episodes │ └── Episodes1.js └── Info │ └── Info.js ├── ADKami ├── Chapters │ └── Chapters1.js └── Info │ └── Info.js ├── resolvers ├── katsu │ ├── vudeo_katsu.json │ └── stape_katsu.js └── ketsu │ ├── Vudeo.json │ ├── Turboviplay.json │ └── Yodbox.json ├── KumaScan └── Chapters │ └── Chapters.js ├── NineManga ├── Chapters │ └── Chapters1.js └── Info │ └── Info.js ├── MangaDex ├── link.txt └── Chapters │ └── Chapters.js ├── spacemove └── Chapters │ └── Chapters.js ├── SuperCartoons └── Chapters │ └── Chapters.js ├── Turkish123 └── Chapters │ └── Chapters.js ├── Neko-Sama ├── Chapters │ └── Chapters.js └── Info │ └── Info.js ├── GumGum └── Info │ └── Info.js ├── CrunchyScan ├── Info │ ├── Info2.js │ └── Info1.js └── Chapters │ └── Chapters.js ├── MyKDrama └── Chapters │ └── Chapters.js ├── AnimeWorld ├── Episodes │ ├── Episodes2.js │ └── Episodes1.js └── Info │ └── Info.js └── IAnime └── Chapters ├── Chapter2.js └── Chapter1.js /Katsu/Zoro/Info/Info1.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Zoro.to/.gitignore: -------------------------------------------------------------------------------- 1 | app store version test.json 2 | recaptcha_version.json 3 | -------------------------------------------------------------------------------- /Asura/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Asura/Info/.DS_Store -------------------------------------------------------------------------------- /Drama_Cool/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Drama_Cool/.DS_Store -------------------------------------------------------------------------------- /FrenchAnime/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/FrenchAnime/.DS_Store -------------------------------------------------------------------------------- /Goojara.to/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Goojara.to/.DS_Store -------------------------------------------------------------------------------- /Librairie/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Librairie/.DS_Store -------------------------------------------------------------------------------- /Manga Weeb/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Manga Weeb/.DS_Store -------------------------------------------------------------------------------- /main/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/main/images/Thumbs.db -------------------------------------------------------------------------------- /main/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/main/images/logo.png -------------------------------------------------------------------------------- /Asura/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Asura/Search/.DS_Store -------------------------------------------------------------------------------- /Katsu/GumGum/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/GumGum/.DS_Store -------------------------------------------------------------------------------- /Senmanga/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Senmanga/Info/.DS_Store -------------------------------------------------------------------------------- /Asura/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Asura/Chapters/.DS_Store -------------------------------------------------------------------------------- /Drama_Cool/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Drama_Cool/Info/.DS_Store -------------------------------------------------------------------------------- /FrenchAnime/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/FrenchAnime/Info/.DS_Store -------------------------------------------------------------------------------- /Goojara.to/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Goojara.to/Info/.DS_Store -------------------------------------------------------------------------------- /LelScanVF/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/LelScanVF/Info/.DS_Store -------------------------------------------------------------------------------- /LelScanVF/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/LelScanVF/Search/.DS_Store -------------------------------------------------------------------------------- /Librairie/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Librairie/Info/.DS_Store -------------------------------------------------------------------------------- /Librairie/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Librairie/Search/.DS_Store -------------------------------------------------------------------------------- /Manga Weeb/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Manga Weeb/Info/.DS_Store -------------------------------------------------------------------------------- /Senmanga/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Senmanga/Search/.DS_Store -------------------------------------------------------------------------------- /VoirAnime/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/VoirAnime/Info/.DS_Store -------------------------------------------------------------------------------- /VoirAnime/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/VoirAnime/Search/.DS_Store -------------------------------------------------------------------------------- /main/images/logoapple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/main/images/logoapple.png -------------------------------------------------------------------------------- /Drama_Cool/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Drama_Cool/Search/.DS_Store -------------------------------------------------------------------------------- /FrenchAnime/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/FrenchAnime/Search/.DS_Store -------------------------------------------------------------------------------- /Goojara.to/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Goojara.to/Search/.DS_Store -------------------------------------------------------------------------------- /Katsu/French-anime/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/French-anime/.DS_Store -------------------------------------------------------------------------------- /Katsu/GumGum/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/GumGum/Info/.DS_Store -------------------------------------------------------------------------------- /LelScanVF/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/LelScanVF/Chapters/.DS_Store -------------------------------------------------------------------------------- /Librairie/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Librairie/Chapters/.DS_Store -------------------------------------------------------------------------------- /Manga Weeb/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Manga Weeb/Search/.DS_Store -------------------------------------------------------------------------------- /Senmanga/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Senmanga/Chapters/.DS_Store -------------------------------------------------------------------------------- /VoirAnime/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/VoirAnime/Chapters/.DS_Store -------------------------------------------------------------------------------- /Drama_Cool/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Drama_Cool/Chapters/.DS_Store -------------------------------------------------------------------------------- /FrenchAnime/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/FrenchAnime/Chapters/.DS_Store -------------------------------------------------------------------------------- /Goojara.to/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Goojara.to/Chapters/.DS_Store -------------------------------------------------------------------------------- /Katsu/GumGum/Episodes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/GumGum/Episodes/.DS_Store -------------------------------------------------------------------------------- /Katsu/GumGum/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/GumGum/Search/.DS_Store -------------------------------------------------------------------------------- /Katsu/Univers-Anime/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/Univers-Anime/.DS_Store -------------------------------------------------------------------------------- /Manga Weeb/Chapters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Manga Weeb/Chapters/.DS_Store -------------------------------------------------------------------------------- /Katsu/French-anime/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/French-anime/Info/.DS_Store -------------------------------------------------------------------------------- /Katsu/GumGum/Main Page/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/GumGum/Main Page/.DS_Store -------------------------------------------------------------------------------- /Katsu/French-anime/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/French-anime/Search/.DS_Store -------------------------------------------------------------------------------- /Katsu/Univers-Anime/Info/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/Univers-Anime/Info/.DS_Store -------------------------------------------------------------------------------- /Katsu/Univers-Anime/Search/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/Univers-Anime/Search/.DS_Store -------------------------------------------------------------------------------- /Katsu/French-anime/Episodes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/French-anime/Episodes/.DS_Store -------------------------------------------------------------------------------- /Katsu/French-anime/Main Page/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/French-anime/Main Page/.DS_Store -------------------------------------------------------------------------------- /Katsu/Univers-Anime/Episodes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/Univers-Anime/Episodes/.DS_Store -------------------------------------------------------------------------------- /Katsu/Univers-Anime/Main Page/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bilnaa/Ketsu-Modules/HEAD/Katsu/Univers-Anime/Main Page/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | NineManga/Info/Info.html 3 | NineManga/MainPage/MainPage1.html 4 | Katsu/test.html 5 | Katsu/katsu_vostfree.json 6 | Drama_Cool/Info/test.html 7 | .DS_Store 8 | NineAnime/helper 9 | -------------------------------------------------------------------------------- /Anime-Flex/README.md: -------------------------------------------------------------------------------- 1 | # Anime-Flex 2 | 3 | Le lien du module pour ketsu [Anime-Flex](ketsuapp://?moduleData=https://raw.githubusercontent.com/Danyspb/Anime-Flex/main/moduleTemplate.json). 4 | 5 | Ceci est un module pour regarder des films en Vf, des animes en Vostfr et Vf. Ce module est compatible avec l’application Ketsu disponible sur IOS. Vous pouvez télécharger l'application en cliquant sur ce [lien](https://ketsu.app/). Suivez ce tutoriel pour l’installer sur votre appareil [Apple](https://youtu.be/dvz6zNP6BUs). Si vous voulez ajouter d’autres modules vous pouvez accéder à ces sites web : 6 | # https://ketsumodules.com/ 7 | # https://bilnaa.github.io/main/ 8 | # https://darkzcore.github.io/DarkLibrary/ 9 | 10 | 😉😉😉 11 | -------------------------------------------------------------------------------- /Mangas-Origines/README.md: -------------------------------------------------------------------------------- 1 | # Mangas-Origines 2 | 3 | Le lien du module pour ketsu [Managas-Origines](ketsuapp://?moduleData=https://raw.githubusercontent.com/Danyspb/Origines-Mangas/master/moduleTemplate.json) 4 | 5 | Ceci est un module pour regarder des scan Japonnais et Coréens en VF. Ce module est compatible avec l’application Ketsu disponible sur IOS. Vous pouvez télécharger l'application en cliquant sur ce [lien](https://ketsu.app/). Suivez ce tutoriel pour l’installer sur votre appareil [Apple](https://youtu.be/dvz6zNP6BUs). Si vous voulez ajouter d’autres modules vous pouvez accéder à ces sites web : 6 | # https://ketsumodules.com/ 7 | # https://bilnaa.github.io/main/ 8 | # https://darkzcore.github.io/DarkLibrary/ 9 | 10 | 😉😉😉 11 | -------------------------------------------------------------------------------- /scarlet.json: -------------------------------------------------------------------------------- 1 | { 2 | "META": { 3 | "repoName": "Nabil’s Repo", 4 | "repoIcon": "https://raw.githubusercontent.com/Bilnaa/bilnaa.github.io/main/main/images/logoapple.png" 5 | }, 6 | "KETSU": [{ 7 | "name": "Ketsu", 8 | "version": "3", 9 | "icon": "https://d1fdloi71mui9q.cloudfront.net/1JBIg7XxQ3WqZ8AAZPiz_GydL9KJ3v5AKUN1B", 10 | "down": "https://github.com/appketsu/KETSU-IPA/raw/main/KETSU.ipa", 11 | "dev": "Orion", 12 | "category": "KETSU", 13 | "bundleID": "pw.zetsu.zetsu", 14 | "banner": "https://ketsu.app/imagages/Macbook%20Pro%2001.png", 15 | "screenshots": [ 16 | "https://ketsu.app/imagages/downloads.png", 17 | "https://ketsu.app/imagages/showcase-1.png", 18 | "https://ketsu.app/imagages/showcase-2.png", 19 | "https://ketsu.app/imagages/showcase-3.png" 20 | ], 21 | "contact": [ 22 | "https://twitter.com/_Bilnaa" 23 | ] 24 | }] 25 | } 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | | :warning: WARNING | 2 | |:---------------------------| 3 | | This repo will no longer be actively updated. 4 | # Ketsu-Modules 5 | These are the modules created by the Katsu/Ketsu/Zetsu community. 6 | # What is Ketsu ? 7 | Ketsu is a modular application, which means that you can create your own modules and use them inside the app. You can use it to watch videos, read differents types of text and images. You can find the ipa file here [Ketsu](https://ketsu.app). 8 | # How can I download Ketsu since it's not available in the App Store anymore ? 9 | You can still sideload it on your phone for free with softwares like [AltStore](https://altstore.io/) or [Sideloadly](https://sideloadly.io/). 10 | You will find tutorials made by the creator in English [here](https://ketsu.app/download.html) and one in French made by me [here](https://www.youtube.com/watch?v=qX2MAsUBdfQ). 11 | # You want me to make a module ? 12 | If you have a github account make a pull request with the name and type (Image, Video or text) of website you want. Or you can hit me up in the official [Ketsu discord](https://discord.gg/CP3Q6XBv9F) by just mentionning me @Nabil#0054. Depending on the complexity on the module I can ask to be charged for it. 13 | -------------------------------------------------------------------------------- /main/main.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 4 | font-size: 16px; 5 | background-color: #222222; 6 | } 7 | 8 | h1, h2, h3, h4, h5, h6 { 9 | color: rgb(0, 0, 0); 10 | font-weight: 600; 11 | line-height: 1.3; 12 | } 13 | 14 | h2 { 15 | margin-top:1.3em; 16 | } 17 | 18 | a { 19 | color: #fdfdfd; 20 | text-decoration: none; 21 | text-align: center; 22 | } 23 | 24 | a.btn.btn-dark { 25 | margin: 5px; 26 | } 27 | 28 | b, strong { 29 | font-weight: 600; 30 | } 31 | 32 | .category { 33 | display: flex; 34 | justify-content: center; 35 | align-items: center; 36 | } 37 | samp { 38 | display: none; 39 | } 40 | 41 | .text h1{ 42 | color: red; 43 | text-align: center; 44 | margin-top: 1em; 45 | } 46 | 47 | .separator-videos h2,.separator-images h2{ 48 | color : white; 49 | text-align: center; 50 | } 51 | 52 | img { 53 | animation: colorize 2s cubic-bezier(0, 0, .78, .36) 1; 54 | background: transparent; 55 | border: 10px solid rgba(0, 0, 0, 0.12); 56 | border-radius: 4px; 57 | display: block; 58 | margin: 1.3em auto; 59 | max-width: 95%; 60 | } 61 | 62 | @keyframes colorize { 63 | 0% { 64 | -webkit-filter: grayscale(100%); 65 | filter: grayscale(100%); 66 | } 67 | 100% { 68 | -webkit-filter: grayscale(0%); 69 | filter: grayscale(0%); 70 | } 71 | } 72 | 73 | -------------------------------------------------------------------------------- /VoirAnime/helper/helper.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | } 6 | 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | 14 | function Extra(commands, extraInfo) { 15 | this.commands = commands; 16 | this.extraInfo = extraInfo; 17 | } 18 | 19 | function Commands(commandName, params) { 20 | this.commandName = commandName; 21 | this.params = params; 22 | } 23 | 24 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 25 | this.removeJavascript = removeJavascript; 26 | this.loadInWebView = loadInWebView; 27 | this.javaScript = javaScript; 28 | } 29 | 30 | function KeyValue(key, value) { 31 | this.key = key; 32 | this.value = value; 33 | } 34 | const savedData = document.getElementById('ketsu-final-data'); 35 | const parsedJson = JSON.parse(savedData.innerHTML); 36 | let emptyKeyValue = [new KeyValue('', '')]; 37 | const data = document.querySelector('.chapter-video-frame').querySelector('p iframe').src; 38 | const commands = [new Commands('variable', [new KeyValue('data', data), new KeyValue('current', parsedJson.request.url)])]; 39 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra(commands, emptyKeyValue), new JavascriptConfig(false, false, '')); 40 | const finalJson = JSON.stringify(infoPageObject); 41 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /AnimeSaturne/Chapters/Chapters1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | var savedData = document.getElementById('ketsu-final-data'); 37 | const parsedJson = JSON.parse(savedData.innerHTML); 38 | const emptyKeyValue = [new KeyValue('', '')]; 39 | 40 | var link = document.querySelector('.card-body a').href; 41 | 42 | const episodesObject = new Chapters(new ModuleRequest(link, 'get', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(true, false, ''), new Output( null, null, null)); 43 | 44 | savedData.innerHTML = JSON.stringify(episodesObject); -------------------------------------------------------------------------------- /Katsu/OtakuFr/Episodes/episodes1.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(link, linkIdentifier, moduleID, isDecodable, headers) { 11 | this.link = link; 12 | this.linkIdentifier = linkIdentifier; 13 | this.moduleID = moduleID; 14 | this.isDecodable = isDecodable; 15 | this.headers = headers; 16 | } 17 | 18 | function EpisodeObject(request, method, headers, extraInfo, loadJavascript, javaScript, output) { 19 | this.request = request; 20 | this.method = method; 21 | this.headers = headers; 22 | this.extraInfo = extraInfo; 23 | this.loadJavascript = loadJavascript; 24 | this.javaScript = javaScript; 25 | this.output = output; 26 | } 27 | var savedData = document.getElementById('katsu-final-data'); 28 | var parsedJson = JSON.parse(savedData.innerHTML); 29 | var moduleID = '20'; 30 | var headers = [new Header('X-Requested-With', 'XMLHttpRequest')]; 31 | var episodeObject; 32 | var output = parsedJson.output; 33 | var extraInfo = parsedJson.extraInfo; 34 | var actualCount = extraInfo[0].value; 35 | var nextCount = parseInt(extraInfo[0].value) + 1; 36 | const script = document.querySelector('script').innerHTML.replace('//', ''); 37 | var parser = new DOMParser(); 38 | var doc = parser.parseFromString(script, 'text/html'); 39 | var videoLink = doc.querySelector('.ui.embed').getAttribute('data-url'); 40 | if (!videoLink.includes('https')) { 41 | output.push(new Output('https:'+link, '', moduleID, 'false', headers)); 42 | } else { 43 | output.push(new Output(videoLink, '', moduleID, 'false', headers)); 44 | } 45 | try { 46 | var nextRequest = extraInfo[nextCount].value; 47 | } catch (e) { 48 | var nextRequest = ''; 49 | } 50 | extraInfo[0].value = '' + (parseInt(actualCount) + 2); 51 | episodeObject = new EpisodeObject(nextRequest, 'get', headers, extraInfo, '', '', output); 52 | var finalJson = JSON.stringify(episodeObject); 53 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Livre1/Chapters/Chapters.html: -------------------------------------------------------------------------------- 1 | 2 | 55 | 56 | -------------------------------------------------------------------------------- /ScansMangas/Chapters/Chapters1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | var savedData = document.getElementById('ketsu-final-data'); 37 | const parsedJson = JSON.parse(savedData.innerHTML); 38 | const emptyKeyValue = [new KeyValue('', '')]; 39 | const imgsHeaders = [new KeyValue('Referer', parsedJson.request.url)]; 40 | 41 | var output = []; 42 | var url = parsedJson.request.url.split('-vf')[0].replace('scan-', 'scans/'); 43 | const nbChap = url.split('-').slice(-1)[0]; 44 | url = url.replace('-'+nbChap, '/'+nbChap); 45 | 46 | for (nbPage in Array.from(document.querySelectorAll('#page-list option'))) { 47 | let img = `${url}/${parseInt(nbPage)+1}.jpg`; 48 | output.push(new ModuleRequest(img,'get',imgsHeaders,null)); 49 | } 50 | 51 | const chaptersPageObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(true, false, ''), new Output(null, output, null)); 52 | 53 | savedData.innerHTML = JSON.stringify(chaptersPageObject); -------------------------------------------------------------------------------- /Katsu/OtakuFr/Episodes/episodes.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(link, linkIdentifier, moduleID, isDecodable, headers) { 11 | this.link = link; 12 | this.linkIdentifier = linkIdentifier; 13 | this.moduleID = moduleID; 14 | this.isDecodable = isDecodable; 15 | this.headers = headers; 16 | } 17 | 18 | function EpisodeObject(request, method, headers, extraInfo, loadJavascript, javaScript, output) { 19 | this.request = request; 20 | this.method = method; 21 | this.headers = headers; 22 | this.extraInfo = extraInfo; 23 | this.loadJavascript = loadJavascript; 24 | this.javaScript = javaScript; 25 | this.output = output; 26 | } 27 | var savedData = document.getElementById('katsu-final-data'); 28 | var parsedJson = JSON.parse(savedData.innerHTML); 29 | var moduleID = '20'; 30 | var headers = [new Header('X-Requested-With', 'XMLHttpRequest')]; 31 | var episodeObject; 32 | var output = []; 33 | var nextRequest = ''; 34 | var extraInfo = [new ExtraInfo('1')]; 35 | var links = document.querySelectorAll('iframe'); 36 | for (var x = 0; x < links.length; x++) { 37 | var link = links[x].src; 38 | if (link.includes('https:')) { 39 | output.push(new Output(link, '', moduleID, 'false', headers)) 40 | } 41 | } 42 | var count = 1; 43 | for (var y = 0; y < links.length; y++) { 44 | var link = links[y]; 45 | if (link.src.includes('parisanime.com')) { 46 | var url = 'https:' + link.src; 47 | if (x == 0) { 48 | nextRequest = url; 49 | } else { 50 | extraInfo.push(new ExtraInfo(`${url}`)); 51 | count++; 52 | } 53 | console.log(url); 54 | } 55 | } 56 | if (extraInfo.length >= 2) { 57 | nextRequest = extraInfo[1].value; 58 | } 59 | episodeObject = new EpisodeObject(nextRequest, 'get', headers, extraInfo, '', '', output); 60 | var finalJson = JSON.stringify(episodeObject); 61 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Katsu/Zoro/Chapters/chapters.js: -------------------------------------------------------------------------------- 1 | function Header(key,value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(link,linkIdentifier,moduleID,isDecodable,headers) { 11 | this.link = link; 12 | this.linkIdentifier = linkIdentifier; 13 | this.moduleID = moduleID; 14 | this.isDecodable = isDecodable; 15 | this.headers = headers; 16 | } 17 | 18 | function EpisodeObject(request,method,headers,extraInfo,loadJavascript,javaScript,output) { 19 | this.request = request; 20 | this.method = method; 21 | this.headers = headers; 22 | this.extraInfo = extraInfo; 23 | this.loadJavascript = loadJavascript; 24 | this.javaScript = javaScript; 25 | this.output = output; 26 | } 27 | 28 | var savedData = document.getElementById('katsu-final-data'); 29 | 30 | var parsedJson = JSON.parse(savedData.innerHTML); 31 | 32 | var moduleID = '114653268923213246'; 33 | var headers = [new Header('','')]; 34 | var episodeObject; 35 | var output = []; 36 | const script = document.querySelector('script').innerHTML.replace('//',''); 37 | const data = JSON.parse(script); 38 | const html = data.html; 39 | const htmlObject = document.createElement('div'); 40 | htmlObject.innerHTML = html; 41 | document.body.appendChild(htmlObject); 42 | var extraInfo = [new ExtraInfo('0')]; 43 | 44 | var links = document.querySelectorAll('.item.server-item'); 45 | for (var x = 0; x < links.length; x++) { 46 | var link = links[x]; 47 | var id = link.dataset.id; 48 | var lang = link.dataset.type; 49 | var url = 'https://zoro.to/ajax/v2/episode/sources?id=' + id + '?lang=' + lang; 50 | if (x == 0) { 51 | var nextRequest = url 52 | } else { 53 | extraInfo.push(new ExtraInfo(`${url}`)); 54 | } 55 | console.log(url); 56 | } 57 | 58 | episodeObject = new EpisodeObject(nextRequest,'get',headers,extraInfo,'','',output); 59 | var finalJson = JSON.stringify(episodeObject); 60 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Katsu/Zoro/Chapters/chapters1.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(link, linkIdentifier, moduleID, isDecodable, headers) { 11 | this.link = link; 12 | this.linkIdentifier = linkIdentifier; 13 | this.moduleID = moduleID; 14 | this.isDecodable = isDecodable; 15 | this.headers = headers; 16 | } 17 | 18 | function EpisodeObject(request, method, headers, extraInfo, loadJavascript, javaScript, output) { 19 | this.request = request; 20 | this.method = method; 21 | this.headers = headers; 22 | this.extraInfo = extraInfo; 23 | this.loadJavascript = loadJavascript; 24 | this.javaScript = javaScript; 25 | this.output = output; 26 | } 27 | var savedData = document.getElementById('katsu-final-data'); 28 | var parsedJson = JSON.parse(savedData.innerHTML); 29 | var moduleID = '114653268923213246'; 30 | var headers = [new Header('', '')]; 31 | var episodeObject; 32 | var output = parsedJson.output; 33 | var extraInfo = parsedJson.extraInfo; 34 | const script = document.querySelector('script').innerHTML.replace('//', ''); 35 | const data = JSON.parse(script); 36 | const link = data.link; 37 | var actualCount = extraInfo[0].value; 38 | var nextCount = parseInt(extraInfo[0].value) + 1; 39 | if (!link.includes('rapid-cloud')) { 40 | if (link.includes('streamtape.com')) { 41 | output.push(new Output(link.replace('https://streamtape.com/', 'https://streamta.pe/'), '', moduleID, 'false', headers)); 42 | }else{ 43 | output.push(new Output(link, '', moduleID, 'false', headers)); 44 | } 45 | } 46 | try { 47 | var nextRequest = extraInfo[nextCount].value; 48 | } catch (e) { 49 | var nextRequest = ''; 50 | } 51 | extraInfo[0].value = '' + (parseInt(actualCount) + 2); 52 | episodeObject = new EpisodeObject(nextRequest, 'get', headers, extraInfo, '', '', output); 53 | var finalJson = JSON.stringify(episodeObject); 54 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Katsu/OtakuFr/Search/search.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(moduleID, image, link, title, type, voice, stars) { 11 | this.moduleID = moduleID; 12 | this.image = image; 13 | this.link = link; 14 | this.title = title; 15 | this.type = type; 16 | this.voice = voice; 17 | this.stars = stars; 18 | } 19 | 20 | function SearchObject(request, method, headers, separator, extraInfo, loadJavascript, javaScript, output) { 21 | this.request = request; 22 | this.method = method; 23 | this.headers = headers; 24 | this.separator = separator; 25 | this.extraInfo = extraInfo; 26 | this.loadJavascript = loadJavascript; 27 | this.javaScript = javaScript; 28 | this.output = output; 29 | } 30 | var savedData = document.getElementById('katsu-final-data'); 31 | var parsedJson = JSON.parse(savedData.innerHTML); 32 | var moduleID = '20'; 33 | var headers = [new Header('', '')]; 34 | var extraInfo = [new ExtraInfo('')]; 35 | var searchPageObject; 36 | var output = []; 37 | var searchElements = document.querySelectorAll('div.col-md-8.order-1 > div > article'); 38 | for(var x = 0; x < searchElements.length; x++) { 39 | var element = searchElements[x]; 40 | var cover = element.querySelector('img').src; 41 | var link = element.querySelector('div.action a').href; 42 | var title = element.querySelector('img').title; 43 | if(title.includes('VF')) { 44 | var type = 'VF'; 45 | } else { 46 | var type = 'VOSTFR'; 47 | }; 48 | var voice = ''; 49 | var stars = ''; 50 | var searchObj = new Output(moduleID, cover, link, title, type, voice, stars); 51 | output.push(searchObj); 52 | } 53 | searchPageObject = new SearchObject('', '', headers, '+', extraInfo, '', '', output); 54 | var finalJson = JSON.stringify(searchPageObject); 55 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /FrenchStream/Episodes/Episodes1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | var savedData = document.getElementById('ketsu-final-data'); 37 | const parsedJson = JSON.parse(savedData.innerHTML); 38 | const refererKeyValue = [new KeyValue('Referer', parsedJson.request.url.split('#')[0])]; 39 | 40 | var extraInfo = [refererKeyValue[0], new KeyValue('count','0')]; 41 | 42 | if (parsedJson.request.url.includes('film')) { var element = '.fx-row'; } 43 | else { var element = '#'+parsedJson.request.url.split('#')[1]; } 44 | 45 | var i = 0; 46 | for (player of document.querySelector(element).querySelectorAll('a')) { 47 | let link = parsedJson.request.url.split('/french-stream')[0] + player.getAttribute('onclick').split('\'')[1]; 48 | if (i == 0) { var nextRequest = link; } 49 | else { extraInfo.push(new KeyValue(''+(i-1), link)); } 50 | i++; 51 | } 52 | 53 | const episodesPageObject = new Chapters(new ModuleRequest(nextRequest, 'get', refererKeyValue, null), new Extra([new Commands('', refererKeyValue)], extraInfo), new JavascriptConfig(true, false, ''), new Output( null, null, null)); 54 | 55 | savedData.innerHTML = JSON.stringify(episodesPageObject); -------------------------------------------------------------------------------- /VostAnimes/Episodes/Episodes1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | 41 | var savedData = document.getElementById('ketsu-final-data'); 42 | const parsedJson = JSON.parse(savedData.innerHTML); 43 | const emptyKeyValue = [new KeyValue('Referer', parsedJson.request.url)]; 44 | 45 | var extraInfo = [emptyKeyValue[0], new KeyValue('count','0')]; 46 | 47 | var x = 0; 48 | for (embed of document.querySelector('.TPlayer').querySelectorAll('.TPlayerTb')) { 49 | var link = 'http'+embed.innerHTML.split('src=\"http')[1].split('\"')[0].replaceAll('&', '&').replaceAll('#038;', ''); 50 | if (x==0) { var nextRequest = link; } 51 | else { extraInfo.push(new KeyValue(''+(x-1), link)); } 52 | x++; 53 | } 54 | 55 | const episodesObject = new Chapters(new ModuleRequest(nextRequest, 'get', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], extraInfo), new JavascriptConfig(true, false, ''), new Output(new Videos([], []), null, null)); 56 | 57 | savedData.innerHTML = JSON.stringify(episodesObject); -------------------------------------------------------------------------------- /StreamingCommunity/Episodes/Episodes2.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | function NeedsResolver(resolverIdentifier, link) { 41 | this.resolverIdentifier = resolverIdentifier; 42 | this.link = link; 43 | } 44 | 45 | var savedData = document.getElementById('ketsu-final-data'); 46 | var parsedJson = JSON.parse(savedData.innerHTML); 47 | var emptyKeyValue = [new KeyValue('', '')]; 48 | 49 | var output = parsedJson.output.videos.needsResolver; 50 | var embeds = document.querySelectorAll('._player-mirrors li'); 51 | for (let embed of embeds) { 52 | var link = embed.getAttribute('data-link').replace('tape.com', 'ta.pe'); 53 | if (!link.includes('https:')) { link = 'https:' + link; } 54 | output.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 55 | } 56 | 57 | const episodesPageObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output( new Videos(output, null), null, null)); 58 | 59 | savedData.innerHTML = JSON.stringify(episodesPageObject); -------------------------------------------------------------------------------- /Cineblog/Episodes/Episodes1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | function NeedsResolver(resolverIdentifier, link) { 41 | this.resolverIdentifier = resolverIdentifier; 42 | this.link = link; 43 | } 44 | 45 | var savedData = document.getElementById('ketsu-final-data'); 46 | const parsedJson = JSON.parse(savedData.innerHTML); 47 | const emptyKeyValue = [new KeyValue('', '')]; 48 | 49 | var output = []; 50 | if (!parsedJson.request.url.includes('guardahd')) { var selector = '.videobox-tabs a'; } 51 | else { var selector = '._player-mirrors li'; } 52 | 53 | for (player of document.querySelectorAll(selector)) { 54 | let link = player.getAttribute('data-link').replace('tape.com', 'ta.pe'); 55 | if (!link.includes('https:')) { link = 'https:'+link; } 56 | output.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 57 | } 58 | 59 | const episodesPageObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output( new Videos(output, null), null, null)); 60 | 61 | savedData.innerHTML = JSON.stringify(episodesPageObject); -------------------------------------------------------------------------------- /ADKami/Chapters/Chapters1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | function NeedsResolver(resolverIdentifier, link) { 41 | this.resolverIdentifier = resolverIdentifier; 42 | this.link = link; 43 | } 44 | 45 | var savedData = document.getElementById('ketsu-final-data'); 46 | const parsedJson = JSON.parse(savedData.innerHTML); 47 | const emptyKeyValue = [new KeyValue('', '')]; 48 | 49 | var output = []; 50 | 51 | for (embed of document.querySelectorAll('.protected-info')) { embed.click() } 52 | for (iframe of document.querySelectorAll('iframe')) { 53 | output.push(new NeedsResolver('', new ModuleRequest(iframe.src.replace('tape.com', 'ta.pe'), 'get', emptyKeyValue, null))); 54 | } 55 | for (redirection of document.querySelectorAll('.lecteur-redirection')) { 56 | output.push(new NeedsResolver('', new ModuleRequest(redirection.href, 'get', emptyKeyValue, null))); 57 | } 58 | 59 | const emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 60 | const chaptersPageObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output( new Videos(output, null), null, null)); 61 | 62 | savedData.innerHTML = JSON.stringify(chaptersPageObject); -------------------------------------------------------------------------------- /resolvers/katsu/vudeo_katsu.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "VUDEO", 3 | "nameMatches": [ 4 | "VUDEO" 5 | ], 6 | "developer": "Frizrat", 7 | "moduleID": "18511209", 8 | "moduleVersion": "1.0", 9 | "baseURL": "VUDEO", 10 | "resolver": [ 11 | { 12 | "request": "empty", 13 | "method": "get", 14 | "userAgent": "", 15 | "referer": "", 16 | "headers": [ 17 | { 18 | "key": "key", 19 | "value": "value" 20 | } 21 | ], 22 | "extraInfo": [ 23 | { 24 | "value": "" 25 | } 26 | ], 27 | "loadJavascript": "false", 28 | "javaScript": "function Header(key, value) {this.key = key;this.value = value;}function ExtraInfo(value) {this.value = value;}function Output(link, moduleID, headers, quality) {this.quality = quality;this.link = link;this.moduleID = moduleID;this.headers = headers}function ResolverLogic(request, method, userAgent, referer, headers, extraInfo, loadJavascript, javaScript, output) {this.request = request;this.method = method;this.userAgent = userAgent;this.referer = referer;this.headers = headers;this.extraInfo = extraInfo;this.loadJavascript = loadJavascript;this.javaScript = javaScript;this.output = output;}var savedData = document.getElementById('katsu-final-data');var parsedJson = JSON.parse(savedData.innerHTML);var moduleID = '18511209';var resolverLogic;var requestHeaders = [new Header('', '')];var extraInfo = [new ExtraInfo('')];var videoHeaders = [new Header('Referer', 'https://vudeo.net/')];var output = [];var scripts = document.querySelectorAll('p');for(script of scripts) {var scriptText = script.innerHTML;if(scriptText.includes('var player')) {var json = scriptText.split('\"')[1];json = '[{\"mp4\":\"' + json + '\"}]';let parsedJ = JSON.parse(json);for(video of parsedJ) { output.push(new Output(video.mp4, moduleID, videoHeaders, ''));}break;}}resolverLogic = new ResolverLogic('', 'get', '', '', requestHeaders, extraInfo, '', '', output);var finalJson = JSON.stringify(resolverLogic);savedData.innerHTML = finalJson;", 29 | "output": [ 30 | { 31 | "quality": "", 32 | "link": "", 33 | "moduleID": "", 34 | "headers": [ 35 | { 36 | "key": "key", 37 | "value": "value" 38 | } 39 | ] 40 | } 41 | ] 42 | } 43 | ] 44 | } -------------------------------------------------------------------------------- /Katsu/Gogo/Info1.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value 8 | } 9 | 10 | function Output(moduleID, image, link, title, description, genres, type, status, episodes) { 11 | this.moduleID = moduleID; 12 | this.image = image; 13 | this.link = link; 14 | this.title = title; 15 | this.description = description; 16 | this.genres = genres; 17 | this.type = type; 18 | this.status = status; 19 | this.episodes = episodes 20 | } 21 | 22 | function Episodes(link, moduleID, isDecodable) { 23 | this.link = link; 24 | this.moduleID = moduleID; 25 | this.isDecodable = isDecodable 26 | } 27 | 28 | function InfoObject(request, method, headers, extraInfo, loadJavascript, javaScript, output) { 29 | this.request = request; 30 | this.method = method; 31 | this.headers = headers; 32 | this.extraInfo = extraInfo; 33 | this.loadJavascript = loadJavascript; 34 | this.javaScript = javaScript; 35 | this.output = output 36 | } 37 | var savedData = document.getElementById('katsu-final-data'); 38 | var parsedJson = JSON.parse(savedData.innerHTML); 39 | var moduleID = '2'; 40 | var infoObject; 41 | var output; 42 | var headers = []; 43 | var title = parsedJson.output.title; 44 | var extraInfo = parsedJson.extraInfo; 45 | var episodes = []; 46 | var type = parsedJson.output.type; 47 | var status = parsedJson.output.status; 48 | var image = parsedJson.output.image; 49 | var genres = parsedJson.output.genres; 50 | var desc = parsedJson.output.description; 51 | document.write(document.querySelector('script').innerHTML.replace('/*', '').replace('//', '')); 52 | let episodesdiv = document.querySelectorAll('#episode_related > li'); 53 | let domainURL = new URL(parsedJson.extraInfo[0].value); 54 | for (var x = 0; x < episodesdiv.length; x++) { 55 | let episode = episodesdiv[x]; 56 | let link = domainURL.origin + episode.querySelector('a').getAttribute('href').replace(' /', '/'); 57 | link = link.trim(); 58 | episodes.push(new Episodes(link, moduleID, 'false')); 59 | } 60 | episodes.reverse(); 61 | parsedJson.request = parsedJson.output.link; 62 | output = new Output(moduleID, image, parsedJson.request, title, desc, genres, type, status, episodes); 63 | infoObject = new InfoObject('', 'get', headers, extraInfo, '', '', output); 64 | var finalJson = JSON.stringify(infoObject); 65 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /KumaScan/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | 2 | function Chapters(request, extra, javascriptConfig, output) { 3 | this.request = request; 4 | this.extra = extra; 5 | this.javascriptConfig = javascriptConfig; 6 | this.output = output; 7 | } 8 | 9 | function ModuleRequest(url, method, headers, httpBody) { 10 | this.url = url; 11 | this.method = method; 12 | this.headers = headers; 13 | this.httpBody = httpBody; 14 | } 15 | 16 | function Extra(commands, extraInfo) { 17 | this.commands = commands; 18 | this.extraInfo = extraInfo; 19 | } 20 | 21 | function Commands(commandName, params) { 22 | this.commandName = commandName; 23 | this.params = params; 24 | } 25 | 26 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 27 | this.removeJavascript = removeJavascript; 28 | this.loadInWebView = loadInWebView; 29 | this.javaScript = javaScript; 30 | } 31 | 32 | function KeyValue(key, value) { 33 | this.key = key; 34 | this.value = value; 35 | } 36 | 37 | function Output( videos, images, text) { 38 | this.videos = videos; 39 | this.images = images; 40 | this.text = text; 41 | } 42 | 43 | function Videos(needsResolver, rawVideo) { 44 | this.needsResolver = needsResolver; 45 | this.rawVideo = rawVideo; 46 | } 47 | 48 | function NeedsResolver(resolverIdentifier, link) { 49 | this.resolverIdentifier = resolverIdentifier; 50 | this.link = link; 51 | } 52 | 53 | function RawVideo(video) { 54 | this.video = video; 55 | } 56 | 57 | function Video(videoQuality, videoLink) { 58 | this.videoQuality = videoQuality; 59 | this.videoLink = videoLink; 60 | } 61 | 62 | 63 | 64 | function Text(text) { 65 | this.text = text; 66 | } 67 | 68 | var output = []; 69 | var savedData = document.getElementById('ketsu-final-data'); 70 | var parsedJson = JSON.parse(savedData.innerHTML); 71 | 72 | var emptyKeyValue = [new KeyValue('', '')]; 73 | 74 | var pic = document.querySelectorAll('#readerarea p img'); 75 | for (p of pic){ 76 | var magi = p.src; 77 | output.push(new ModuleRequest(magi,'get',emptyKeyValue,null)); 78 | } 79 | 80 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 81 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''),new Output(null, output, null)); 82 | var finalJson = JSON.stringify(chaptersObject); 83 | savedData.innerHTML = finalJson; 84 | -------------------------------------------------------------------------------- /LelScanVF/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text(text) { 62 | this.text = text; 63 | } 64 | var output = []; 65 | var savedData = document.getElementById('ketsu-final-data'); 66 | var parsedJson = JSON.parse(savedData.innerHTML); 67 | var emptyKeyValue = [new KeyValue('Referer', 'https://lelscan-vf.cc/')]; 68 | var nb_ep = document.querySelectorAll('#all img'); 69 | for (image of nb_ep) { 70 | var link = 'https:'+image.dataset.src.trim(); 71 | output.push(new ModuleRequest(link, 'get', emptyKeyValue, null)) 72 | } 73 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 74 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, 75 | new JavascriptConfig(false, false, ''), new Output(null, output, null)); 76 | var finalJson = JSON.stringify(chaptersObject); 77 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /NineManga/Chapters/Chapters1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function getValueFromKey(keys,key) { 37 | for (var x = 0; x < keys.length; x++) { 38 | let tKey = keys[x]; 39 | if (tKey.key == key) { 40 | return tKey.value; 41 | } 42 | } return ''; 43 | } 44 | 45 | var savedData = document.getElementById('ketsu-final-data'); 46 | const parsedJson = JSON.parse(savedData.innerHTML); 47 | const emptyKeyValue = [new KeyValue('', '')]; 48 | 49 | const imgsHeaders = [new KeyValue('Referer', parsedJson.request.url)]; 50 | 51 | var extraInfo = parsedJson.extra.extraInfo; 52 | const count = parseInt(getValueFromKey(extraInfo,'count')) + 1; 53 | var output = []; 54 | if (count > 2) { output = parsedJson.output.images; } 55 | 56 | var newRequest = parsedJson.request.url.replace((count -1)+'.html', count+'.html'); 57 | extraInfo[0].value = ''+count; 58 | 59 | var images = document.querySelectorAll('.pic_box'); 60 | for (image of images) { 61 | let img = image.querySelector('img').src; 62 | output.push(new ModuleRequest(img, 'get', imgsHeaders, null)); 63 | } 64 | if (images.length < 10) { newRequest = ''; } 65 | 66 | const chaptersPageObject = new Chapters(new ModuleRequest(newRequest, 'get', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], extraInfo), new JavascriptConfig(true, false, ''), new Output(null, output, null)); 67 | 68 | savedData.innerHTML = JSON.stringify(chaptersPageObject); -------------------------------------------------------------------------------- /Manga Weeb/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text(text) { 62 | this.text = text; 63 | } 64 | var output = []; 65 | var savedData = document.getElementById('ketsu-final-data'); 66 | var parsedJson = JSON.parse(savedData.innerHTML); 67 | var emptyKeyValue = [new KeyValue('', '')]; 68 | var images = document.querySelectorAll('img.wp-manga-chapter-img'); // Get all images 69 | for (var x = 0; x < images.length; x++) { // Loop through all images 70 | var img = images[x].src; // Get the image source 71 | output.push(new ModuleRequest(img, 'get', emptyKeyValue, null)); // Push the image source to the output 72 | } 73 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 74 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, 75 | new JavascriptConfig(false, false, ''), new Output(null, output, null)); 76 | var finalJson = JSON.stringify(chaptersObject); 77 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Goojara.to/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text(text) { 62 | this.text = text; 63 | } 64 | var output = []; 65 | var savedData = document.getElementById('ketsu-final-data'); 66 | var parsedJson = JSON.parse(savedData.innerHTML); 67 | var emptyKeyValue = [new KeyValue('', '')]; 68 | links = document.querySelectorAll('.lxbx a'); 69 | for (link of links) { 70 | var resolverId = link.innerText.trim().replace('HDTV', '').replace(' ', '').toUpperCase(); 71 | output.push(new NeedsResolver(resolverId, new ModuleRequest(link.href, 'get', emptyKeyValue, null))); 72 | } 73 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 74 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(new Videos(output, null), null, null)); 75 | var finalJson = JSON.stringify(chaptersObject); 76 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /MangaDex/link.txt: -------------------------------------------------------------------------------- 1 | https://api.mangadex.org/manga?includes[]=cover_art&order[followedCount]=desc&contentRating[]=safe&contentRating[]=suggestive&contentRating[]=erotica&hasAvailableChapters=true&ids[]=cc4d6e0e-bb54-4d50-b364-9e52e1a6c962&ids[]=9ebb9963-6b92-4cfc-a570-fbf99294dadb&ids[]=d5261282-fdbf-424a-8e09-48c487085a68&ids[]=cc8dc41e-1f7e-4e52-9a8f-2e24de5e5c9c&ids[]=4ee7159c-9b8c-4fbf-a460-58c4014b28d7&ids[]=64eb46ed-8939-4a13-86a6-ae4d16845716&ids[]=b1ad0635-702d-4762-b7bd-1f9475688b5d&ids[]=e3ffe9c5-29a4-472a-b6f0-79bafa894184&ids[]=73364066-6ef4-4a98-b5f2-e9d4db62f980&ids[]=3a2ac3ce-24ca-46e0-82f7-5408774466e0&ids[]=59e90a84-655d-42c9-b1c3-740e055528b9&ids[]=79f3faba-ec45-4fe0-939a-37dc3ff7ef83&ids[]=bde14646-2fd1-45d3-8ae5-34f5acd52d47&ids[]=055f05ec-30ed-4dde-94e0-7f7cc3c86abb&ids[]=7d0379e6-4358-40bf-b303-f84121cd0b84&ids[]=937bfb69-1c3d-4b1b-8ca5-6fa5b21181aa&ids[]=5befe311-7a61-4940-8f38-dca6578d2543&ids[]=823f0015-aa41-49f5-b893-01d48089882e&ids[]=761a324d-b6e9-4b41-90e5-3bc95184c742&ids[]=61ffa74c-26a2-4a17-8f73-58708e336be5&ids[]=f1b0052a-6290-4c9b-b6ef-a9c8dbe9ed61&ids[]=d73077f0-2355-4314-a907-9dddf04c4d4b&ids[]=6e477e5b-d90c-43be-8324-1516868dfd9c&ids[]=259dfd8a-f06a-4825-8fa6-a2dcd7274230&ids[]=05f282b4-5010-48ff-8729-90059e90de57&ids[]=425f2ccf-581f-42cf-aed3-c3312fcde926&ids[]=db2227a7-7551-4233-991f-cc9dc1f20be2&ids[]=e0c9100e-287d-4417-8c17-b4e696254dc7&ids[]=733fc3ac-deca-444e-bb79-14186e00ccf1&ids[]=0861e776-968f-4549-847b-7e33c6d6555e&ids[]=d8f1d7da-8bb1-407b-8be3-10ac2894d3c6&ids[]=f81026af-1b41-465c-932b-291ce4760c00&ids[]=51573075-d985-442b-94ee-2b2e5dd8d0f8&ids[]=ea57752d-acb7-469e-aa60-43e694ded9a9&ids[]=aed24b2e-b574-4204-9702-cda5cfc567de&ids[]=55a96d76-10a2-4c4b-bc60-3a4aa8325e50&ids[]=4002af95-b501-4cce-b1bd-ccf0b21d5bdc&ids[]=12968534-b5e3-40df-9daf-a939f5586b16&ids[]=dc332d04-d3b0-413c-a767-70f5e451b031&ids[]=32fdfe9b-6e11-4a13-9e36-dcd8ea77b4e4&ids[]=d8d8ca2d-19c1-4c4c-9401-fbe32ec0cdd5&ids[]=1389d660-b9b1-4c6a-81af-eab4dbf3f22b&ids[]=da7bb886-7e6b-4174-83a9-2c478475b846&ids[]=267db3f7-fd9c-4395-ac36-9ffacd772473&ids[]=a1422bad-4598-4018-95ae-888435bafe67&ids[]=bc5f9952-4bb0-4f60-a1ff-b3b2186b560f&ids[]=80422e14-b9ad-4fda-970f-de370d5fa4e5&ids[]=ac4e2459-d995-45ae-8421-4c4cf4a87770&ids[]=0504da67-e636-4b3e-ab9b-48e8d4264fc6&ids[]=cee2ab81-2ab5-4c91-8715-92848ef5b2d4&ids[]=8b459a49-b40f-4614-90a2-dc0a9209a42f&ids[]=3f28c47a-bf8d-4e79-83ca-2e64fe906372&ids[]=fc83ffc3-8ec2-476c-a436-34acd795a1a7&ids[]=98052ef1-49a9-4722-a8f5-60baac437e2e&ids[]=278956f5-4f37-404e-981d-46a171f23279&ids[]=cb43467f-8e3a-4e7f-9af9-7e48c1d6d0dc&ids[]=f801e9c5-b9dc-4aee-987e-fcc16eef2f45&ids[]=a67996ca-ef48-4fd1-84d5-5319afd49108&ids[]=6ebe8b8a-7bac-45f0-8652-4b9d52b95644&limit=59 -------------------------------------------------------------------------------- /spacemove/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | 2 | function Chapters(request, extra, javascriptConfig, output) { 3 | this.request = request; 4 | this.extra = extra; 5 | this.javascriptConfig = javascriptConfig; 6 | this.output = output; 7 | } 8 | 9 | function ModuleRequest(url, method, headers, httpBody) { 10 | this.url = url; 11 | this.method = method; 12 | this.headers = headers; 13 | this.httpBody = httpBody; 14 | } 15 | 16 | function Extra(commands, extraInfo) { 17 | this.commands = commands; 18 | this.extraInfo = extraInfo; 19 | } 20 | 21 | function Commands(commandName, params) { 22 | this.commandName = commandName; 23 | this.params = params; 24 | } 25 | 26 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 27 | this.removeJavascript = removeJavascript; 28 | this.loadInWebView = loadInWebView; 29 | this.javaScript = javaScript; 30 | } 31 | 32 | function KeyValue(key, value) { 33 | this.key = key; 34 | this.value = value; 35 | } 36 | 37 | function Output( videos, images, text) { 38 | this.videos = videos; 39 | this.images = images; 40 | this.text = text; 41 | } 42 | 43 | function Videos(needsResolver, rawVideo) { 44 | this.needsResolver = needsResolver; 45 | this.rawVideo = rawVideo; 46 | } 47 | 48 | function NeedsResolver(resolverIdentifier, link) { 49 | this.resolverIdentifier = resolverIdentifier; 50 | this.link = link; 51 | } 52 | 53 | function RawVideo(video) { 54 | this.video = video; 55 | } 56 | 57 | function Video(videoQuality, videoLink) { 58 | this.videoQuality = videoQuality; 59 | this.videoLink = videoLink; 60 | } 61 | 62 | function getFile(url){ 63 | var xhr = new XMLHttpRequest(); 64 | xhr.open('get', url, false); 65 | xhr.send(); 66 | return xhr.responseText; 67 | } 68 | 69 | 70 | 71 | function Text(text) { 72 | this.text = text; 73 | } 74 | 75 | var output = []; 76 | var savedData = document.getElementById('ketsu-final-data'); 77 | var parsedJson = JSON.parse(savedData.innerHTML); 78 | 79 | var emptyKeyValue = [new KeyValue('', '')]; 80 | var serveur = document.querySelectorAll('iframe'); 81 | for(s of serveur){ 82 | var link = s.src; 83 | output.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 84 | } 85 | 86 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 87 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(new Videos(output, null), null, null)); 88 | var finalJson = JSON.stringify(chaptersObject); 89 | savedData.innerHTML = finalJson; 90 | -------------------------------------------------------------------------------- /Drama_Cool/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters ( request, extra, javascriptConfig, output ) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest ( url, method, headers, httpBody ) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra ( commands, extraInfo ) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands ( commandName, params ) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig ( removeJavascript, loadInWebView, javaScript ) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue ( key, value ) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output ( videos, images, text ) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos ( needsResolver, rawVideo ) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver ( resolverIdentifier, link ) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo ( video ) { 53 | this.video = video; 54 | } 55 | 56 | function Video ( videoQuality, videoLink ) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text ( text ) { 62 | this.text = text; 63 | } 64 | var output = [ ]; 65 | var savedData = document.getElementById( 'ketsu-final-data' ); 66 | var parsedJson = JSON.parse( savedData.innerHTML ); 67 | var emptyKeyValue = [ new KeyValue( '', '' ) ]; 68 | let buttonBox = document.querySelector( 'div.anime_muti_link' ).querySelectorAll( 'li' ); 69 | for (let x = 0; x < buttonBox.length; x++ ) { 70 | let link = buttonBox[ x ].dataset.video; 71 | if ( link.startsWith( '//' ) ) { 72 | link = 'https:' + link; 73 | } else if (link.includes('dood')){ 74 | link = link.replace( 'ws', 'so' ) 75 | } 76 | output.push( new NeedsResolver( '', new ModuleRequest( link, 'get', emptyKeyValue, null ) ) ); 77 | } 78 | 79 | let emptyExtra = new Extra( [ new Commands( '', emptyKeyValue ) ], emptyKeyValue ); 80 | var chaptersObject = new Chapters( new ModuleRequest( '', '', emptyKeyValue, null ), emptyExtra, new JavascriptConfig( false, false, '' ), new Output( new Videos( output, null ), null, null ) ); 81 | var finalJson = JSON.stringify( chaptersObject ); 82 | savedData.innerHTML = finalJson; 83 | -------------------------------------------------------------------------------- /Mangas-Origines/Chapters/Chapters1.js: -------------------------------------------------------------------------------- 1 | 2 | function Chapters(request, extra, javascriptConfig, output) { 3 | this.request = request; 4 | this.extra = extra; 5 | this.javascriptConfig = javascriptConfig; 6 | this.output = output; 7 | } 8 | 9 | function ModuleRequest(url, method, headers, httpBody) { 10 | this.url = url; 11 | this.method = method; 12 | this.headers = headers; 13 | this.httpBody = httpBody; 14 | } 15 | 16 | function Extra(commands, extraInfo) { 17 | this.commands = commands; 18 | this.extraInfo = extraInfo; 19 | } 20 | 21 | function Commands(commandName, params) { 22 | this.commandName = commandName; 23 | this.params = params; 24 | } 25 | 26 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 27 | this.removeJavascript = removeJavascript; 28 | this.loadInWebView = loadInWebView; 29 | this.javaScript = javaScript; 30 | } 31 | 32 | function KeyValue(key, value) { 33 | this.key = key; 34 | this.value = value; 35 | } 36 | 37 | function Output( videos, images, text) { 38 | this.videos = videos; 39 | this.images = images; 40 | this.text = text; 41 | } 42 | 43 | function Videos(needsResolver, rawVideo) { 44 | this.needsResolver = needsResolver; 45 | this.rawVideo = rawVideo; 46 | } 47 | 48 | function NeedsResolver(resolverIdentifier, link) { 49 | this.resolverIdentifier = resolverIdentifier; 50 | this.link = link; 51 | } 52 | 53 | function RawVideo(video) { 54 | this.video = video; 55 | } 56 | 57 | function Video(videoQuality, videoLink) { 58 | this.videoQuality = videoQuality; 59 | this.videoLink = videoLink; 60 | } 61 | 62 | function Text(text) { 63 | this.text = text; 64 | } 65 | 66 | var output = []; 67 | var savedData = document.getElementById('ketsu-final-data'); 68 | var parsedJson = JSON.parse(savedData.innerHTML); 69 | 70 | var emptyKeyValue = [new KeyValue('referer', 'https://mangas-origines.fr/')]; 71 | var cherch = document.querySelectorAll('.reading-content .page-break.no-gaps'); 72 | for (cher of cherch){ 73 | var voir = cher.querySelector('img').dataset.src.trim(); 74 | output.push(new ModuleRequest(voir, 'get', emptyKeyValue, null)); 75 | } 76 | if(output.length == 0){ 77 | eval(document.querySelector('#chapter_preloaded_images').textContent); 78 | for(image of chapter_preloaded_images){ 79 | output.push(new ModuleRequest(image, 'get', emptyKeyValue, null)); 80 | } 81 | } 82 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 83 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, 84 | new JavascriptConfig(false, false, ''), new Output(null, output, null)); 85 | var finalJson = JSON.stringify(chaptersObject); 86 | savedData.innerHTML = finalJson; 87 | -------------------------------------------------------------------------------- /SuperCartoons/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | 2 | function Chapters(request, extra, javascriptConfig, output) { 3 | this.request = request; 4 | this.extra = extra; 5 | this.javascriptConfig = javascriptConfig; 6 | this.output = output; 7 | } 8 | 9 | function ModuleRequest(url, method, headers, httpBody) { 10 | this.url = url; 11 | this.method = method; 12 | this.headers = headers; 13 | this.httpBody = httpBody; 14 | } 15 | 16 | function Extra(commands, extraInfo) { 17 | this.commands = commands; 18 | this.extraInfo = extraInfo; 19 | } 20 | 21 | function Commands(commandName, params) { 22 | this.commandName = commandName; 23 | this.params = params; 24 | } 25 | 26 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 27 | this.removeJavascript = removeJavascript; 28 | this.loadInWebView = loadInWebView; 29 | this.javaScript = javaScript; 30 | } 31 | 32 | function KeyValue(key, value) { 33 | this.key = key; 34 | this.value = value; 35 | } 36 | 37 | function Output( videos, images, text) { 38 | this.videos = videos; 39 | this.images = images; 40 | this.text = text; 41 | } 42 | 43 | function Videos(needsResolver, rawVideo) { 44 | this.needsResolver = needsResolver; 45 | this.rawVideo = rawVideo; 46 | } 47 | 48 | function NeedsResolver(resolverIdentifier, link) { 49 | this.resolverIdentifier = resolverIdentifier; 50 | this.link = link; 51 | } 52 | 53 | function RawVideo(video) { 54 | this.video = video; 55 | } 56 | 57 | function Video(videoQuality, videoLink) { 58 | this.videoQuality = videoQuality; 59 | this.videoLink = videoLink; 60 | } 61 | 62 | 63 | 64 | function Text(text) { 65 | this.text = text; 66 | } 67 | 68 | var output = []; 69 | var savedData = document.getElementById('ketsu-final-data'); 70 | var parsedJson = JSON.parse(savedData.innerHTML); 71 | var rawVideo = []; 72 | 73 | var emptyKeyValue = [new KeyValue('', '')]; 74 | 75 | var sour = document.querySelectorAll('p'); 76 | for (let a = 0; a < sour.length; a++) { 77 | if(sour[a].textContent.includes('file:')){ 78 | var content = sour[a].innerHTML; 79 | link = content.match(/https.+mp4/gm)[0]; 80 | var video = new Video('Normal', new ModuleRequest(link , 'get', emptyKeyValue, null)); 81 | rawVideo.push(new RawVideo([video])); 82 | } 83 | } 84 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 85 | var chaptersObject = new Chapters('', emptyExtra, new JavascriptConfig(true, false, ''), new Output(new Videos(rawVideo, null), null, null)); 86 | var finalJson = JSON.stringify(chaptersObject); 87 | savedData.innerHTML = finalJson; 88 | 89 | -------------------------------------------------------------------------------- /Turkish123/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | 2 | function Chapters(request, extra, javascriptConfig, output) { 3 | this.request = request; 4 | this.extra = extra; 5 | this.javascriptConfig = javascriptConfig; 6 | this.output = output; 7 | } 8 | 9 | function ModuleRequest(url, method, headers, httpBody) { 10 | this.url = url; 11 | this.method = method; 12 | this.headers = headers; 13 | this.httpBody = httpBody; 14 | } 15 | 16 | function Extra(commands, extraInfo) { 17 | this.commands = commands; 18 | this.extraInfo = extraInfo; 19 | } 20 | 21 | function Commands(commandName, params) { 22 | this.commandName = commandName; 23 | this.params = params; 24 | } 25 | 26 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 27 | this.removeJavascript = removeJavascript; 28 | this.loadInWebView = loadInWebView; 29 | this.javaScript = javaScript; 30 | } 31 | 32 | function KeyValue(key, value) { 33 | this.key = key; 34 | this.value = value; 35 | } 36 | 37 | function Output( videos, images, text) { 38 | this.videos = videos; 39 | this.images = images; 40 | this.text = text; 41 | } 42 | 43 | function Videos(needsResolver, rawVideo) { 44 | this.needsResolver = needsResolver; 45 | this.rawVideo = rawVideo; 46 | } 47 | 48 | function NeedsResolver(resolverIdentifier, link) { 49 | this.resolverIdentifier = resolverIdentifier; 50 | this.link = link; 51 | } 52 | 53 | function RawVideo(video) { 54 | this.video = video; 55 | } 56 | 57 | function Video(videoQuality, videoLink) { 58 | this.videoQuality = videoQuality; 59 | this.videoLink = videoLink; 60 | } 61 | 62 | 63 | function Text(text) { 64 | this.text = text; 65 | } 66 | 67 | var output = []; 68 | var savedData = document.getElementById('ketsu-final-data'); 69 | var parsedJson = JSON.parse(savedData.innerHTML); 70 | var emptyKeyValue = [new KeyValue('', '')]; 71 | 72 | var bter = document.querySelectorAll('iframe'); 73 | for (b of bter){ 74 | var link = b.src; 75 | if(link.includes('lajkema')){ 76 | output.push(new NeedsResolver('FEMBED', new ModuleRequest(link, 'get', emptyKeyValue, null))); 77 | }else{ 78 | output.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 79 | } 80 | if(link.includes('short')){ 81 | continue; 82 | } 83 | 84 | } 85 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 86 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(new Videos(output, null), null, null)); 87 | var finalJson = JSON.stringify(chaptersObject); 88 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /VostAnimes/Episodes/Episodes2.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | function NeedsResolver(resolverIdentifier, link) { 41 | this.resolverIdentifier = resolverIdentifier; 42 | this.link = link; 43 | } 44 | 45 | function getValueFromKey(keys,key) { 46 | for (var x = 0; x < keys.length; x++) { 47 | let tKey = keys[x]; 48 | if (tKey.key == key) { 49 | return tKey.value; 50 | } 51 | } return ''; 52 | } 53 | 54 | var savedData = document.getElementById('ketsu-final-data'); 55 | const parsedJson = JSON.parse(savedData.innerHTML.replaceAll('&', '&').replaceAll('#038;', '')); 56 | const emptyKeyValue = [new KeyValue('', '')]; 57 | 58 | var output = parsedJson.output.videos; 59 | var extraInfo = parsedJson.extra.extraInfo; 60 | var count = getValueFromKey(extraInfo,'count'); 61 | if (count == 0) { output = new Videos([],[]); } 62 | 63 | var link = document.querySelector('iframe').src.replace('tape.com','ta.pe'); 64 | if (!link.includes('https:')) { link = 'https:'+link; } 65 | output.needsResolver.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 66 | 67 | var nextRequest = getValueFromKey(extraInfo,''+count); 68 | extraInfo[1].value = ''+(parseInt(count) +1); 69 | 70 | const episodesObject = new Chapters(new ModuleRequest(nextRequest, 'get', [extraInfo[0]], null), new Extra([new Commands('', emptyKeyValue)], extraInfo), new JavascriptConfig(true, false, ''), new Output(output, null, null)); 71 | 72 | savedData.innerText = JSON.stringify(episodesObject); -------------------------------------------------------------------------------- /Neko-Sama/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text(text) { 62 | this.text = text; 63 | } 64 | var output = []; 65 | var savedData = document.getElementById('ketsu-final-data'); 66 | var parsedJson = JSON.parse(savedData.innerHTML); 67 | var emptyKeyValue = [new KeyValue('', '')]; 68 | let scripts = document.querySelectorAll('p'); 69 | for (var x = 0; x < scripts.length; x++) { 70 | let script = scripts[x].textContent; 71 | if (script.includes('video[0]')) { 72 | let splits = script.split('\''); 73 | for (split of splits) { 74 | if (split.includes('http') && !split.includes('var ') && !split.includes('streamtape')) { 75 | output.push(new NeedsResolver('', new ModuleRequest(split, 'get', emptyKeyValue, null))); 76 | } 77 | } 78 | } 79 | } 80 | output.reverse(); 81 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 82 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(new Videos(output, null), null, null)); 83 | var finalJson = JSON.stringify(chaptersObject); 84 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /GumGum/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | function infoFilter(filter) { return document.querySelector('.entry-content').innerHTML.split(filter)[1].split('span> ')[1].split(' .alignright').src; 55 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 56 | let title = document.querySelector('h1').textContent; 57 | let desc = document.querySelector('h5').textContent; 58 | let genres = infoFilter('Genre:').split(', '); 59 | let statut = infoFilter('Statut:'); 60 | let type = infoFilter('Type:'); 61 | 62 | let episodes = Array.from(document.querySelectorAll('.entry-content a')).map( 63 | ep => new Chapter(ep.textContent, new ModuleRequest(ep.href, 'get', emptyKeyValue, null), false) 64 | ); 65 | 66 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, statut, '', type, 'Eps: '+ episodes.length, episodes)); 67 | 68 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /Katsu/OtakuFr/Mainpage/mainpage.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(lastEpisodes, lastAnimes) { 11 | this.lastEpisodes = lastEpisodes; 12 | this.lastAnimes = lastAnimes; 13 | } 14 | 15 | function LastAnimes(moduleID, image, link, title) { 16 | this.moduleID = moduleID; 17 | this.image = image; 18 | this.link = link; 19 | this.title = title; 20 | } 21 | 22 | function LastEpisodes(moduleID, image, link, title, episode) { 23 | this.moduleID = moduleID; 24 | this.image = image; 25 | this.link = link; 26 | this.title = title; 27 | this.episode = episode; 28 | } 29 | 30 | function MainPageObject(request, headers, method, extraInfo, loadJavascript, javaScript, output) { 31 | this.request = request; 32 | this.headers = headers; 33 | this.method = method; 34 | this.extraInfo = extraInfo; 35 | this.loadJavascript = loadJavascript; 36 | this.javaScript = javaScript; 37 | this.output = output; 38 | } 39 | var savedData = document.getElementById('katsu-final-data'); 40 | var parsedJson = JSON.parse(savedData.innerHTML); 41 | var moduleID = '20'; 42 | var headers = [new Header('', '')]; 43 | var extraInfo = [new ExtraInfo('')]; 44 | var mainPageObject; 45 | var output; 46 | var lastAnimes = []; 47 | var lastEpisodes = []; 48 | var episodes = document.querySelectorAll('.col-md-8.order-1 .episode'); 49 | for (var x = 0; x < episodes.length; x++) { 50 | var episode = episodes[x]; 51 | var title = episode.querySelector('figure img').title; 52 | var image = episode.querySelector('figure > a > img').src; 53 | var ep = title.match(/[0-9]+.+./gm)[0]; 54 | title = title.replace(ep, ''); 55 | var link = episode.querySelector('a').href; 56 | var episodeObject = new LastEpisodes(moduleID, image, link, title, ep); 57 | lastEpisodes.push(episodeObject); 58 | } 59 | var animes = document.querySelectorAll('.list-group .list-group-item.list-group-item-action'); 60 | for (var x = 0; x < animes.length; x++) { 61 | var anime = animes[x]; 62 | var title = anime.querySelector('figure img').title; 63 | var image = anime.querySelector('figure > img').src;; 64 | var link = anime.href; 65 | var animeObject = new LastAnimes(moduleID, image, link, title); 66 | lastAnimes.push(animeObject); 67 | } 68 | while (lastEpisodes.length % 2 != 0) { 69 | lastEpisodes.push(lastEpisodes[0]); 70 | } 71 | while (lastAnimes.length % 3 != 0) { 72 | lastAnimes.push(lastAnimes[0]); 73 | } 74 | output = new Output(lastEpisodes, lastAnimes); 75 | mainPageObject = new MainPageObject('', headers, '', extraInfo, '', '', output); 76 | var finalJson = JSON.stringify(mainPageObject); 77 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Katsu/Zoro/Search/search.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(moduleID, image, link, title, type, voice, stars) { 11 | this.moduleID = moduleID; 12 | this.image = image; 13 | this.link = link; 14 | this.title = title; 15 | this.type = type; 16 | this.voice = voice; 17 | this.stars = stars; 18 | } 19 | 20 | function SearchObject(request, method, headers, separator, extraInfo, loadJavascript, javaScript, output) { 21 | this.request = request; 22 | this.method = method; 23 | this.headers = headers; 24 | this.separator = separator; 25 | this.extraInfo = extraInfo; 26 | this.loadJavascript = loadJavascript; 27 | this.javaScript = javaScript; 28 | this.output = output; 29 | } 30 | var savedData = document.getElementById('katsu-final-data'); 31 | var parsedJson = JSON.parse(savedData.innerHTML); 32 | var moduleID = '114653268923213246'; 33 | var headers = [new Header('', '')]; 34 | var extraInfo = [new ExtraInfo('')]; 35 | var searchPageObject; 36 | var output = []; 37 | try { 38 | var field1 = document.querySelector('#ani_detail > div > div > div.anis-content > div.anisc-detail > div.film-stats').innerText.trim().replaceAll('\\n', ' ') 39 | } catch (e) { 40 | var field1 = document.querySelector('#ani_detail > div > div > div.anis-content > div.anisc-detail > div.film-stats').innerText.trim() 41 | }; 42 | if (field1.includes('TV')) { 43 | var type = 'TV'; 44 | } else if (field1.includes('Movie')) { 45 | var type = 'Movie' 46 | } else { 47 | var type = 'Unknown' 48 | }; 49 | var shorts = document.querySelectorAll('.film_list-wrap .flw-item'); 50 | for (short of shorts) { 51 | try { 52 | language = short.querySelector('.tick.ltr').textContent.replaceAll('\\n', '').trim().replace(' ', '/').replaceAll(' ', ''); 53 | } catch { 54 | language = short.querySelector('.tick.ltr'); 55 | if (language == null) { 56 | language = '??'; 57 | } else { 58 | language = short.querySelector('.tick.ltr').innerText.trim().replace('\\n', '/'); 59 | } 60 | } 61 | var image = short.querySelector('img').getAttribute('data-src'); 62 | var field1 = short.querySelector('.tick-item.tick-eps').textContent.trim(); 63 | var link = 'https://zoro.to/' + short.querySelector('a').href; 64 | var title = short.querySelector('img').alt; 65 | output.push(new Output(moduleID, image, link, title, type, language, field1)); 66 | } 67 | searchPageObject = new SearchObject('', '', headers, '+', extraInfo, '', '', output); 68 | var finalJson = JSON.stringify(searchPageObject); 69 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /AnimeSaturne/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | let savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | let image = document.querySelector('.cover-anime').src; 53 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 54 | let title = document.querySelector('.anime-title-as b').textContent; 55 | let desc = document.querySelector('#shown-trama').textContent.trim(); 56 | 57 | let genres = Array.from(document.querySelectorAll('.badge-dark')).map(genre => genre.textContent); 58 | let statut = document.querySelector('.w-100.text-white').textContent.split('Stato:')[1].split('\n')[0].trim(); 59 | let time = document.querySelector('.w-100.text-white').textContent.split('Durata episodi:')[1].split('\n')[0].trim(); 60 | 61 | let episodes = Array.from(document.querySelectorAll('.bottone-ep')).map(ep => new Chapter(ep.textContent, new ModuleRequest(ep.href, 'get',emptyKeyValue,null),false)); 62 | console.log(episodes); 63 | 64 | savedData.innerHTML = JSON.stringify(new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, statut, '', time, 'Eps: '+episodes.length, episodes))); -------------------------------------------------------------------------------- /MangaDex/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text(text) { 62 | this.text = text; 63 | } 64 | var output = []; 65 | var savedData = document.getElementById('ketsu-final-data'); 66 | var parsedJson = JSON.parse(savedData.innerHTML); 67 | var emptyKeyValue = [new KeyValue('', '')]; 68 | var script = document.querySelector('script').innerHTML.replace('/*', '').replace('*/', ''); 69 | var json = JSON.parse(script); 70 | try { 71 | var baseUrl = json.baseUrl + '/data/'; 72 | var hash = json.chapter.hash; 73 | for (image of json.chapter.data) { 74 | var link = baseUrl + hash + '/' + image; 75 | output.push(new ModuleRequest(link, 'get', emptyKeyValue, null)); 76 | } 77 | } catch{} 78 | if(output.length < 1 ){ 79 | var link = 'https://th.bing.com/th/id/OIP.yYBFzWZ0R970KK2bJhwO9AHaEi?pid=ImgDet&rs=1'; 80 | output.push(new ModuleRequest(link, 'get', emptyKeyValue, null)); 81 | } 82 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 83 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, 84 | new JavascriptConfig(false, false, ''), new Output(null, output, null)); 85 | var finalJson = JSON.stringify(chaptersObject); 86 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Senmanga/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text(text) { 62 | this.text = text; 63 | } 64 | var output = []; 65 | var savedData = document.getElementById('ketsu-final-data'); 66 | var parsedJson = JSON.parse(savedData.innerHTML); 67 | var emptyKeyValue = [new KeyValue('', '')]; 68 | var scripts = document.querySelectorAll('p'); 69 | for (script of scripts) { 70 | if (script.innerText.includes('let chapter_url =')) { 71 | var script1 = script.innerText.replace('; var hash = window.location.hash; if (!hash) { hash = 1; } else { hash = parseInt(hash.replace(\"/\", \"#\")) - 1; } $(function () { imgscroll.beLoad($(\"#img_list\"), imglist, hash); });', ''); 72 | var json = eval(script1); 73 | var images = imglist; 74 | for (img of images) { 75 | var img = img.url; 76 | output.push(new ModuleRequest(img, 'get', emptyKeyValue, null)); 77 | } 78 | } 79 | } 80 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 81 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(null, output, null)); 82 | var finalJson = JSON.stringify(chaptersObject); 83 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Asura/Chapters/Chapters.html: -------------------------------------------------------------------------------- 1 | 2 | 88 | -------------------------------------------------------------------------------- /CrunchyScan/Info/Info2.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Chapter(chapName, link, openInWebView) { 37 | this.chapName = chapName; 38 | this.link = link; 39 | this.openInWebView = openInWebView; 40 | } 41 | 42 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 43 | this.image = image; 44 | this.link = link; 45 | this.title = title; 46 | this.description = description; 47 | this.genres = genres; 48 | this.field1 = field1; 49 | this.field2 = field2; 50 | this.field3 = field3; 51 | this.field4 = field4; 52 | this.chapters = chapters; 53 | } 54 | var savedData = document.getElementById('ketsu-final-data'); 55 | var parsedJson = JSON.parse(savedData.innerText.replaceAll('\n','')); 56 | let emptyKeyValue = [new KeyValue('', '')]; 57 | var image = parsedJson.output.image; 58 | var title = parsedJson.output.title; 59 | var desc = parsedJson.output.description; 60 | var genres = parsedJson.output.genres; 61 | var status = parsedJson.output.field1; 62 | var type = parsedJson.output.field2; 63 | var episodes = []; 64 | let chapters= document.querySelectorAll('.wp-manga-chapter a'); 65 | for (var x = 0; x < chapters.length; x++) { 66 | if(chapters[x].className != '') continue; 67 | let name = chapters[x].innerText; 68 | let link = chapters[x].href; 69 | let chapter = new Chapter(name, new ModuleRequest(link, 'get', emptyKeyValue, null), false); 70 | episodes.push(chapter); 71 | } 72 | parsedJson.request.url = parsedJson.output.link.url; 73 | let infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, status, type, '', 'Eps: ' + episodes.length, episodes.reverse())); 74 | var finalJson = JSON.stringify(infoPageObject); 75 | savedData.innerText = finalJson; -------------------------------------------------------------------------------- /StreamingCommunity/Episodes/Episodes1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | function NeedsResolver(resolverIdentifier, link) { 41 | this.resolverIdentifier = resolverIdentifier; 42 | this.link = link; 43 | } 44 | 45 | var savedData = document.getElementById('ketsu-final-data'); 46 | var parsedJson = JSON.parse(savedData.innerHTML); 47 | var emptyKeyValue = [new KeyValue('', '')]; 48 | 49 | var output = []; 50 | var nextRequest = ''; 51 | if (parsedJson.request.url.includes('.io')) { 52 | for (let resolver of document.querySelectorAll('.mirrors span')) { 53 | var link = resolver.getAttribute('data-link').replace('tape.com', 'ta.pe'); 54 | if (!link.includes('https:')) { link = 'https:' + link; } 55 | output.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 56 | } 57 | 58 | const guardahd = document.querySelector('.guardahd-player'); 59 | if (guardahd != null) { nextRequest = guardahd.querySelector('iframe').src; } 60 | } else { 61 | for (let resolver of document.querySelectorAll(`[title=\"${decodeURI(parsedJson.request.url.split('?ep=')[1])}\"] a`)) { 62 | var link = resolver.getAttribute('data-link'); 63 | link = link == null ? resolver.href:link; 64 | output.push(new NeedsResolver('', new ModuleRequest(link.replace('tape.com', 'ta.pe'), 'get', emptyKeyValue, null))); 65 | } 66 | } 67 | 68 | const episodesPageObject = new Chapters(new ModuleRequest(nextRequest, 'get', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output( new Videos(output, null), null, null)); 69 | 70 | savedData.innerHTML = JSON.stringify(episodesPageObject); -------------------------------------------------------------------------------- /Cineblog/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | let image = parsedJson.request.url.split('/cb01')[0] + document.querySelector('.story-cover > img').src; 53 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 54 | let title = document.querySelector('[property=\"og:title').content; 55 | let desc = document.querySelector('[itemprop=depion').content; 56 | 57 | let genres = Array.from(document.querySelector('.text-uppercase').textContent.split('–')[0].split('/')).map(genre => genre.trim()); 58 | 59 | let time = document.querySelector('.text-uppercase').textContent.split('–')[1].trim(); 60 | 61 | if (document.querySelectorAll('.videobox-tabs a').length > 1) { var link = parsedJson.request.url; } 62 | else { var link = document.querySelector('.tab-pane.fade > p').getAttribute('src').replace('ddl', 'movie'); } 63 | let movie = [new Chapter(title, new ModuleRequest(link, 'get', emptyKeyValue, null), false)]; 64 | 65 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, time, 'Movie', '', '', movie)); 66 | 67 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /FrenchAnime/Chapters/Chapters.html: -------------------------------------------------------------------------------- 1 | 2 | 92 | -------------------------------------------------------------------------------- /Librairie/Chapters/Chapters.html: -------------------------------------------------------------------------------- 1 | 2 | 85 | -------------------------------------------------------------------------------- /Neko-Sama/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) {this.request = request;this.extra = extra;this.javascriptConfig = javascriptConfig;this.output = output;}function ModuleRequest(url, method, headers, httpBody) {this.url = url;this.method = method;this.headers = headers;this.httpBody = httpBody;}function Extra(commands, extraInfo) {this.commands = commands;this.extraInfo = extraInfo;}function Commands(commandName, params) {this.commandName = commandName;this.params = params;}function JavascriptConfig(removeJavascript, loadInWebView, javaScript) {this.removeJavascript = removeJavascript;this.loadInWebView = loadInWebView;this.javaScript = javaScript;}function KeyValue(key, value) {this.key = key;this.value = value;}function Chapter(chapName, link, openInWebView) {this.chapName = chapName;this.link = link;this.openInWebView = openInWebView;}function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) {this.image = image;this.link = link;this.title = title;this.description = description;this.genres = genres;this.field1 = field1;this.field2 = field2;this.field3 = field3;this.field4 = field4;this.chapters = chapters;}function getStuff(array, match) {for (var x = 0; x < array.length; x++) {let data = array[x].innerText;if (data.includes(match)) {return data.replace(match, '').trim();}}}function getHtmlStuff(array, match) {for (var x = 0; x < array.length; x++) {let data = array[x].innerText;if (data.includes(match)) {return array[x];}}}var savedData = document.getElementById('ketsu-final-data');var parsedJson = JSON.parse(savedData.innerHTML);let emptyKeyValue = [new KeyValue('', '')];var baseUrl = 'https://neko-sama.fr';var episodes = [];var type = 'Anime';var status = 'Unknown';var genres = [];genres = Array.from(document.querySelectorAll('.ui.tag.horizontal.list a')).map(g => g.innerText);var desc = '';desc = document.querySelector('.synopsis p').textContent.trim();var image = '';var title = '';title = document.querySelector('h1').textContent.replace('VF', '').replace('VOSTFR', '').trim();image = document.querySelector('.cover img').src;image = new ModuleRequest(image, 'get', emptyKeyValue, null);var scripts = document.querySelectorAll('p');for (script of scripts) {if (script.innerHTML.includes('var episodes =')) {let regex = /var episodes = (.*);/;let match = regex.exec(script.innerHTML);let json = JSON.parse(match[1].split(';')[0]);for (episode of json) {let fixedLink = baseUrl + episode.url;let chapter = new Chapter(episode.episode + ' - ' + episode.title, new ModuleRequest(fixedLink, 'get',emptyKeyValue, null), false);episodes.push(chapter);}}}let infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('',emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title,parsedJson.request, desc, genres, status, '', type, 'Eps: ' + episodes.length, episodes));var finalJson = JSON.stringify(infoPageObject);savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Katsu/OtakuFr/Info/info.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(moduleID, image, link, title, description, genres, type, status, episodes) { 11 | this.moduleID = moduleID; 12 | this.image = image; 13 | this.link = link; 14 | this.title = title; 15 | this.description = description; 16 | this.genres = genres; 17 | this.type = type; 18 | this.status = status; 19 | this.episodes = episodes; 20 | } 21 | 22 | function Episodes(link, moduleID, isDecodable) { 23 | this.link = link; 24 | this.moduleID = moduleID; 25 | this.isDecodable = isDecodable; 26 | } 27 | 28 | function InfoObject(request, method, headers, extraInfo, loadJavascript, javaScript, output) { 29 | this.request = request; 30 | this.method = method; 31 | this.headers = headers; 32 | this.extraInfo = extraInfo; 33 | this.loadJavascript = loadJavascript; 34 | this.javaScript = javaScript; 35 | this.output = output; 36 | } 37 | var savedData = document.getElementById('katsu-final-data'); 38 | var parsedJson = JSON.parse(savedData.innerHTML); 39 | var moduleID = '20'; 40 | var headers = [new Header('', '')]; 41 | var extraInfo = [new ExtraInfo('')]; 42 | var infoObject; 43 | var output; 44 | var episodes = []; 45 | var type = 'empty'; 46 | var status = 'Unknown'; 47 | var otherinfos = document.querySelectorAll('.list-unstyled li'); 48 | for (var i = 0; i < otherinfos.length; i++) { 49 | let data = otherinfos[i].innerText; 50 | if (data.includes('Type:')) { 51 | type = data.replace('Type:', '').trim(); 52 | } else if (data.includes('Statut:')) { 53 | status = data.replace('Statut:', '').trim(); 54 | } 55 | } 56 | var genres = []; 57 | var desc = ''; 58 | var image = ''; 59 | var title = ''; 60 | var genres = Array.from(document.querySelectorAll('ul > li:nth-child(5) > ul li a')).map(g => g.textContent.trim()); 61 | var synopsysdiv = document.querySelectorAll('.episode.fz-sm.synop p'); 62 | for (var x = 1; x < synopsysdiv.length; x++) { 63 | desc = desc + synopsysdiv[x].innerText; 64 | } 65 | var descdiv = document.querySelector('div.depion'); 66 | if (descdiv) { 67 | desc = descdiv.innerText; 68 | } 69 | var image = document.querySelector('figure > img').src; 70 | var title = document.querySelector('figure > img').title; 71 | var chapters = document.querySelectorAll('div.float-right > a'); 72 | for (var i = chapters.length - 1; i >= 0; i--) { 73 | var element = chapters[i]; 74 | var link = element.href; 75 | var epsObj = new Episodes(link, moduleID, 'false'); 76 | episodes.push(epsObj); 77 | } 78 | output = new Output(moduleID, image, parsedJson.request, title, desc, genres, type, status, episodes); 79 | infoObject = new InfoObject('', 'get', headers, extraInfo, '', '', output); 80 | var finalJson = JSON.stringify(infoObject); 81 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Katsu/Gogo/Info.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value 8 | } 9 | 10 | function Output(moduleID, image, link, title, description, genres, type, status, episodes) { 11 | this.moduleID = moduleID; 12 | this.image = image; 13 | this.link = link; 14 | this.title = title; 15 | this.description = description; 16 | this.genres = genres; 17 | this.type = type; 18 | this.status = status; 19 | this.episodes = episodes 20 | } 21 | 22 | function Episodes(link, moduleID, isDecodable) { 23 | this.link = link; 24 | this.moduleID = moduleID; 25 | this.isDecodable = isDecodable 26 | } 27 | 28 | function InfoObject(request, method, headers, extraInfo, loadJavascript, javaScript, output) { 29 | this.request = request; 30 | this.method = method; 31 | this.headers = headers; 32 | this.extraInfo = extraInfo; 33 | this.loadJavascript = loadJavascript; 34 | this.javaScript = javaScript; 35 | this.output = output 36 | } 37 | var savedData = document.getElementById('katsu-final-data'); 38 | var moduleID = '2'; 39 | var infoObject; 40 | var output; 41 | var headers = []; 42 | var extraInfo = []; 43 | var episodes = []; 44 | var type = ' '; 45 | var status = ''; 46 | var genres = []; 47 | var desc = ''; 48 | var parsedJson = JSON.parse(savedData.innerHTML); 49 | var animeInfo = document.querySelector('.anime_info_body'); 50 | var title = animeInfo.querySelector('h1').innerText; 51 | var image = animeInfo.querySelector('img').src; 52 | var forData = document.querySelectorAll('.type'); 53 | for (var x = 0; x < forData.length; x++) { 54 | var text = '' + forData[x].innerText; 55 | if (text.includes('Type:')) { 56 | type = text.replace('Type:').replace('undefined', ''); 57 | } 58 | if (text.includes('Genre:')) { 59 | var gen = forData[x].querySelectorAll('a'); 60 | for (var y = 0; y < gen.length; y++) { 61 | genres.push(gen[y].innerText.replace(',', '')); 62 | } 63 | } 64 | if (text.includes('Plot Summary:')) { 65 | desc = text.replace('Plot Summary:').replace('undefined', ''); 66 | } 67 | if (text.includes('Status:')) { 68 | status = text.replace('Status:', ''); 69 | } 70 | } 71 | var chapters = document.querySelector('.active').getAttribute('ep_end'); 72 | 73 | let anime_id = document.querySelector('.anime_info_episodes_next > input').getAttribute('value'); 74 | let respUrl = 'https://' + parsedJson.responseInfo.responseUrl.split('/')[2]; 75 | let extraInfo = [new ExtraInfo(respUrl)]; 76 | 77 | output = new Output(moduleID, image, parsedJson.request, title, desc, genres, type, status, episodes); 78 | headers.push(new Header('', '')); 79 | infoObject = new InfoObject('https://ajax.gogo-load.com/ajax/load-list-episode?ep_start=0&ep_end='+chapters+'&id='+anime_id, 'get', headers, extraInfo, '', '', output); 80 | var finalJson = JSON.stringify(infoObject); 81 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /MyKDrama/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | 2 | function Chapters(request, extra, javascriptConfig, output) { 3 | this.request = request; 4 | this.extra = extra; 5 | this.javascriptConfig = javascriptConfig; 6 | this.output = output; 7 | } 8 | 9 | function ModuleRequest(url, method, headers, httpBody) { 10 | this.url = url; 11 | this.method = method; 12 | this.headers = headers; 13 | this.httpBody = httpBody; 14 | } 15 | 16 | function Extra(commands, extraInfo) { 17 | this.commands = commands; 18 | this.extraInfo = extraInfo; 19 | } 20 | 21 | function Commands(commandName, params) { 22 | this.commandName = commandName; 23 | this.params = params; 24 | } 25 | 26 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 27 | this.removeJavascript = removeJavascript; 28 | this.loadInWebView = loadInWebView; 29 | this.javaScript = javaScript; 30 | } 31 | 32 | function KeyValue(key, value) { 33 | this.key = key; 34 | this.value = value; 35 | } 36 | 37 | function Output( videos, images, text) { 38 | this.videos = videos; 39 | this.images = images; 40 | this.text = text; 41 | } 42 | 43 | function Videos(needsResolver, rawVideo) { 44 | this.needsResolver = needsResolver; 45 | this.rawVideo = rawVideo; 46 | } 47 | 48 | function NeedsResolver(resolverIdentifier, link) { 49 | this.resolverIdentifier = resolverIdentifier; 50 | this.link = link; 51 | } 52 | 53 | function RawVideo(video) { 54 | this.video = video; 55 | } 56 | 57 | function Video(videoQuality, videoLink) { 58 | this.videoQuality = videoQuality; 59 | this.videoLink = videoLink; 60 | } 61 | 62 | 63 | 64 | function Text(text) { 65 | this.text = text; 66 | } 67 | 68 | var output = []; 69 | var savedData = document.getElementById('ketsu-final-data'); 70 | var parsedJson = JSON.parse(savedData.innerHTML); 71 | 72 | var emptyKeyValue = [new KeyValue('', '')]; 73 | 74 | var serveur = document.querySelectorAll('.mirror > option'); 75 | for (var x= 1; x< serveur.length; x++){ 76 | var serv = serveur[x].value; 77 | var iframe = atob(serv); 78 | var html = new DOMParser(); 79 | var parser = html.parseFromString(iframe, 'text/html'); 80 | var link = parser.querySelector('iframe').src; 81 | output.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 82 | } 83 | 84 | 85 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); 86 | var chaptersObject = new Chapters(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(new Videos(output, null), null, null)); 87 | var finalJson = JSON.stringify(chaptersObject); 88 | savedData.innerHTML = finalJson; 89 | 90 | -------------------------------------------------------------------------------- /Zoro.to/Chapters/chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | var savedData = document.getElementById('ketsu-final-data'); 61 | var parsedJson = JSON.parse(savedData.innerHTML); 62 | var extraInfo = parsedJson.extra.extraInfo; 63 | var emptyKeyValue = [new KeyValue('X-Requested-With', 'XMLHttpRequest')]; 64 | var output = []; 65 | const script = document.querySelector('script').innerHTML.replace('/*', '').replace('*/', ''); 66 | const data = JSON.parse(script); 67 | const html = data.html; 68 | const htmlObject = document.createElement('div'); 69 | htmlObject.innerHTML = html; 70 | document.body.appendChild(htmlObject); 71 | var extraInfo = [new KeyValue('count', '0')]; 72 | var links = document.querySelectorAll('.item.server-item'); 73 | for (var x = 0; x < links.length; x++) { 74 | var link = links[x]; 75 | var id = link.dataset.id; 76 | var lang = link.dataset.type; 77 | var url = 'https://zoro.to/ajax/v2/episode/sources?id=' + id + '?lang=' + lang; 78 | if (x == 0) { 79 | var nextRequest = url 80 | } else { 81 | extraInfo.push(new KeyValue(`${x}`, `${url}`)); 82 | } 83 | console.log(url); 84 | } 85 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], extraInfo); 86 | var chaptersObject = new Chapters(new ModuleRequest(nextRequest, 'get', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(new Videos([], []), null, null)); 87 | var finalJson = JSON.stringify(chaptersObject); 88 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Librairie/Info/Info.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 97 | -------------------------------------------------------------------------------- /NineManga/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | var image = document.querySelector('.bookface > img').src; 53 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 54 | var title = document.querySelector('[itemprop=\"name').textContent; 55 | var desc = ''; 56 | var statut = ''; 57 | var author = ''; 58 | var chapters = []; 59 | 60 | try { var genres = Array.from(document.querySelector('[itemprop=\"genre').querySelectorAll('a')).map(genre => genre.textContent); } 61 | catch { var genres = ['Manga', title]; } 62 | 63 | try { 64 | desc = document.querySelector('p[itemprop=\"depion\"]').textContent.replace('Résumé: ', ''); 65 | statut = document.querySelector('.red').textContent; 66 | author = document.querySelector('a[itemprop=\"author\"]').textContent; 67 | } catch {} 68 | 69 | for (chapter of document.querySelector('.silde').querySelectorAll('li > a')) { 70 | let chapTitle = chapter.title.replaceAll('\n', '').trim(); 71 | let chapLink = chapter.href.replace('.html', '-10-1.html'); 72 | chapters.push(new Chapter(chapTitle,new ModuleRequest(chapLink,'get',emptyKeyValue,null),false)); 73 | } 74 | chapters.reverse(); 75 | 76 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, statut, 'Chaps: ' + chapters.length, author, '', chapters)); 77 | 78 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /AnimeWorld/Episodes/Episodes2.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | function NeedsResolver(resolverIdentifier, link) { 41 | this.resolverIdentifier = resolverIdentifier; 42 | this.link = link; 43 | } 44 | function Video(videoQuality, videoLink) { 45 | this.videoQuality = videoQuality; 46 | this.videoLink = videoLink; 47 | } 48 | function RawVideo(video) { this.video = video; } 49 | 50 | function getValueFromKey(keys,key) { 51 | for (var x = 0; x < keys.length; x++) { 52 | let tKey = keys[x]; 53 | if (tKey.key == key) { 54 | return tKey.value; 55 | } 56 | } return ''; 57 | } 58 | 59 | var savedData = document.getElementById('ketsu-final-data'); 60 | const parsedJson = JSON.parse(savedData.innerHTML); 61 | const emptyKeyValue = [new KeyValue('', '')]; 62 | 63 | var output = parsedJson.output.videos; 64 | var extraInfo = parsedJson.extra.extraInfo; 65 | var count = getValueFromKey(extraInfo,'count'); 66 | 67 | let link = JSON.parse(document.querySelector('script').innerHTML.replace('/*', '').replace('*/', ''))['grabber'].replace('streamtape.com', 'streamta.pe'); 68 | 69 | if (link.includes('DLL/ANIME') || link.includes('DDL/ANIME')) { 70 | output.rawVideo.push(new RawVideo([new Video('Normal', new ModuleRequest(link, 'get', emptyKeyValue, null))])); 71 | } else if(link.includes('animeworld.biz')) { 72 | output.needsResolver.push(new NeedsResolver('WATCHSB_BROKEN', new ModuleRequest(link, 'get', emptyKeyValue, null))); 73 | } else{ output.needsResolver.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))) } 74 | 75 | var nextRequest = getValueFromKey(extraInfo,''+count); 76 | extraInfo[0].value = ''+(parseInt(count) +1); 77 | 78 | const episodesPageObject = new Chapters(new ModuleRequest(nextRequest, 'get', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], extraInfo), new JavascriptConfig(true, false, ''), new Output( output, null,null)); 79 | 80 | savedData.innerHTML = JSON.stringify(episodesPageObject); -------------------------------------------------------------------------------- /VoirAnime/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function Text(text) { 62 | this.text = text; 63 | } 64 | var output = []; 65 | var savedData = document.getElementById('ketsu-final-data'); 66 | var parsedJson = JSON.parse(savedData.innerHTML); 67 | var emptyKeyValue = [new KeyValue('', '')]; 68 | let newRequest = new ModuleRequest(parsedJson.request.url, 'get', emptyKeyValue, null); 69 | var commands = [new Commands('helperFunction', [new KeyValue('isCustomRequest', 'true'), new KeyValue('name', 'example')])]; 70 | for (const data of parsedJson.global.variables) { 71 | const link = data.value; 72 | if (link.includes('streamtape.com')) { 73 | var fixedLink = link.replace('https://streamtape.com/', 'https://streamta.pe/'); 74 | output.push(new NeedsResolver('', new ModuleRequest(fixedLink, 'get', emptyKeyValue, null))); 75 | } 76 | if (link.includes('videovard.sx') || link.includes('video.sibnet.ru/') || link.includes('yourupload.com') || link.includes('voe') ) { 77 | output.push(new NeedsResolver('', new ModuleRequest(link, 'get', emptyKeyValue, null))); 78 | }else if(link.includes('sbfull') || link.includes('watchsb')) { 79 | output.push(new NeedsResolver('WATCHSB', new ModuleRequest(link, 'get', emptyKeyValue, null))); 80 | } else { 81 | output.push(new NeedsResolver('UNSUPPORTED', new ModuleRequest(link, 'get', emptyKeyValue, null))); 82 | } 83 | } 84 | let emptyExtra = new Extra(commands, emptyKeyValue); 85 | var chaptersObject = new Chapters(newRequest, emptyExtra, new JavascriptConfig(false, false, ''), new Output(new Videos(output, null), null, null), new Extra('', emptyKeyValue)); 86 | var finalJson = JSON.stringify(chaptersObject); 87 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /AnimeSaturne/Chapters/Chapters2.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Output( videos, images, text) { 31 | this.videos = videos; 32 | this.images = images; 33 | this.text = text; 34 | } 35 | 36 | function Videos(needsResolver, rawVideo) { 37 | this.needsResolver = needsResolver; 38 | this.rawVideo = rawVideo; 39 | } 40 | function NeedsResolver(resolverIdentifier, link) { 41 | this.resolverIdentifier = resolverIdentifier; 42 | this.link = link; 43 | } 44 | 45 | function getValueFromKey(keys,key) { 46 | for (var x = 0; x < keys.length; x++) { 47 | let tKey = keys[x]; 48 | if (tKey.key == key) { 49 | return tKey.value; 50 | } 51 | } return ''; 52 | } 53 | 54 | var savedData = document.getElementById('ketsu-final-data'); 55 | const parsedJson = JSON.parse(savedData.innerHTML); 56 | const emptyKeyValue = [new KeyValue('', '')]; 57 | 58 | var nextRequest = ''; 59 | 60 | if (!parsedJson.request.url.includes('server=')) { 61 | var output = new Videos([],[]); 62 | var extraInfo = [new KeyValue('count','0')]; 63 | 64 | var servers = document.querySelectorAll('.dropdown-item'); 65 | for (var x = 0; x div.anisc-info'); 52 | for (var x = 0; x < animeinfo.children.length; x++) { 53 | if (animeinfo.children[x].textContent.trim().includes('Status')) { 54 | var status = animeinfo.children[x].textContent.split('Status:')[1].trim(); 55 | } else if (animeinfo.children[x].textContent.trim().includes('Aired')) { 56 | var airing = animeinfo.children[x].textContent.split('Aired:')[1].trim(); 57 | } 58 | } 59 | var genres = Array.from(document.querySelectorAll('.item.item-list a')).map(g => g.textContent); 60 | var desc = ''; 61 | try { 62 | desc = document.querySelector('div.anis-content > div.anisc-detail > div.film-depion.m-hide > div').textContent.trim(); 63 | } catch (e) { 64 | desc = document.querySelector('.anisc-info').textContent.trim(); 65 | } 66 | var image = document.querySelector('.film-poster img').src; 67 | if (document.querySelector('.anisc-detail h2').textContent != document.querySelector('.anisc-detail h2').dataset.jname) { 68 | var title = document.querySelector('.anisc-detail h2').textContent + '/' + document.querySelector('.anisc-detail h2').dataset.jname 69 | } else { 70 | var title = document.querySelector('.anisc-detail h2').dataset.jname 71 | }; 72 | 73 | console.log(moduleID,image,parsedJson.request,title,desc,genres,type,animeinfo.toString(),episodes); 74 | output = new Output(moduleID,image,parsedJson.request,title,desc,genres,airing,status,episodes); 75 | var json = document.querySelector('#wrapper').dataset.id; 76 | var nextRequest = `https://zoro.to/ajax/v2/episode/list/${json}`; 77 | infoObject = new InfoObject(nextRequest,'get',headers,extraInfo,'', '',output); 78 | var finalJson = JSON.stringify(infoObject); 79 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /AnimeWorld/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | let image = document.querySelector('#mobile-thumbnail-watch > img').src; 53 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 54 | let title = document.querySelector('h2.title').textContent; 55 | let desc = document.querySelector('.desc').textContent.trim(); 56 | 57 | let genres = Array.from(document.querySelectorAll('.info.col-md-9 a')).map(genre => genre.textContent.trim()); 58 | genres.reverse(); 59 | 60 | let statut = genres[0]; 61 | let rating = document.querySelector('dd.rating').textContent.trim(); 62 | let type = document.querySelector('dd').textContent.trim(); 63 | 64 | let episodes = []; 65 | let epsId = []; 66 | for (ep of document.querySelectorAll('#animeId .episode > a')) { 67 | let epId = ep.getAttribute('data-episode-id'); 68 | if (!epsId.includes(epId)) { 69 | let link = `${ep.href}#${epId}`; 70 | if (!link.includes(parsedJson.request.url.split('/play')[0])) { 71 | link = parsedJson.request.url.split('/play')[0]+link; 72 | } 73 | episodes.push(new Chapter('Episodio: '+ep.getAttribute('data-num'), new ModuleRequest(link, 'get', emptyKeyValue, null), false)); 74 | epsId.push(epId); 75 | } 76 | } 77 | 78 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, statut, rating, type, 'Eps: '+episodes.length, episodes)); 79 | 80 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /ScansMangas/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | const imgsHeaders = [new KeyValue('Referer', parsedJson.request.url.split('/manga')[0])]; 52 | 53 | var image = document.querySelector('.bigcover > .ime > img').src; 54 | image = new ModuleRequest(image, 'get', imgsHeaders, null); 55 | var title = document.querySelector('.infox > h1').textContent; 56 | var desc = ''; 57 | try { desc = document.querySelector('.entry-content-single').textContent.trim(); } catch{} 58 | var genres = []; 59 | var sortie = ''; 60 | var statut = ''; 61 | 62 | for (let info of document.querySelector('.spe').querySelectorAll('span')) { 63 | if (info.textContent.includes('Statut')) { statut = info.textContent.split(': ')[1]; } 64 | else if (info.textContent.includes('Sortie')) { sortie = info.textContent.split(': ')[1]; } 65 | else if (info.textContent.includes('Genre')) { genres = Array.from(info.querySelectorAll('a')).map(g => g.textContent); } 66 | } 67 | 68 | var chapters = Array.from(document.querySelectorAll('.lchx.mobile > a')).map(chap => 69 | new Chapter(chap.textContent.trim(), new ModuleRequest(chap.href, 'get', emptyKeyValue, null), false) 70 | ); 71 | chapters.reverse(); 72 | 73 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, sortie, statut, 'Scans: ' + chapters.length, '', chapters)); 74 | 75 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /FrenchStream/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | let image = document.querySelector('.fposter > img').src; 53 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 54 | let title = document.querySelector('#s-title').textContent.trim(); 55 | let desc = Array.from(document.querySelectorAll('.flist.clearfix li')).slice(-1)[0].textContent; 56 | 57 | let genres = Array.from(document.querySelectorAll('.flist-col a')).map(genre => genre.textContent); 58 | 59 | let origin = document.querySelectorAll('.flist-col li')[1].textContent; 60 | let type = parsedJson.request.url.split('stream-')[1].split('/')[0]; 61 | 62 | let episodes = []; 63 | if (type.includes('film')) { episodes.push(new Chapter(title, new ModuleRequest(parsedJson.request.url, 'get', emptyKeyValue, null), false)) } 64 | else { 65 | const versions = ['VF','VOSTFR']; 66 | for (x in versions) { 67 | let version = versions[x]; 68 | for (ep of document.querySelectorAll('.fx-row .elink')[x].querySelectorAll('p')) { 69 | let link = `${parsedJson.request.url}#${ep.getAttribute('onclick').split('\'')[3]}`; 70 | episodes.push(new Chapter(version+' '+ep.textContent, new ModuleRequest(link, 'get', emptyKeyValue, null), false)); 71 | } 72 | } 73 | } 74 | 75 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, origin, '', type, 'Eps: '+ episodes.length, episodes)); 76 | 77 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /StreamingCommunity/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | const type = parsedJson.request.url.includes('.io') ? 'Film':'Serie'; 53 | 54 | var img = parsedJson.request.url.split('/titles')[0].split('/serie')[0] + document.querySelector('.title-wrap').style.backgroundImage.split('\"')[1]; 55 | img = new ModuleRequest(img,'get',emptyKeyValue,null); 56 | var title = document.querySelector('h1.title').textContent; 57 | var desc = document.querySelector('.plot').textContent.trim(); 58 | 59 | var genres = document.querySelector('.category').textContent.trim().split(' '); 60 | var year = document.querySelector('.info-span > .desc').textContent.split(' -')[0].split(': ').slice(-1)[0]; 61 | var time = document.querySelector('.info-span').querySelectorAll('.desc')[1].textContent.split(': ').slice(-1)[0]; 62 | 63 | var episodes = []; 64 | if (type == 'Film') { 65 | var link = document.querySelector('.play-hitzone').href; 66 | episodes.push(new Chapter(title, new ModuleRequest(link, 'get', emptyKeyValue, null), false)); 67 | } else { 68 | for (let ep of document.querySelectorAll('.slider-tile')) { 69 | episodes.push(new Chapter(ep.title, new ModuleRequest(`${parsedJson.request.url}?ep=${encodeURI(ep.title)}`, 'get', emptyKeyValue, null), false)); 70 | } 71 | } 72 | 73 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(img, title, parsedJson.request, desc, genres, year, time, type, 'Eps: '+ episodes.length, episodes)); 74 | 75 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /resolvers/ketsu/Vudeo.json: -------------------------------------------------------------------------------- 1 | { 2 | "resolverInfo": { 3 | "resolverName": "VUDEO", 4 | "nameMatches": [ 5 | "VUDEO" 6 | ], 7 | "developer": "Frizrat", 8 | "moduleID": "18511209", 9 | "resolverVersion": 1.02, 10 | "baseURL": "" 11 | }, 12 | "resolver": [ 13 | { 14 | "request": { 15 | "url": "empty", 16 | "method": "get", 17 | "headers": [ 18 | { 19 | "key": "key", 20 | "value": "value" 21 | } 22 | ], 23 | "httpBody": null 24 | }, 25 | "extra": { 26 | "commands": [ 27 | { 28 | "commandName": "", 29 | "params": [ 30 | { 31 | "key": "", 32 | "value": "" 33 | } 34 | ] 35 | } 36 | ], 37 | "extraInfo": [ 38 | { 39 | "key": "", 40 | "value": "" 41 | } 42 | ] 43 | }, 44 | "javascriptConfig": { 45 | "removeJavascript": true, 46 | "loadInWebView": false, 47 | "javaScript": "function Resolver(request, extra, javascriptConfig, output) { this.request = request; this.extra = extra; this.javascriptConfig = javascriptConfig; this.output = output; } function ModuleRequest(url, method, headers, httpBody) { this.url = url; this.method = method; this.headers = headers; this.httpBody = httpBody; } function Extra(commands, extraInfo) { this.commands = commands; this.extraInfo = extraInfo; } function Commands(commandName, params) { this.commandName = commandName; this.params = params; } function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { this.removeJavascript = removeJavascript; this.loadInWebView = loadInWebView; this.javaScript = javaScript; } function KeyValue(key, value) { this.key = key; this.value = value; } function Output(video) { this.video = video; } function Video(videoQuality, videoLink) { this.videoQuality = videoQuality; this.videoLink = videoLink; } var savedData = document.getElementById('ketsu-final-data'); var parsedJson = JSON.parse(savedData.innerHTML); var emptyKeyValue = [new KeyValue('Referer', parsedJson.request.url)]; var videos = []; var scriptText = document.body.innerText; var link = scriptText.match(/(http.*?\\.mp4+)/gm)[1]; var videoQuality = 'Normal'; videos.push(new Video(videoQuality, new ModuleRequest(link, 'get', emptyKeyValue, null))); let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue); var chaptersObject = new Resolver(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(videos)); var finalJson = JSON.stringify(chaptersObject); savedData.innerHTML = finalJson" 48 | }, 49 | "output": { 50 | "moduleID": "", 51 | "video": [ 52 | { 53 | "videoQuality": "720", 54 | "videoLink": { 55 | "url": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", 56 | "method": "get", 57 | "headers": [ 58 | { 59 | "key": "key", 60 | "value": "value" 61 | } 62 | ], 63 | "httpBody": null 64 | } 65 | } 66 | ] 67 | } 68 | } 69 | ] 70 | } -------------------------------------------------------------------------------- /Livre1/Info/Info.html: -------------------------------------------------------------------------------- 1 | 2 | 86 | 87 | -------------------------------------------------------------------------------- /FrenchAnime/Info/Info.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 99 | -------------------------------------------------------------------------------- /resolvers/ketsu/Turboviplay.json: -------------------------------------------------------------------------------- 1 | { 2 | "resolverInfo": { 3 | "resolverName": "TUKIPASTI", 4 | "nameMatches": [ 5 | "TUKIPASTI" 6 | ], 7 | "developer": "Danyspb4ever", 8 | "moduleID": "896431213546", 9 | "resolverVersion": 1.115, 10 | "baseURL": "https://turboviplay.com/" 11 | }, 12 | "resolver": [ 13 | { 14 | "request": { 15 | "url": "", 16 | "method": "get", 17 | "headers": [ 18 | { 19 | "key": "key", 20 | "value": "value" 21 | } 22 | ], 23 | "httpBody": null 24 | }, 25 | "extra": { 26 | "commands": [ 27 | { 28 | "commandName": "", 29 | "params": [ 30 | { 31 | "key": "", 32 | "value": "" 33 | } 34 | ] 35 | } 36 | ], 37 | "extraInfo": [ 38 | { 39 | "key": "", 40 | "value": "" 41 | } 42 | ] 43 | }, 44 | "javascriptConfig": { 45 | "removeJavascript": false, 46 | "loadInWebView": false, 47 | "javaScript": "function Resolver(request, extra, javascriptConfig, output) { this.request = request; this.extra = extra; this.javascriptConfig = javascriptConfig; this.output = output;}function ModuleRequest(url, method, headers, httpBody) { this.url = url; this.method = method; this.headers = headers; this.httpBody = httpBody;}function Extra(commands, extraInfo) { this.commands = commands; this.extraInfo = extraInfo;}function Commands(commandName, params) { this.commandName = commandName; this.params = params;}function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { this.removeJavascript = removeJavascript; this.loadInWebView = loadInWebView; this.javaScript = javaScript;}function KeyValue(key, value) { this.key = key; this.value = value;}function Output(video) { this.video = video;}function Video(videoQuality, videoLink) { this.videoQuality = videoQuality; this.videoLink = videoLink;}var savedData = document.getElementById('ketsu-final-data');var parsedJson = JSON.parse(savedData.innerHTML);var emptyKeyValue = [new KeyValue('Referer', parsedJson.request.url)];var videos = [];var scriptText = document.querySelectorAll('.row script');for (scr of scriptText){ var dtas = scr.textContent.replaceAll('\\n','');}var link = dtas.match(/(https.+.m3u8+)/gm)[0];videos.push(new Video('normal', new ModuleRequest(link, 'get', emptyKeyValue, null)));let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue);var chaptersObject = new Resolver(new ModuleRequest('', '', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(videos));var finalJson = JSON.stringify(chaptersObject);savedData.innerHTML = finalJson" 48 | }, 49 | "output": { 50 | "moduleID": "", 51 | "video": [ 52 | { 53 | "videoQuality": "720", 54 | "videoLink": { 55 | "url": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", 56 | "method": "get", 57 | "headers": [ 58 | { 59 | "key": "key", 60 | "value": "value" 61 | } 62 | ], 63 | "httpBody": null 64 | } 65 | } 66 | ] 67 | } 68 | } 69 | ] 70 | } -------------------------------------------------------------------------------- /resolvers/ketsu/Yodbox.json: -------------------------------------------------------------------------------- 1 | { 2 | "resolverInfo": { 3 | "resolverName": "YODBOX", 4 | "nameMatches": [ 5 | "YODBOX" 6 | ], 7 | "developer": "Danyspb4ever", 8 | "moduleID": "452136985", 9 | "resolverVersion": 1.012, 10 | "baseURL": "https://yodbox.com/" 11 | }, 12 | "resolver": [ 13 | { 14 | "request": { 15 | "url": "", 16 | "method": "get", 17 | "headers": [ 18 | { 19 | "key": "key", 20 | "value": "value" 21 | } 22 | ], 23 | "httpBody": null 24 | }, 25 | "extra": { 26 | "commands": [ 27 | { 28 | "commandName": "", 29 | "params": [ 30 | { 31 | "key": "", 32 | "value": "" 33 | } 34 | ] 35 | } 36 | ], 37 | "extraInfo": [ 38 | { 39 | "key": "", 40 | "value": "" 41 | } 42 | ] 43 | }, 44 | "javascriptConfig": { 45 | "removeJavascript": false, 46 | "loadInWebView": false, 47 | "javaScript": "function Resolver(request, extra, javascriptConfig, output) { this.request = request; this.extra = extra; this.javascriptConfig = javascriptConfig; this.output = output;}function ModuleRequest(url, method, headers, httpBody) { this.url = url; this.method = method; this.headers = headers; this.httpBody = httpBody;}function Extra(commands, extraInfo) { this.commands = commands; this.extraInfo = extraInfo;}function Commands(commandName, params) { this.commandName = commandName; this.params = params;}function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { this.removeJavascript = removeJavascript; this.loadInWebView = loadInWebView; this.javaScript = javaScript;}function KeyValue(key, value) { this.key = key; this.value = value;}function Output(video) { this.video = video;}function Video(videoQuality, videoLink) { this.videoQuality = videoQuality; this.videoLink = videoLink;}function getNext(match, array) { for (var x = 0; x < array.length; x++) { let mMatch = array[x]; if (mMatch.includes(match)) { return array[x + 1]; } }}var savedData = document.getElementById('ketsu-final-data');var parsedJson = JSON.parse(savedData.innerHTML);var emptyKeyValue = [new KeyValue('Referer', parsedJson.request.url)];var videos = [];var link = document.querySelector('video source').src;videos.push(new Video('normal', new ModuleRequest(link, 'get', emptyKeyValue, null)));let emptyExtra = new Extra([new Commands('', emptyKeyValue)], emptyKeyValue);var chaptersObject = new Resolver(new ModuleRequest('', 'get', emptyKeyValue, null), emptyExtra, new JavascriptConfig(false, false, ''), new Output(videos));var finalJson = JSON.stringify(chaptersObject);savedData.innerHTML = finalJson;" 48 | }, 49 | "output": { 50 | "moduleID": "", 51 | "video": [ 52 | { 53 | "videoQuality": "720", 54 | "videoLink": { 55 | "url": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", 56 | "method": "get", 57 | "headers": [ 58 | { 59 | "key": "key", 60 | "value": "value" 61 | } 62 | ], 63 | "httpBody": null 64 | } 65 | } 66 | ] 67 | } 68 | } 69 | ] 70 | } -------------------------------------------------------------------------------- /VostAnimes/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | var image = document.querySelector('.Image img').src; 53 | if (!image.includes('https:')) { image = 'https:'+image; } 54 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 55 | var title = document.querySelector('title').textContent.split(' Anime en')[0]; 56 | var desc = document.querySelector('.Depion').textContent.split('(function')[0].trim(); 57 | 58 | var genres = []; 59 | try { genres = Array.from(document.querySelectorAll('a[rel=\"category tag')).map(g => g.textContent); } catch{} 60 | 61 | var time = ''; 62 | try { time = document.querySelector('.Time').textContent; } catch{} 63 | var year = ''; 64 | try { year = document.querySelector('.Date').textContent; } catch{} 65 | 66 | var episodes = []; 67 | var type ='Anime'; 68 | if (parsedJson.request.url.includes('film')) { 69 | type = 'Film'; 70 | episodes.push(new Chapter(title, new ModuleRequest(parsedJson.request.url, 'get', emptyKeyValue, null), false)); 71 | } else { 72 | for (saison of document.querySelectorAll('.Wdgt.AABox')) { 73 | var nbSaison = Array.from(saison.querySelector('.Title').textContent.split(' ')).map(s => s.trim()).join(' ').replaceAll(' ', ''); 74 | for (episode of saison.querySelectorAll('tr')) { 75 | var nbEp = episode.querySelector('.Num').textContent; 76 | var epLink = episode.querySelector('a').href; 77 | episodes.push(new Chapter(nbSaison+' Épisode '+nbEp, new ModuleRequest(epLink, 'get', emptyKeyValue, null), false)); 78 | } 79 | } 80 | } 81 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, time, year, type, 'Eps: '+ episodes.length, episodes)); 82 | 83 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /ADKami/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | function ModuleRequest(url, method, headers, httpBody) { 8 | this.url = url; 9 | this.method = method; 10 | this.headers = headers; 11 | this.httpBody = httpBody; 12 | } 13 | function Extra(commands, extraInfo) { 14 | this.commands = commands; 15 | this.extraInfo = extraInfo; 16 | } 17 | function Commands(commandName, params) { 18 | this.commandName = commandName; 19 | this.params = params; 20 | } 21 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 22 | this.removeJavascript = removeJavascript; 23 | this.loadInWebView = loadInWebView; 24 | this.javaScript = javaScript; 25 | } 26 | function KeyValue(key, value) { 27 | this.key = key; 28 | this.value = value; 29 | } 30 | function Chapter(chapName, link,openInWebView) { 31 | this.chapName = chapName; 32 | this.link = link; 33 | this.openInWebView = openInWebView; 34 | } 35 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 36 | this.image = image; 37 | this.link = link; 38 | this.title = title; 39 | this.description = description; 40 | this.genres = genres; 41 | this.field1 = field1; 42 | this.field2 = field2; 43 | this.field3 = field3; 44 | this.field4 = field4; 45 | this.chapters = chapters; 46 | } 47 | 48 | var savedData = document.getElementById('ketsu-final-data'); 49 | const parsedJson = JSON.parse(savedData.innerHTML); 50 | const emptyKeyValue = [new KeyValue('', '')]; 51 | 52 | var image = document.querySelector('.col-12.m-hidden').src; 53 | image = new ModuleRequest(image,'get',emptyKeyValue,null); 54 | var title = document.querySelectorAll('[itemprop=\"name\"]')[1].textContent; 55 | var desc = document.querySelector('.depion').textContent.trim(); 56 | var genres = Array.from(document.querySelectorAll('.info [itemprop=\"genre\"]')).map(genre => genre.textContent); 57 | 58 | const infos = document.querySelectorAll('.anime-information-icon > span'); 59 | var statut = infos[2].title; 60 | var type = infos[1].title; 61 | 62 | var episodes = []; 63 | var eps = {}; 64 | var seasons = document.querySelectorAll('.saison-container'); 65 | const isSeason0 = seasons.length < 1; 66 | if (isSeason0) { seasons = document.querySelectorAll('#nav-episode ul'); } 67 | 68 | for (let season of seasons) { 69 | if (season.querySelectorAll('ul').length > 1 || isSeason0) { 70 | var seasonName = season.querySelector('.saison').textContent; 71 | for (let epi of season.querySelectorAll('a')) { 72 | var lang = epi.textContent.split(' ').slice(-1); 73 | var ep = new Chapter(`${epi.textContent} ${seasonName}`, new ModuleRequest(epi.href.replace('www.', ''), 'get', emptyKeyValue, null), false); 74 | try { 75 | eps[lang].push(ep); 76 | continue; 77 | } catch {} 78 | eps[lang] = [ep]; 79 | } 80 | } 81 | } 82 | for (lang in eps) { episodes.push.apply(episodes, eps[lang]); } 83 | 84 | const infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, statut, type, 'Vers:' + Object.keys(eps).length, 'Eps: '+ episodes.length, episodes)); 85 | 86 | savedData.innerHTML = JSON.stringify(infoPageObject); -------------------------------------------------------------------------------- /resolvers/katsu/stape_katsu.js: -------------------------------------------------------------------------------- 1 | function Header(key, value) { 2 | this.key = key; 3 | this.value = value; 4 | } 5 | 6 | function ExtraInfo(value) { 7 | this.value = value; 8 | } 9 | 10 | function Output(link, moduleID, headers, quality) { 11 | this.quality = quality; 12 | this.link = link; 13 | this.moduleID = moduleID; 14 | this.headers = headers 15 | } 16 | 17 | function ResolverLogic(request, method, userAgent, referer, headers, extraInfo, loadJavascript, javaScript, output) { 18 | this.request = request; 19 | this.method = method; 20 | this.userAgent = userAgent; 21 | this.referer = referer; 22 | this.headers = headers; 23 | this.extraInfo = extraInfo; 24 | this.loadJavascript = loadJavascript; 25 | this.javaScript = javaScript; 26 | this.output = output; 27 | } 28 | var moduleID = '23049823094'; 29 | var resolverLogic; 30 | var output = []; 31 | var requestHeaders = []; 32 | var extraInfo = []; 33 | var savedData = document.getElementById('katsu-final-data'); 34 | var parsedJson = JSON.parse(savedData.innerHTML); 35 | var videoHeaders = []; 36 | videoHeaders.push(new Header('', '')); 37 | 38 | let playerRegex = /innerHTML\s=\s*"([^"]+)"\s?\+\s?''\+\s?\('([^']+)/; 39 | let body = document.body.innerText; 40 | let playerMatch = playerRegex.exec(body); 41 | 42 | if (playerMatch) { 43 | let matchedLink = playerMatch[2]; 44 | let index = matchedLink.indexOf('?'); 45 | if (index == -1){ 46 | try{ 47 | firstpart = playerMatch[1].split('=')[1].replace('\"',''); 48 | secondpart = playerMatch[2].substr(5); 49 | secondtry = playerMatch[2].substr(4); 50 | let videoLink = 'https://streamta.pe/get_video?id=' + firstpart + secondpart + '&stream=1'; 51 | let fixedLink = 'https://streamta.pe/get_video?id=' + firstpart + secondtry + '&stream=1'; 52 | console.log(videoLink,fixedLink); 53 | output.push(new Output(fixedLink, moduleID, videoHeaders, 'Thai guy was here'));; 54 | output.push(new Output(videoLink, moduleID, videoHeaders, 'Normal')); 55 | }catch(e){} 56 | try{ 57 | if (matchedLink.match(/^=/)){ 58 | let videoLink = 'https://streamta.pe/get_video?id=' + matchedLink.substr(5) + '&stream=1'; 59 | if (videoLink.includes('id==')) { 60 | videoLink = videoLink.replace('id==', 'id='); 61 | } 62 | console.log(videoLink); 63 | output.push(new Output(videoLink, moduleID, videoHeaders, 'Normal')); 64 | } 65 | }catch(e){} 66 | try{ 67 | if(matchedLink.match(/id=/)) { 68 | split = matchedLink.split('id='); 69 | let videoLink = 'https://streamta.pe/get_video?id=' + split[1] + '&stream=1'; 70 | console.log(videoLink); 71 | output.push(new Output(videoLink, moduleID, videoHeaders, 'Normal'));; 72 | } 73 | }catch(e){} 74 | try{ 75 | if (matchedLink.match(/^([a-zA-Z]+d=)/)){ 76 | split = matchedLink.split('d='); 77 | let videoLink = 'https://streamta.pe/get_video?id=' + split[1] + '&stream=1'; 78 | console.log(videoLink); 79 | output.push(new Output(videoLink, moduleID, videoHeaders, 'Normal')); 80 | } 81 | } 82 | catch(e){} 83 | }else{ 84 | let videoLink = `https://streamta.pe/get_video${matchedLink.substr(index)}&stream=1`; 85 | console.log(videoLink); 86 | output.push(new Output(videoLink, moduleID, videoHeaders, 'Normal')); 87 | } 88 | } 89 | 90 | requestHeaders.push(new Header('', '')); 91 | extraInfo.push(new ExtraInfo(parsedJson.request)); 92 | resolverLogic = new ResolverLogic('', 'get', '', '', requestHeaders, extraInfo, '', '', output); 93 | var finalJson = JSON.stringify(resolverLogic);savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /Zoro.to/Info/Info1.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Chapter(chapName, link, openInWebView) { 37 | this.chapName = chapName; 38 | this.link = link; 39 | this.openInWebView = openInWebView; 40 | } 41 | 42 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 43 | this.image = image; 44 | this.link = link; 45 | this.title = title; 46 | this.description = description; 47 | this.genres = genres; 48 | this.field1 = field1; 49 | this.field2 = field2; 50 | this.field3 = field3; 51 | this.field4 = field4; 52 | this.chapters = chapters; 53 | } 54 | var savedData = document.getElementById('ketsu-final-data'); 55 | var parsedJson = JSON.parse(savedData.innerText); 56 | <<<<<<< HEAD 57 | let emptyKeyValue = [new KeyValue('Referer', 'https://zoro.to'), new KeyValue('X-Requested-With', 'XMLHttpRequest')]; 58 | ======= 59 | let emptyKeyValue = [new KeyValue('Referer', 'https://zoro.to')]; 60 | >>>>>>> 53b1fea (init linux) 61 | var image = parsedJson.output.image; 62 | var title = parsedJson.output.title; 63 | var desc = parsedJson.output.description; 64 | var genres = parsedJson.output.genres; 65 | var type = ''; 66 | var episodes = []; 67 | var script = document.querySelector('script').innerText.replace('*/', '').replace('/*', ''); 68 | var html = JSON.parse(script).html; 69 | var parser = new DOMParser(); 70 | var doc = parser.parseFromString(html, 'text/html'); 71 | var animes = doc.querySelectorAll('.ss-list a'); 72 | for (var x = 0; x < animes.length; x++) { 73 | var anime = animes[x]; 74 | var link = 'https://zoro.to/ajax/v2/episode/servers?episodeId=' + anime.dataset.id; 75 | <<<<<<< HEAD 76 | var name = anime.title; 77 | if (!name.includes('Episode')) { 78 | name = `${x+1} : ` + name; 79 | } 80 | ======= 81 | var name = `${x+1} : ` + anime.title; 82 | >>>>>>> 53b1fea (init linux) 83 | let chapter = new Chapter(name, new ModuleRequest(link, 'get', emptyKeyValue, null), false); 84 | episodes.push(chapter); 85 | } 86 | parsedJson.request.url = parsedJson.output.link.url; 87 | <<<<<<< HEAD 88 | parsedJson.request.headers = [new KeyValue('', '')]; 89 | ======= 90 | >>>>>>> 53b1fea (init linux) 91 | let infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, parsedJson.request, desc, genres, parsedJson.output.field1, parsedJson.output.field2, type, 'Eps: ' + episodes.length, episodes)); 92 | var finalJson = JSON.stringify(infoPageObject); 93 | savedData.innerText = finalJson; -------------------------------------------------------------------------------- /Asura/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Chapter(chapName, link, openInWebView) { 37 | this.chapName = chapName; 38 | this.link = link; 39 | this.openInWebView = openInWebView; 40 | } 41 | 42 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 43 | this.image = image; 44 | this.link = link; 45 | this.title = title; 46 | this.description = description; 47 | this.genres = genres; 48 | this.field1 = field1; 49 | this.field2 = field2; 50 | this.field3 = field3; 51 | this.field4 = field4; 52 | this.chapters = chapters; 53 | } 54 | 55 | function getStuff(array, match) { 56 | for (var x = 0; x < array.length; x++) { 57 | let data = array[x].innerText; 58 | if (data.includes(match)) { 59 | return data.replace(match, '').trim(); 60 | } 61 | } 62 | } 63 | 64 | function getHtmlStuff(array, match) { 65 | for (var x = 0; x < array.length; x++) { 66 | let data = array[x].innerText; 67 | if (data.includes(match)) { 68 | return array[x]; 69 | } 70 | } 71 | } 72 | var savedData = document.getElementById('ketsu-final-data'); 73 | var parsedJson = JSON.parse(savedData.innerHTML); 74 | let emptyKeyValue = [new KeyValue('', '')]; 75 | var episodes = []; 76 | var type = document.querySelector('div.tsinfo > div:nth-child(2) a').textContent; 77 | var status = document.querySelector('div.tsinfo > div:nth-child(1) i').textContent; 78 | var genres = []; 79 | genres = Array.from(document.querySelectorAll('.wd-full a')).map(g => g.textContent); 80 | var desc; 81 | try { 82 | desc = document.querySelector('[itemprop=\"depion\"]').textContent.replaceAll('\n','').trim(); 83 | } catch{} 84 | var title = document.querySelector('.entry-title').textContent.trim(); 85 | var image = document.querySelector('.thumb img').src; 86 | image = new ModuleRequest(image, 'get', emptyKeyValue, null); 87 | var chapters = document.querySelector('.clstyle').querySelectorAll('li'); 88 | for (var i = chapters.length - 1; i >= 0; i--) { 89 | var element = chapters[i]; 90 | var fixedLink = element.querySelector('a').href; 91 | let chapter = new Chapter('Chapter ' + (chapters.length - i), new ModuleRequest(fixedLink, 'get', 92 | emptyKeyValue, null), false); 93 | episodes.push(chapter); 94 | } 95 | let infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', 96 | emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, 97 | parsedJson.request, desc, genres, status, type, '', 'Chapters : ' + episodes.length, episodes)); 98 | var finalJson = JSON.stringify(infoPageObject); 99 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /CrunchyScan/Info/Info1.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Chapter(chapName, link, openInWebView) { 37 | this.chapName = chapName; 38 | this.link = link; 39 | this.openInWebView = openInWebView; 40 | } 41 | 42 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 43 | this.image = image; 44 | this.link = link; 45 | this.title = title; 46 | this.description = description; 47 | this.genres = genres; 48 | this.field1 = field1; 49 | this.field2 = field2; 50 | this.field3 = field3; 51 | this.field4 = field4; 52 | this.chapters = chapters; 53 | } 54 | 55 | var savedData = document.getElementById('ketsu-final-data'); 56 | var parsedJson = JSON.parse(savedData.innerHTML); 57 | let emptyKeyValue = [new KeyValue('', '')]; 58 | var episodes = []; 59 | let content = document.querySelectorAll('.post-content_item'); 60 | 61 | let status = ''; 62 | let type = ''; 63 | for (let x = 0; x < content.length; x++) { 64 | let data = content[x].querySelector('h5').textContent.trim(); 65 | if (data.includes('Type')) { 66 | type = content[x].querySelector('.summary-content').textContent.trim(); 67 | } 68 | if (data.includes('Statut')) { 69 | status = content[x].querySelector('.summary-content').textContent.trim().replace('🟢','').replace('🔴','').replace('🟡',''); 70 | } 71 | } 72 | 73 | let genres = []; 74 | genres = Array.from(document.querySelectorAll('.genres-content a')).map(g => g.textContent); 75 | let desc = ''; 76 | desc = document.querySelector("div.manga-excerpt"); 77 | if (desc) { 78 | desc = desc.textContent.trim().replaceAll('\n',''); 79 | } else { 80 | desc = '' 81 | } 82 | 83 | let title = document.querySelector('.post-title h1').textContent.trim(); 84 | let image = document.querySelector('.summary_image a img').dataset.src; 85 | image = new ModuleRequest(image, 'get', emptyKeyValue, null); 86 | let nextRequestHeaders = [new KeyValue('Referer', parsedJson.request.url), new KeyValue('x-requested-with', 'XMLHttpRequest')]; 87 | nextRequestHeaders.push(new KeyValue('accept', '*/*')); 88 | nextRequestHeaders.push(new KeyValue('accept-encoding', 'gzip, deflate, br')); 89 | nextRequestHeaders.push(new KeyValue('accept-language', 'fr,fr-FR;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,pt;q=0.5')); 90 | let nextRequest = new ModuleRequest(parsedJson.request.url + 'ajax/chapters', 'POST', nextRequestHeaders, null); 91 | 92 | let infoPageObject = new Info(nextRequest, new Extra([new Commands('',emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, true, ''), new Output(image, title,parsedJson.request, desc, genres, status, type, 'empty', 'Chapters : ' + episodes.length, episodes)); 93 | var finalJson = JSON.stringify(infoPageObject); 94 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /IAnime/Chapters/Chapter1.js: -------------------------------------------------------------------------------- 1 | function Chapters(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Output(videos, images, text) { 37 | this.videos = videos; 38 | this.images = images; 39 | this.text = text; 40 | } 41 | 42 | function Videos(needsResolver, rawVideo) { 43 | this.needsResolver = needsResolver; 44 | this.rawVideo = rawVideo; 45 | } 46 | 47 | function NeedsResolver(resolverIdentifier, link) { 48 | this.resolverIdentifier = resolverIdentifier; 49 | this.link = link; 50 | } 51 | 52 | function RawVideo(video) { 53 | this.video = video; 54 | } 55 | 56 | function Video(videoQuality, videoLink) { 57 | this.videoQuality = videoQuality; 58 | this.videoLink = videoLink; 59 | } 60 | 61 | function getFile(url) { 62 | var xhr = new XMLHttpRequest(); 63 | xhr.open('post', url, false); 64 | xhr.send(); 65 | return xhr.responseText; 66 | } 67 | 68 | function Text(text) { 69 | this.text = text; 70 | } 71 | var output = []; 72 | var extraInfo = [new KeyValue('count', '1')]; 73 | var savedData = document.getElementById('ketsu-final-data'); 74 | var parsedJson = JSON.parse(savedData.innerHTML); 75 | var emptyKeyValue = [new KeyValue('Referer', parsedJson.request.url), new KeyValue('Content-Type', 'application/x-www-form-urlencoded')]; 76 | var urlencoded = new URLSearchParams(); 77 | urlencoded.append('submit.x', '0'); 78 | urlencoded.append('submit.y', '0'); 79 | var divservers = document.querySelectorAll('#content > div > div.post-wrapper > center:nth-child(1) > div'); 80 | for (var x = 1; x < divservers.length; x++) { 81 | var server = divservers[x]; 82 | if (server.className == 'spoiler' || server.className == 'spoil' || server.className == 'comic info') { 83 | continue; 84 | } 85 | var scripts = server.querySelector('p[type=\"text/javap\"]'); 86 | if (scripts.innerHTML.includes('unescape')) { 87 | var test = scripts.innerHTML.replace('document.write(', '').replace(/\\);$/gm, ''); 88 | var html = eval(test); 89 | var parser = new DOMParser(); 90 | var doc = parser.parseFromString(html, 'text/html'); 91 | var link = doc.querySelector('iframe').src; 92 | } 93 | if (x == 1) { 94 | var nextRequest = link 95 | } else { 96 | extraInfo.push(new KeyValue(`${x}`, `${link}`)); 97 | } 98 | console.log(link); 99 | } 100 | let emptyExtra = new Extra([new Commands('', emptyKeyValue)], extraInfo); 101 | var chaptersObject = new Chapters(new ModuleRequest(nextRequest, 'post', emptyKeyValue, urlencoded.toString()), emptyExtra, new JavascriptConfig(true, false, ''), new Output(new Videos(output, null), null, null)); 102 | var finalJson = JSON.stringify(chaptersObject); 103 | savedData.innerHTML = finalJson; -------------------------------------------------------------------------------- /CrunchyScan/Chapters/Chapters.js: -------------------------------------------------------------------------------- 1 | try { 2 | 3 | /* JAVASCRIPT STARTS */ 4 | function Chapters(request, extra, javascriptConfig, output) { 5 | 6 | this.request = request; 7 | this.extra = extra; 8 | this.javascriptConfig = javascriptConfig; 9 | this.output = output; 10 | 11 | } 12 | function ModuleRequest(url, method, headers, httpBody) { 13 | 14 | this.url = url; 15 | this.method = method; 16 | this.headers = headers; 17 | this.httpBody = httpBody; 18 | 19 | } 20 | function Extra(commands, extraInfo) { 21 | 22 | this.commands = commands; 23 | this.extraInfo = extraInfo; 24 | 25 | } 26 | function Commands(commandName, params) { 27 | 28 | this.commandName = commandName; 29 | this.params = params; 30 | 31 | } 32 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 33 | 34 | this.removeJavascript = removeJavascript; 35 | this.loadInWebView = loadInWebView; 36 | this.javaScript = javaScript; 37 | 38 | } 39 | function KeyValue(key, value) { 40 | 41 | this.key = key; 42 | this.value = value; 43 | 44 | } 45 | function Output(videos, images, text) { 46 | 47 | this.videos = videos; 48 | this.images = images; 49 | this.text = text; 50 | 51 | } 52 | function Videos(needsResolver, rawVideo) { 53 | 54 | this.needsResolver = needsResolver; 55 | this.rawVideo = rawVideo; 56 | 57 | } 58 | function NeedsResolver(resolverIdentifier, link) { 59 | 60 | this.resolverIdentifier = resolverIdentifier; 61 | this.link = link; 62 | 63 | } 64 | function RawVideo(video) { 65 | 66 | this.video = video; 67 | 68 | } 69 | function Video(videoQuality, videoLink) { 70 | 71 | this.videoQuality = videoQuality; 72 | this.videoLink = videoLink; 73 | 74 | } 75 | function Text(text) { 76 | 77 | this.text = text; 78 | 79 | } 80 | var output = []; 81 | var savedData = document.getElementById('ketsu-final-data'); 82 | var parsedJson = JSON.parse(savedData.innerHTML); 83 | var emptyKeyValue = [new KeyValue('Referer', parsedJson.request.url)]; 84 | let newRequest = new ModuleRequest(parsedJson.request.url, 'get', emptyKeyValue, null); 85 | var commands = [new Commands('helperFunction', [new KeyValue('isCustomRequest', 'true'), new KeyValue('name', 'example')])]; 86 | if(parsedJson.global.variables.length != 0) { 87 | 88 | 89 | let images = JSON.parse(parsedJson.global.variables[1].value); 90 | 91 | for (let image of images) { 92 | let link = atob(image); 93 | output.push(new ModuleRequest(link, 'get', emptyKeyValue, null)); 94 | 95 | } 96 | } 97 | let emptyExtra = new Extra(commands, emptyKeyValue); 98 | var chaptersObject = new Chapters(newRequest, emptyExtra, new JavascriptConfig(false, false, ''), new Output(null, output, null), new Extra('', emptyKeyValue)); 99 | var finalJso= JSON.stringify(chaptersObject); 100 | nsavedData.innerHTML = finalJson; 101 | /* JAVASCRIPT ENDS */ 102 | } catch (e) { 103 | 104 | console.error(e.message); 105 | 106 | if (typeof KETSU_ASYNC !== 'undefined') { 107 | 108 | window.webkit.messageHandlers.EXECUTE_KETSU_ASYNC.postMessage(''); 109 | 110 | } 111 | 112 | } 113 | -------------------------------------------------------------------------------- /Senmanga/Info/Info.js: -------------------------------------------------------------------------------- 1 | function Info(request, extra, javascriptConfig, output) { 2 | this.request = request; 3 | this.extra = extra; 4 | this.javascriptConfig = javascriptConfig; 5 | this.output = output; 6 | } 7 | 8 | function ModuleRequest(url, method, headers, httpBody) { 9 | this.url = url; 10 | this.method = method; 11 | this.headers = headers; 12 | this.httpBody = httpBody; 13 | } 14 | 15 | function Extra(commands, extraInfo) { 16 | this.commands = commands; 17 | this.extraInfo = extraInfo; 18 | } 19 | 20 | function Commands(commandName, params) { 21 | this.commandName = commandName; 22 | this.params = params; 23 | } 24 | 25 | function JavascriptConfig(removeJavascript, loadInWebView, javaScript) { 26 | this.removeJavascript = removeJavascript; 27 | this.loadInWebView = loadInWebView; 28 | this.javaScript = javaScript; 29 | } 30 | 31 | function KeyValue(key, value) { 32 | this.key = key; 33 | this.value = value; 34 | } 35 | 36 | function Chapter(chapName, link, openInWebView) { 37 | this.chapName = chapName; 38 | this.link = link; 39 | this.openInWebView = openInWebView; 40 | } 41 | 42 | function Output(image, title, link, description, genres, field1, field2, field3, field4, chapters) { 43 | this.image = image; 44 | this.link = link; 45 | this.title = title; 46 | this.description = description; 47 | this.genres = genres; 48 | this.field1 = field1; 49 | this.field2 = field2; 50 | this.field3 = field3; 51 | this.field4 = field4; 52 | this.chapters = chapters; 53 | } 54 | 55 | function getStuff(array, match) { 56 | for (var x = 0; x < array.length; x++) { 57 | let data = array[x].innerText; 58 | if (data.includes(match)) { 59 | return data.replace(match, '').trim(); 60 | } 61 | } 62 | } 63 | 64 | function getHtmlStuff(array, match) { 65 | for (var x = 0; x < array.length; x++) { 66 | let data = array[x].innerText; 67 | if (data.includes(match)) { 68 | return array[x]; 69 | } 70 | } 71 | } 72 | var savedData = document.getElementById('ketsu-final-data'); 73 | var parsedJson = JSON.parse(savedData.innerHTML); 74 | let emptyKeyValue = [new KeyValue('', '')]; 75 | var episodes = []; 76 | var type = 'Manga'; 77 | try { 78 | type = document.querySelector('div.info > div:nth-child(5)').textContent.trim(); 79 | } catch {} 80 | var status = document.querySelector('div.info > div:nth-child(2)').textContent.trim(); 81 | var genres = []; 82 | genres = Array.from(document.querySelectorAll('div.info > div:nth-child(1) a')).map(g => g.textContent); 83 | var desc = ''; 84 | try { 85 | desc = document.querySelector('div.series-info > div.summary').textContent.trim(); 86 | } catch {} 87 | var title = document.querySelector('.cover img').alt; 88 | var image = document.querySelector('.cover img').src; 89 | image = new ModuleRequest(image, 'get', emptyKeyValue, null); 90 | var chapters = document.querySelectorAll('.chapter-list li'); 91 | for (var x = 0; x < chapters.length; x++) { 92 | let link = chapters[x].querySelector('a').href; 93 | let name = chapters[x].querySelector('a').textContent; 94 | let chapter = new Chapter(name, new ModuleRequest(link, 'get', emptyKeyValue, null), false); 95 | episodes.push(chapter); 96 | } 97 | let infoPageObject = new Info(new ModuleRequest('', '', emptyKeyValue, null), new Extra([new Commands('', 98 | emptyKeyValue)], emptyKeyValue), new JavascriptConfig(false, false, ''), new Output(image, title, 99 | parsedJson.request, desc, genres, status, '', type, 'Chapters : ' + episodes.length, episodes)); 100 | var finalJson = JSON.stringify(infoPageObject); 101 | savedData.innerHTML = finalJson; --------------------------------------------------------------------------------