Add basic bluesky support (image only)
parent
ad2d1fe585
commit
ed9580ea58
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "neo-scraper",
|
"name": "neo-scraper",
|
||||||
"version": "0.9.3",
|
"version": "0.10.0",
|
||||||
"description": "Scrape a booru-like post object from the DOM.",
|
"description": "Scrape a booru-like post object from the DOM.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ export default class NeoScraper {
|
||||||
if (useDefaultEngines) {
|
if (useDefaultEngines) {
|
||||||
this.engines.push(
|
this.engines.push(
|
||||||
new engines.AnimePictures(),
|
new engines.AnimePictures(),
|
||||||
|
new engines.Bluesky(),
|
||||||
new engines.Danbooru(),
|
new engines.Danbooru(),
|
||||||
new engines.e621(),
|
new engines.e621(),
|
||||||
new engines.Ehentai(),
|
new engines.Ehentai(),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
import { ScrapeEngineBase, ScrapeResult, ScrapedPost, ScrapeEngineFeature } from "../ScrapeEngine.js";
|
||||||
|
|
||||||
|
function getFullSizeImg(link: string) {
|
||||||
|
return link.replace("/feed_thumbnail/", "/feed_fullsize/");
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class Bluesky extends ScrapeEngineBase {
|
||||||
|
name = "bluesky";
|
||||||
|
features: ScrapeEngineFeature[] = ["content"];
|
||||||
|
notes = [];
|
||||||
|
supportedHosts = ["bsky.app"];
|
||||||
|
|
||||||
|
scrapeDocument(document: Document): ScrapeResult {
|
||||||
|
const result = new ScrapeResult(this.name);
|
||||||
|
const imgEls = Array.from<HTMLImageElement>(document.querySelectorAll("div > img"));
|
||||||
|
|
||||||
|
let els = imgEls.filter((x) => x.src.indexOf("feed_fullsize") != -1);
|
||||||
|
|
||||||
|
// Only add the 'normal' feed elements if no post is in fullscreen.
|
||||||
|
if (els.length == 0) {
|
||||||
|
this.log("Post is not fullscreen.");
|
||||||
|
els = imgEls.filter((x) => x.src.indexOf("feed") != -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const el of els) {
|
||||||
|
const post = new ScrapedPost();
|
||||||
|
post.pageUrl = document.location.href;
|
||||||
|
post.contentUrl = getFullSizeImg(el.src);
|
||||||
|
result.tryAddPost(post);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
export { default as AnimePictures } from "./AnimePictures.js";
|
export { default as AnimePictures } from "./AnimePictures.js";
|
||||||
|
export { default as Bluesky } from "./Bluesky.js";
|
||||||
export { default as Danbooru } from "./Danbooru.js";
|
export { default as Danbooru } from "./Danbooru.js";
|
||||||
export { default as e621 } from "./e621.js";
|
export { default as e621 } from "./e621.js";
|
||||||
export { default as Ehentai } from "./Ehentai.js";
|
export { default as Ehentai } from "./Ehentai.js";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue