Add tbib.org and fix categories not working on some gelbooru-likes

pull/2/head
neobooru 2020-01-04 16:49:59 +01:00
parent df5b1d9fc1
commit 8cd94d53b6
1 changed files with 17 additions and 13 deletions

View File

@ -7,6 +7,8 @@ enum Version {
v025, // 0.2.5
}
type CategoryMap = Record<string, TagCategory>;
export default class Gelbooru implements ScrapeEngine {
name = "gelbooru";
@ -14,7 +16,8 @@ export default class Gelbooru implements ScrapeEngine {
return (
url.host == "safebooru.org" ||
url.host == "gelbooru.com" ||
url.host == "rule34.xxx"
url.host == "rule34.xxx" ||
url.host == "tbib.org"
);
}
@ -24,6 +27,7 @@ export default class Gelbooru implements ScrapeEngine {
switch (document.location.host) {
case "safebooru.org":
case "rule34.xxx":
case "tbib.org":
version = Version.v020;
break;
case "gelbooru.com":
@ -111,20 +115,20 @@ export default class Gelbooru implements ScrapeEngine {
let category: TagCategory | undefined;
switch (el.className) {
case "tag-type-copyright":
category = "copyright";
break;
case "tag-type-character":
category = "character";
break;
case "tag-type-artist":
category = "artist";
break;
case "tag-type-metadata":
category = "meta";
const classNameToCategoryMap: CategoryMap = {
"tag-type-copyright": "copyright",
"tag-type-character": "character",
"tag-type-artist": "artist",
"tag-type-metadata": "meta"
};
// Loop over all classes, because some websites use multiple. E.g. `class="tag tag-type-copyright"`
for (const className of el.classList) {
if (classNameToCategoryMap[className]) {
category = classNameToCategoryMap[className];
break;
}
}
let tag = new ScrapedTag(tagName, category);
post.tags.push(tag);