diff --git a/package.json b/package.json index ea8a342..7d0b189 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "neo-scraper", - "version": "0.5.6", + "version": "0.5.7", "description": "Scrape a booru-like post object from the DOM.", "type": "module", "main": "dist/index.js", diff --git a/src/engines/Danbooru.test.ts b/src/engines/Danbooru.test.ts index 0dd3694..98fbabd 100644 --- a/src/engines/Danbooru.test.ts +++ b/src/engines/Danbooru.test.ts @@ -34,3 +34,15 @@ test("get danbooru.donmai.us post 4924490", async () => { expect(res.posts[0].notes).toHaveLength(17); expect(res.posts[0]).toHaveNote("Nya~nya ♪"); }); + +test("get danbooru.donmai.us post 4530532", async () => { + const pageUrl = "https://danbooru.donmai.us/posts/4530532"; + const res = await scrapeUrl(pageUrl); + expect(res.posts.length).toBe(1); + expect(res.posts[0].rating).toBe("sketchy"); + expect(res.posts[0]).toHaveTag("chainsaw_man", "copyright"); + expect(res.posts[0]).toHaveResolution([1105, 1803]); + expect(res.posts[0].pageUrl).toBe(pageUrl); + expect(res.posts[0].contentUrl).toBe( + "https://cdn.donmai.us/original/fc/e3/__makima_power_and_reze_chainsaw_man_drawn_by_hews__fce35c7a8515a00c566b288a591fd5f9.png"); +}); diff --git a/src/engines/Danbooru.ts b/src/engines/Danbooru.ts index a95ea5f..e3547b0 100644 --- a/src/engines/Danbooru.ts +++ b/src/engines/Danbooru.ts @@ -55,6 +55,7 @@ export default class Danbooru extends ScrapeEngineBase { case "safe": post.rating = "safe"; break; + case "sensitive": case "questionable": post.rating = "sketchy"; break; diff --git a/src/engines/Gelbooru.ts b/src/engines/Gelbooru.ts index 0dc6040..056811b 100644 --- a/src/engines/Gelbooru.ts +++ b/src/engines/Gelbooru.ts @@ -127,7 +127,9 @@ export default class Gelbooru extends ScrapeEngineBase { // Some
don't actually contain a name. // E.g. the sub-headers ("Copyright", "Character", "General", "Meta") on rule34.xxx if (nameElements.length > 0) { - tagName = el.getElementsByTagName("a")[0].innerText; + // Get the last element, because rule34.xxx also adds a "?" link in front. + const linkEls = Array.from(el.getElementsByTagName("a")); + tagName = linkEls[linkEls.length - 1].innerText; } else { continue; } diff --git a/src/engines/Shimmie2.test.ts b/src/engines/Shimmie2.test.ts index e3e1a9a..02584e3 100644 --- a/src/engines/Shimmie2.test.ts +++ b/src/engines/Shimmie2.test.ts @@ -4,6 +4,7 @@ test("get rule34.paheal.net post 2505982", async () => { const pageUrl = "https://rule34.paheal.net/post/view/2505982"; // Somewhat sketchy const res = await scrapeUrl(pageUrl); expect(res.posts.length).toBe(1); + expect(res.posts[0]).toHaveTag("kai'sa"); expect(res.posts[0].pageUrl).toBe(pageUrl); expect(res.posts[0]).toHaveSource( "http://law-zilla.tumblr.com/post/171249285285/finished-subdraw-37-kaisa-from-league-of-legends"