moved the userscripts to deno flavoured typescript
Dieser Commit ist enthalten in:
Ursprung
e6c7b2f207
Commit
2fa0a3e164
|
@ -2,4 +2,5 @@
|
|||
"adblock.packageManager": "yarn",
|
||||
"adblock.useExternalAglintPackages": true,
|
||||
"adblock.enableAglint": true,
|
||||
"deno.config": "deno.json",
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"dom.asynciterable",
|
||||
"deno.ns"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"version": "3",
|
||||
"remote": {
|
||||
"https://deno.land/x/denoflate@1.2.1/mod.ts": "f5628e44b80b3d80ed525afa2ba0f12408e3849db817d47a883b801f9ce69dd6",
|
||||
"https://deno.land/x/denoflate@1.2.1/pkg/denoflate.js": "b9f9ad9457d3f12f28b1fb35c555f57443427f74decb403113d67364e4f2caf4",
|
||||
"https://deno.land/x/denoflate@1.2.1/pkg/denoflate_bg.wasm.js": "d581956245407a2115a3d7e8d85a9641c032940a8e810acbd59ca86afd34d44d",
|
||||
"https://deno.land/x/esbuild@v0.20.2/mod.js": "67c608ee283233f5d0faa322b887356857c547a8e6a00981f798b2cd38e02436"
|
||||
},
|
||||
"workspace": {
|
||||
"packageJson": {
|
||||
"dependencies": [
|
||||
"npm:@adguard/aglint@^2.0.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,129 @@
|
|||
import * as esbuild from "https://deno.land/x/esbuild@v0.20.2/mod.js";
|
||||
|
||||
class userjs {
|
||||
name: string;
|
||||
namespace: string;
|
||||
version: string;
|
||||
description: string;
|
||||
author: string[];
|
||||
source: string;
|
||||
run_at: string;
|
||||
grant: string[];
|
||||
match: string[];
|
||||
constructor(
|
||||
name: string,
|
||||
namespace: string,
|
||||
version: string,
|
||||
description: string,
|
||||
author: string[],
|
||||
source: string,
|
||||
run_at:
|
||||
| "document-start"
|
||||
| "document-body"
|
||||
| "document-end"
|
||||
| "document-idle"
|
||||
| "context-menu" = "document-end",
|
||||
grant: string[] = [],
|
||||
match: string[],
|
||||
) {
|
||||
this.name = name;
|
||||
this.namespace = namespace;
|
||||
this.version = version;
|
||||
this.description = description;
|
||||
this.author = author;
|
||||
this.source = source;
|
||||
this.run_at = run_at;
|
||||
this.grant = grant;
|
||||
this.match = match;
|
||||
}
|
||||
toString(): string {
|
||||
const b = ["// ==UserScript=="];
|
||||
b.push(`// @name ${this.name}`);
|
||||
b.push(`// @version ${this.version}`);
|
||||
b.push(`// @source ${this.source}`);
|
||||
b.push(`// @description ${this.description}`);
|
||||
for (const author of this.author) {
|
||||
b.push(`// @author ${author}`);
|
||||
}
|
||||
b.push(`// @run-at ${this.run_at}`);
|
||||
if (this.grant.length == 0) {
|
||||
b.push(`// @grant none`);
|
||||
}else {
|
||||
for (const grant of this.grant)
|
||||
b.push(`// @grant ${grant}`);
|
||||
}
|
||||
for (const match of this.match) {
|
||||
b.push(`// @match ${match}`);
|
||||
}
|
||||
b.push("// ==/UserScript==");
|
||||
return b.join("\n");
|
||||
}
|
||||
}
|
||||
|
||||
async function userscript_build(prefix: string, metadata: userjs) {
|
||||
console.log(`Building ${prefix}`);
|
||||
await esbuild.build({
|
||||
outfile: `userscripts/${prefix}.user.js`,
|
||||
bundle: true,
|
||||
charset: "utf8",
|
||||
banner: {
|
||||
"js": metadata.toString(),
|
||||
},
|
||||
entryPoints: [`userscripts/${prefix}.ts`],
|
||||
minify: true,
|
||||
platform: "browser",
|
||||
target: "es2022",
|
||||
});
|
||||
}
|
||||
|
||||
await userscript_build(
|
||||
"girlgenius",
|
||||
new userjs(
|
||||
"Girlgenius https fix",
|
||||
"https://sebastian-tobie.de/",
|
||||
"0.2",
|
||||
"converts http to https urls",
|
||||
["Sebastian Tobie"],
|
||||
"https://gitea.sebastian-tobie.de/sebastian/cookiedb/raw/branch/stable/userscripts/girlgenius.user.js",
|
||||
"document-body",
|
||||
[],
|
||||
[],
|
||||
),
|
||||
);
|
||||
await userscript_build(
|
||||
"kobo_easy_archive",
|
||||
new userjs(
|
||||
"Kobo library easy archive",
|
||||
"https://sebastian-tobie.de/",
|
||||
"0.1",
|
||||
"Helps with archiving kobo books",
|
||||
["Sebastian Tobie"],
|
||||
"https://gitea.sebastian-tobie.de/sebastian/cookiedb/raw/branch/stable/userscripts/kobo_easy_archive.user.js",
|
||||
"document-idle",
|
||||
[],
|
||||
[
|
||||
"https://www.kobo.com/de/de/library/books",
|
||||
"https://www.kobo.com/de/de/library/books?*",
|
||||
],
|
||||
),
|
||||
);
|
||||
await userscript_build(
|
||||
"thalia-filter",
|
||||
new userjs(
|
||||
"Thalia Filter",
|
||||
"https://sebastian-tobie.de/",
|
||||
"0.2",
|
||||
"Filters out unwanted books",
|
||||
["Sebastian Tobie"],
|
||||
"https://gitea.sebastian-tobie.de/sebastian/cookiedb/raw/branch/stable/userscripts/girlgenius.user.js",
|
||||
"document-end",
|
||||
["GM_registerMenuCommand"],
|
||||
[
|
||||
"https://www.thalia.de/kategorie/*",
|
||||
"https://www.thalia.de/kategorie/*/",
|
||||
"https://www.thalia.de/kategorie/*?*",
|
||||
"https://www.thalia.de/ebook/kategorien/*/neuheiten",
|
||||
],
|
||||
),
|
||||
);
|
||||
Deno.exit();
|
|
@ -1,50 +0,0 @@
|
|||
// ==UserScript==
|
||||
// @name Girlgenius https fix
|
||||
// @namespace https://sebastian-tobie.de/
|
||||
// @version 0.1
|
||||
// @description converts http to https urls
|
||||
// @author Sebastian Tobie
|
||||
// @source https://gitea.sebastian-tobie.de/sebastian/cookiedb/raw/branch/stable/userscripts/girlgenius.js
|
||||
// @run-at document-body
|
||||
// @match https://www.girlgeniusonline.com/*
|
||||
// @grant none
|
||||
// @unwrap
|
||||
// ==/UserScript==
|
||||
function replacehttp(url) {
|
||||
let u = new URL(url);
|
||||
console.debug(u.protocol, "http:" == u.protocol)
|
||||
if(u.protocol == "http:") {
|
||||
let old = url.href;
|
||||
u.protocol = "https:";
|
||||
console.debug("fixed url",old,u.href);
|
||||
}
|
||||
return u.toString();
|
||||
}
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
console.debug("http replacer loaded");
|
||||
let elements = document.getElementsByTagName("a");
|
||||
console.info("found", elements.length, "links");
|
||||
for (let i = 0 ; i<elements.length;i++) {
|
||||
let el = elements[i];
|
||||
console.debug("checking", el)
|
||||
if(el.href == undefined || el.href == "") {
|
||||
continue
|
||||
}
|
||||
el.href = replacehttp(el.href);
|
||||
console.debug("edited", el)
|
||||
}
|
||||
elements = document.getElementsByTagName("img");
|
||||
console.info("found", elements.length, "images");
|
||||
for (let i = 0 ; i<elements.length;i++) {
|
||||
let el = elements[i];
|
||||
console.debug("checking", el)
|
||||
if(el.src == undefined || el.src == "") {
|
||||
console.debug("href == undefined", el.src == undefined , "src == ''",el.src == "")
|
||||
continue
|
||||
}
|
||||
el.src = replacehttp(el.src);
|
||||
console.debug("edited", el)
|
||||
}
|
||||
})();
|
|
@ -0,0 +1,40 @@
|
|||
function replacehttp(url: string) {
|
||||
const u = new URL(url);
|
||||
console.debug(u.protocol, "http:" == u.protocol);
|
||||
if (u.protocol == "http:") {
|
||||
const old = u.href;
|
||||
u.protocol = "https:";
|
||||
console.debug("fixed url", old, u.href);
|
||||
}
|
||||
return u.toString();
|
||||
}
|
||||
|
||||
console.debug("http replacer loaded");
|
||||
const elements = document.getElementsByTagName("a");
|
||||
console.info("found", elements.length, "links");
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
const el = elements[i];
|
||||
console.debug("checking", el);
|
||||
if (el.href == undefined || el.href == "") {
|
||||
continue;
|
||||
}
|
||||
el.href = replacehttp(el.href);
|
||||
console.debug("edited", el);
|
||||
}
|
||||
const ielements = document.getElementsByTagName("img");
|
||||
console.info("found", ielements.length, "images");
|
||||
for (let i = 0; i < ielements.length; i++) {
|
||||
const el = ielements[i];
|
||||
console.debug("checking", el);
|
||||
if (el.src == undefined || el.src == "") {
|
||||
console.debug(
|
||||
"href == undefined",
|
||||
el.src == undefined,
|
||||
"src == ''",
|
||||
el.src == "",
|
||||
);
|
||||
continue;
|
||||
}
|
||||
el.src = replacehttp(el.src);
|
||||
console.debug("edited", el);
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
// ==UserScript==
|
||||
// @name Girlgenius https fix
|
||||
// @version 0.2
|
||||
// @source https://gitea.sebastian-tobie.de/sebastian/cookiedb/raw/branch/stable/userscripts/girlgenius.user.js
|
||||
// @description converts http to https urls
|
||||
// @author Sebastian Tobie
|
||||
// @run-at document-body
|
||||
// @grant none
|
||||
// ==/UserScript==
|
||||
(()=>{function c(o){let e=new URL(o);if(console.debug(e.protocol,e.protocol=="http:"),e.protocol=="http:"){let l=e.href;e.protocol="https:",console.debug("fixed url",l,e.href)}return e.toString()}console.debug("http replacer loaded");var n=document.getElementsByTagName("a");console.info("found",n.length,"links");for(let o=0;o<n.length;o++){let e=n[o];console.debug("checking",e),!(e.href==null||e.href=="")&&(e.href=c(e.href),console.debug("edited",e))}var t=document.getElementsByTagName("img");console.info("found",t.length,"images");for(let o=0;o<t.length;o++){let e=t[o];if(console.debug("checking",e),e.src==null||e.src==""){console.debug("href == undefined",e.src==null,"src == ''",e.src=="");continue}e.src=c(e.src),console.debug("edited",e)}})();
|
|
@ -1,35 +0,0 @@
|
|||
// ==UserScript==
|
||||
// @name Kobo library easy archive
|
||||
// @namespace https://sebastian-tobie.de/
|
||||
// @version 0.1
|
||||
// @description Helps with archiving kobo books
|
||||
// @author Sebastian Tobie
|
||||
// @source https://gitea.sebastian-tobie.de/sebastian/cookiedb/raw/branch/stable/userscripts/kobo_easy_archive.js
|
||||
// @run-at document-idle
|
||||
// @match https://www.kobo.com/de/de/library/books
|
||||
// @match https://www.kobo.com/de/de/library/books?*
|
||||
// @icon https://www.google.com/s2/favicons?sz=64&domain=kobo.com
|
||||
// @grant none
|
||||
// @unwrap
|
||||
// ==/UserScript==
|
||||
(function() {
|
||||
'use strict';
|
||||
let he = document.getElementsByClassName("headers-end")[0];
|
||||
let header = document.createElement("span");
|
||||
header.classList.add("heading");
|
||||
header.classList.add("more-actions");
|
||||
he.appendChild(header);
|
||||
let library_list = document.getElementsByClassName("library-items")[0];
|
||||
for(let c = 0; c < library_list.childElementCount; c++) {
|
||||
let child = library_list.children[c];
|
||||
let item_bar = child.getElementsByClassName("item-bar")[0];
|
||||
if(!child.classList.contains("pre-order")){
|
||||
let button = child.getElementsByClassName("remove-from-library")[0];
|
||||
let parent = button.parentNode
|
||||
parent.removeChild(button);
|
||||
item_bar.appendChild(button);
|
||||
} else {
|
||||
item_bar.appendChild(document.createElement("span"));
|
||||
}
|
||||
}
|
||||
})();
|
|
@ -0,0 +1,18 @@
|
|||
const he = document.getElementsByClassName("headers-end")[0];
|
||||
const header = document.createElement("span");
|
||||
header.classList.add("heading");
|
||||
header.classList.add("more-actions");
|
||||
he.appendChild(header);
|
||||
const library_list = document.getElementsByClassName("library-items")[0];
|
||||
for (let c = 0; c < library_list.childElementCount; c++) {
|
||||
const child = library_list.children[c];
|
||||
const item_bar = child.getElementsByClassName("item-bar")[0];
|
||||
if (!child.classList.contains("pre-order")) {
|
||||
const button = child.getElementsByClassName("remove-from-library")[0];
|
||||
const parent = button.parentNode!;
|
||||
parent.removeChild(button);
|
||||
item_bar.appendChild(button);
|
||||
} else {
|
||||
item_bar.appendChild(document.createElement("span"));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// ==UserScript==
|
||||
// @name Kobo library easy archive
|
||||
// @version 0.1
|
||||
// @source https://gitea.sebastian-tobie.de/sebastian/cookiedb/raw/branch/stable/userscripts/kobo_easy_archive.user.js
|
||||
// @description Helps with archiving kobo books
|
||||
// @author Sebastian Tobie
|
||||
// @run-at document-idle
|
||||
// @grant none
|
||||
// @match https://www.kobo.com/de/de/library/books
|
||||
// @match https://www.kobo.com/de/de/library/books?*
|
||||
// ==/UserScript==
|
||||
(()=>{var d=document.getElementsByClassName("headers-end")[0],n=document.createElement("span");n.classList.add("heading");n.classList.add("more-actions");d.appendChild(n);var l=document.getElementsByClassName("library-items")[0];for(let e=0;e<l.childElementCount;e++){let t=l.children[e],a=t.getElementsByClassName("item-bar")[0];if(t.classList.contains("pre-order"))a.appendChild(document.createElement("span"));else{let s=t.getElementsByClassName("remove-from-library")[0];s.parentNode.removeChild(s),a.appendChild(s)}}})();
|
|
@ -0,0 +1,45 @@
|
|||
import {trie} from "./thalia_lib.ts"
|
||||
|
||||
function titel(book: HTMLElement) {
|
||||
return book.getElementsByClassName(
|
||||
"element-text-standard-black tm-artikeldetails__titel",
|
||||
)[0].innerHTML.toLowerCase();
|
||||
}
|
||||
|
||||
function clean() {
|
||||
const books: HTMLCollectionOf<HTMLElement> = document.getElementsByClassName(
|
||||
"tm-produktliste__eintrag artikel",
|
||||
);
|
||||
const not_found: string[] = [];
|
||||
let removed = 0;
|
||||
for (const book of books) {
|
||||
if (book === null) continue;
|
||||
if (book.style.display == "none") {
|
||||
continue;
|
||||
}
|
||||
if (trie.startsWith(titel(book))) {
|
||||
book.style.display = "none";
|
||||
removed += 1;
|
||||
} else not_found.push(titel(book));
|
||||
}
|
||||
const artikel = document.getElementsByClassName("sichtbare-artikel");
|
||||
if (artikel.length != 0) {
|
||||
artikel[0].innerHTML = not_found.length.toString();
|
||||
}
|
||||
console.debug(artikel);
|
||||
console.debug("titel nicht in der blacklist:", not_found);
|
||||
}
|
||||
|
||||
async function run() {
|
||||
GM_registerMenuCommand("Clean results", function (event: Event) {
|
||||
console.debug(event);
|
||||
event.preventDefault();
|
||||
clean();
|
||||
}, "c");
|
||||
const button = document.getElementsByTagName("suche-button-mehr-laden");
|
||||
if (button.length != 0) {
|
||||
for (let i = 0; i < 10; i++) await button[0].load();
|
||||
}
|
||||
clean();
|
||||
}
|
||||
run();
|
Dateidiff unterdrückt, weil mindestens eine Zeile zu lang ist
|
@ -0,0 +1,278 @@
|
|||
class TrieNode {
|
||||
children: Map<string, TrieNode>;
|
||||
isEndOfWord: boolean;
|
||||
constructor() {
|
||||
this.children = new Map<string, TrieNode>();
|
||||
this.isEndOfWord = false;
|
||||
}
|
||||
}
|
||||
|
||||
class Trie {
|
||||
root: TrieNode;
|
||||
constructor(inputs: string[] = []) {
|
||||
this.root = new TrieNode();
|
||||
for (const item of inputs) {
|
||||
this.insert(item.toLowerCase());
|
||||
}
|
||||
}
|
||||
|
||||
insert(word: string) {
|
||||
let node = this.root;
|
||||
for (const char of word) {
|
||||
if (!node.children.has(char)) {
|
||||
node.children.set(char, new TrieNode());
|
||||
}
|
||||
node = node.children.get(char)!;
|
||||
}
|
||||
node.isEndOfWord = true;
|
||||
}
|
||||
|
||||
startsWith(word: string) {
|
||||
let node = this.root;
|
||||
for (const char of word) {
|
||||
if (!node.children.has(char)) {
|
||||
return false;
|
||||
}
|
||||
node = node.children.get(char)!;
|
||||
if (node.isEndOfWord) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
const trie = new Trie([
|
||||
"#drcl",
|
||||
"10 erste male",
|
||||
"A Couple of Cuckoos",
|
||||
"Aristia",
|
||||
"Asterix",
|
||||
"Café Liebe",
|
||||
"Charon",
|
||||
"Cheering up in the underworld",
|
||||
"Colette beschließt zu sterben",
|
||||
"D.N. Angel",
|
||||
"Definitely Love",
|
||||
"Der Sommer",
|
||||
"Die mit dem Teufel tanzt",
|
||||
"Ein Zeichen der Zuneigung",
|
||||
"Elainas Reise",
|
||||
"Galerie einer neuen Galaxis",
|
||||
"Gespielte Liebe",
|
||||
"Go! Go! Loser Ranger",
|
||||
"Hallo, ich bin eine Hexe und mein Schwarm wünscht sich einen Liebestrank von mir",
|
||||
"Himmelblaue Zeiten",
|
||||
"How to train a newbie",
|
||||
"Ich habe 300 Jahre lang",
|
||||
"Ich täuschte Amnesie vor, um meinen Verlobten loszuwerden",
|
||||
"Kleiner Tai & Omi Sue",
|
||||
"Kreative Kurzaufgaben",
|
||||
"Lone Wolf & Cub Master",
|
||||
"Manga! Manga!",
|
||||
"Merit und der ägyptische",
|
||||
"Murciélago",
|
||||
"Peter Grill",
|
||||
"Real Account",
|
||||
"Red Apple",
|
||||
"Ripper",
|
||||
"Solo Leveling Roman Taschenbuchausgabe",
|
||||
"Star Wars",
|
||||
"Tokyo Aliens",
|
||||
"Touring after the apocalypse",
|
||||
"Wiedergeburt in Maydare",
|
||||
"Yuzu",
|
||||
"ab sofort schwester!",
|
||||
"adou",
|
||||
"after school",
|
||||
"alice in borderland",
|
||||
"alice und die halbbluthexe",
|
||||
"all you want, whenever you want",
|
||||
"and then i know love",
|
||||
"and then i love you",
|
||||
"angels of death",
|
||||
"anyway, i love you",
|
||||
"arifureta - der kampf zurück in meine welt",
|
||||
"assassin's creed",
|
||||
"auf und ab",
|
||||
"bakemonogatari",
|
||||
"barakamon",
|
||||
"beast after school",
|
||||
"birds of shangri-la",
|
||||
"bitter playmate",
|
||||
"black butler",
|
||||
"bloody bites at boarding school",
|
||||
"blue eye lie",
|
||||
"boruto",
|
||||
"canis",
|
||||
"crossing borders",
|
||||
"dahlia lässt den kopf nicht hängen",
|
||||
"das band der unterwelt",
|
||||
"das kind, das ich in meinen träumen sah",
|
||||
"das magische baumhaus",
|
||||
"das opfer des",
|
||||
"dead mount death play",
|
||||
"deadlock",
|
||||
"der dieb und das biest",
|
||||
"der fuchs und der kleine tanuki",
|
||||
"der geschmack nach melone",
|
||||
"der stärkste held mit dem mal der schwäche",
|
||||
"die for me, my darling",
|
||||
"die hexe und das biest",
|
||||
"die hexe und ihr drache",
|
||||
"die hohe",
|
||||
"die nacht hinter dem dreiecksfenster",
|
||||
"die rachsüchtige",
|
||||
"die schokohexe ",
|
||||
"die walkinder",
|
||||
"don't lie to me",
|
||||
"dr. stone",
|
||||
"drachenregen",
|
||||
"edens zero",
|
||||
"ein bund fürs leben",
|
||||
"ein landei aus dem dorf vor dem letzten dungeon sucht das abenteuer in der stadt",
|
||||
"elden ring kapitel",
|
||||
"elden ring",
|
||||
"eliana",
|
||||
"enceladus - die graphic novel",
|
||||
"fairy tale",
|
||||
"fangirl",
|
||||
"final fantasy",
|
||||
"fire force",
|
||||
"flüster mir ein liebeslied",
|
||||
"folge den wolken nach nord-nordwest",
|
||||
"from bottom to lover",
|
||||
"gachiakuta",
|
||||
"gannibal",
|
||||
"gestatten, ich bin's",
|
||||
"goblin slayer!",
|
||||
"harahara sensei",
|
||||
"hiraeth",
|
||||
"human extinction",
|
||||
"hunter x hunter",
|
||||
"i hear the sunspot",
|
||||
"i'll be here for you",
|
||||
"im schatten der fabriken",
|
||||
"in/spectre",
|
||||
"insomniacs",
|
||||
"interviews mit Monster-mädchen",
|
||||
"is love the answer?",
|
||||
"isekai office worker",
|
||||
"jagaaan",
|
||||
"jealousy blinds love",
|
||||
"just mary",
|
||||
"kabukicho bad trip",
|
||||
"kijin gentosho",
|
||||
"konosuba",
|
||||
"küsse",
|
||||
"lass meine hand nicht los",
|
||||
"lieb mich noch, bevor du stirbst",
|
||||
"liebe ist (k)ein wettkampf",
|
||||
"lightning and romance",
|
||||
"lonely castle in the mirror",
|
||||
"love escape",
|
||||
"lullaby of the dawn",
|
||||
"madk",
|
||||
"manga love story",
|
||||
"meet me online",
|
||||
"megumi & tsugumi",
|
||||
"mein isekai-leben",
|
||||
"mein nachbar",
|
||||
"mein untergang",
|
||||
"meine arbeit als missionar in einer gottlosen welt",
|
||||
"meine wiedergeburt als schleim in einer anderen welt",
|
||||
"midnight scandal sex",
|
||||
"minato's coin laundry",
|
||||
"mord im dekagon",
|
||||
"moriarty the patriot",
|
||||
"mpd psycho",
|
||||
"mr nobody",
|
||||
"mushoku tensei",
|
||||
"my dear curse-casting vampiress",
|
||||
"my genderless boyfriend",
|
||||
"my hero academia",
|
||||
"my love will last till the end of time",
|
||||
"my senpai is annoying",
|
||||
"my younger senpai",
|
||||
"nana & kaoru: das letzte jahr",
|
||||
"never love an egoist",
|
||||
"nina - die sterne sind dein schicksal",
|
||||
"one piece",
|
||||
"one room dog",
|
||||
"overlord",
|
||||
"penelope",
|
||||
"planetes perfect edition",
|
||||
"planetes perfect",
|
||||
"pluto: urasawa x tezuka",
|
||||
"prince never give up",
|
||||
"prinz freya",
|
||||
"radiant",
|
||||
"raeliana",
|
||||
"re:zero",
|
||||
"relife",
|
||||
"religiöse helden",
|
||||
"rental girlfriend",
|
||||
"requiem of the rose king",
|
||||
"rosen blood",
|
||||
"saint seiya",
|
||||
"saraba, yoki hi",
|
||||
"saturn return",
|
||||
"schattenprinzessin des drachenkönigs",
|
||||
"servamp, band",
|
||||
"seven deadly sins",
|
||||
"severed",
|
||||
"shaman king",
|
||||
"shojo nach der schule",
|
||||
"silent witch",
|
||||
"skip & loafer",
|
||||
"skip beat",
|
||||
"sleeping dead",
|
||||
"smoking behind the supermarket",
|
||||
"stigmata",
|
||||
"sugar apple fairy tale",
|
||||
"suzume",
|
||||
"sword art online",
|
||||
"takopi und die sache mit dem glück",
|
||||
"teach me how to kill you",
|
||||
"the beast must die",
|
||||
"the beginning after the end",
|
||||
"the dungeon of black company",
|
||||
"the elusive samurai",
|
||||
"the gender of mona lisa",
|
||||
"the guy she was interested in wasn't a guy at all",
|
||||
"the heroic legend of arslan",
|
||||
"the ichinose family's deadly sins",
|
||||
"the male bride",
|
||||
"the man who shattered my world",
|
||||
"the most distant love",
|
||||
"the reprise",
|
||||
"the saint's magic power is omnipotent",
|
||||
"threesome",
|
||||
"to the abandoned sacred beasts",
|
||||
"tokyo revengers",
|
||||
"tokyopop",
|
||||
"too close to love",
|
||||
"touching your night",
|
||||
"twin star",
|
||||
"undead unluck",
|
||||
"under ninja",
|
||||
"unlimited lust",
|
||||
"vampire knight",
|
||||
"veil",
|
||||
"verbotene allianz",
|
||||
"verliebt in mehr als dein gesicht",
|
||||
"victoria's electric coffin",
|
||||
"vinland saga",
|
||||
"virgin road",
|
||||
"white light ceremony",
|
||||
"wind breaker",
|
||||
"wise man",
|
||||
"wistoria",
|
||||
"wolverine",
|
||||
"yakuza angel",
|
||||
"yona",
|
||||
"you're my cutie!",
|
||||
"your sweet scent",
|
||||
"yuzu - die kleine tierärztin",
|
||||
"zombie hide sex",
|
||||
]);
|
||||
export { trie };
|
Laden…
In neuem Issue referenzieren