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