mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2025-11-08 10:36:32 +00:00
Compare commits
1 Commits
browserste
...
restock-mo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c6418f265 |
@@ -32,7 +32,19 @@ function isItemInStock() {
|
|||||||
'zur zeit nicht an lager',
|
'zur zeit nicht an lager',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
const negateOutOfStockRegexs = [
|
||||||
|
'[0-9] in stock'
|
||||||
|
]
|
||||||
|
var negateOutOfStockRegexs_r = [];
|
||||||
|
for (let i = 0; i < negateOutOfStockRegexs.length; i++) {
|
||||||
|
negateOutOfStockRegexs_r.push(new RegExp(negateOutOfStockRegexs[0], 'g'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const elementsWithZeroChildren = Array.from(document.getElementsByTagName('*')).filter(element => element.children.length === 0);
|
const elementsWithZeroChildren = Array.from(document.getElementsByTagName('*')).filter(element => element.children.length === 0);
|
||||||
|
|
||||||
|
// REGEXS THAT REALLY MEAN IT'S IN STOCK
|
||||||
for (let i = elementsWithZeroChildren.length - 1; i >= 0; i--) {
|
for (let i = elementsWithZeroChildren.length - 1; i >= 0; i--) {
|
||||||
const element = elementsWithZeroChildren[i];
|
const element = elementsWithZeroChildren[i];
|
||||||
if (element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0) {
|
if (element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0) {
|
||||||
@@ -43,6 +55,30 @@ function isItemInStock() {
|
|||||||
elementText = element.textContent.toLowerCase();
|
elementText = element.textContent.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (elementText.length) {
|
||||||
|
// try which ones could mean its in stock
|
||||||
|
for (let i = 0; i < negateOutOfStockRegexs.length; i++) {
|
||||||
|
if (negateOutOfStockRegexs_r[i].test(elementText)) {
|
||||||
|
return 'Possibly in stock';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OTHER STUFF THAT COULD BE THAT IT'S OUT OF STOCK
|
||||||
|
for (let i = elementsWithZeroChildren.length - 1; i >= 0; i--) {
|
||||||
|
const element = elementsWithZeroChildren[i];
|
||||||
|
if (element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0) {
|
||||||
|
var elementText="";
|
||||||
|
if (element.tagName.toLowerCase() === "input") {
|
||||||
|
elementText = element.value.toLowerCase();
|
||||||
|
} else {
|
||||||
|
elementText = element.textContent.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (elementText.length) {
|
||||||
|
// and these mean its out of stock
|
||||||
for (const outOfStockText of outOfStockTexts) {
|
for (const outOfStockText of outOfStockTexts) {
|
||||||
if (elementText.includes(outOfStockText)) {
|
if (elementText.includes(outOfStockText)) {
|
||||||
return elementText; // item is out of stock
|
return elementText; // item is out of stock
|
||||||
@@ -50,6 +86,8 @@ function isItemInStock() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 'Possibly in stock'; // possibly in stock, cant decide otherwise.
|
return 'Possibly in stock'; // possibly in stock, cant decide otherwise.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user