Add basic bluesky support (image only)
parent
ad2d1fe585
commit
ed9580ea58
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "neo-scraper",
|
||||
"version": "0.9.3",
|
||||
"version": "0.10.0",
|
||||
"description": "Scrape a booru-like post object from the DOM.",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ export default class NeoScraper {
|
|||
if (useDefaultEngines) {
|
||||
this.engines.push(
|
||||
new engines.AnimePictures(),
|
||||
new engines.Bluesky(),
|
||||
new engines.Danbooru(),
|
||||
new engines.e621(),
|
||||
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 Bluesky } from "./Bluesky.js";
|
||||
export { default as Danbooru } from "./Danbooru.js";
|
||||
export { default as e621 } from "./e621.js";
|
||||
export { default as Ehentai } from "./Ehentai.js";
|
||||
|
|
|
|||
Loading…
Reference in New Issue