parent
38ad7b1156
commit
1575a7a2f1
|
|
@ -26,21 +26,23 @@ export default class Bluesky extends ScrapeEngineBase {
|
||||||
|
|
||||||
scrapeDocument(document: Document): ScrapeResult {
|
scrapeDocument(document: Document): ScrapeResult {
|
||||||
const result = new ScrapeResult(this.name);
|
const result = new ScrapeResult(this.name);
|
||||||
|
|
||||||
|
type Candidate = { el: Element; post: ScrapedPost };
|
||||||
|
const candidates: Candidate[] = [];
|
||||||
|
|
||||||
|
// Images
|
||||||
const imgEls = Array.from<HTMLImageElement>(document.querySelectorAll("div > img"));
|
const imgEls = Array.from<HTMLImageElement>(document.querySelectorAll("div > img"));
|
||||||
|
|
||||||
let els = imgEls.filter((x) => x.src.indexOf("feed_fullsize") != -1);
|
let els = imgEls.filter((x) => x.src.indexOf("feed_fullsize") != -1);
|
||||||
|
|
||||||
// Only add the 'normal' feed elements if no post is in fullscreen.
|
// Only add the 'normal' feed elements if no post is in fullscreen.
|
||||||
if (els.length == 0) {
|
if (els.length == 0) {
|
||||||
this.log("Post is not fullscreen.");
|
this.log("Post is not fullscreen.");
|
||||||
els = imgEls.filter((x) => x.src.indexOf("feed") != -1);
|
els = imgEls.filter((x) => x.src.indexOf("feed") != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const el of els) {
|
for (const el of els) {
|
||||||
const post = new ScrapedPost();
|
const post = new ScrapedPost();
|
||||||
post.pageUrl = document.location.href;
|
post.pageUrl = document.location.href;
|
||||||
post.contentUrl = getFullSizeImg(el.src);
|
post.contentUrl = getFullSizeImg(el.src);
|
||||||
result.tryAddPost(post);
|
candidates.push({ el, post });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Videos
|
// Videos
|
||||||
|
|
@ -56,14 +58,22 @@ export default class Bluesky extends ScrapeEngineBase {
|
||||||
this.log(`Could not parse poster URL: ${poster}`);
|
this.log(`Could not parse poster URL: ${poster}`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const post = new ScrapedPost();
|
const post = new ScrapedPost();
|
||||||
post.pageUrl = document.location.href;
|
post.pageUrl = document.location.href;
|
||||||
post.contentUrl = blobUrl;
|
post.contentUrl = blobUrl;
|
||||||
post.contentType = "video";
|
post.contentType = "video";
|
||||||
result.tryAddPost(post);
|
candidates.push({ el: v, post });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
candidates.sort((a, b) => {
|
||||||
|
const pos = a.el.compareDocumentPosition(b.el);
|
||||||
|
if (pos & Node.DOCUMENT_POSITION_FOLLOWING) return -1;
|
||||||
|
if (pos & Node.DOCUMENT_POSITION_PRECEDING) return 1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
for(const c of candidates) result.tryAddPost(c.post);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue