Tata...tara-ta-ta3
Любитель трепать не по делу
сейчас отложенные опубликованы все, завтра попробую и так и эдак..сейчас то все отложенные опубликованы?
сейчас отложенные опубликованы все, завтра попробую и так и эдак..сейчас то все отложенные опубликованы?
Сегодня так один застрял на несколько часов, удалять уже поздно. Убираю фото - модерацию проходит. Сделала видео и прошло наконец.У меня какая то шляпа с модерацией. Сейчас полез докинуть фотки в отложки, за которые должны капнуть баллы завтра. После добавления фоток, виснут на модерации. Вот не знаю, есть смысл трогать оставшиеся. Или еще хуже себе сделаю и даже за текст не начислят. Я так понимаю, если на момент отсечки отзыв на модерации, то баллов не будет. Да, и этот акк был в бане в январе.
Это уже опубликованный ранее редактировался? Или свежий не проходил?Сегодня так один застрял на несколько часов, удалять уже поздно. Убираю фото - модерацию проходит. Сделала видео и прошло наконец.
Ага. Попробуй на одном с видео.Это уже опубликованный ранее редактировался?
Да, с видео прошел модерацию. Минут за 15. Пришлось снимать чужое с экрана)Ага. Попробуй на одном с видео.
и на какое время сдвиг на день получается?Да, именно это сдвинуло время моменталок.
я скопировал без последней цифры 9, там тоже заглушка))).*** Скрытый текст не может быть процитирован. ***

ДаА если я после публикации моменталок и начисления баллов, спустя час опубликовал отзывы без бзо (надоели висеть) , моменталки соответственно тоже сдвинулись?
этот?может есчо ссылку на скрипт, который за тебя покупает скинуть? =)
// ==UserScript==
// @name ozon-wait-and-order
// @namespace http://ozon.ru
// @version 0.2
// @description wait for discount and order
// @author br4instormer
// @homepageURL https://gist.github.com/br4instormer/24b029f34d00359bb4c0adec62dd5bb9
// @match https://www.ozon.ru/product/*
// @match https://www.ozon.ru/cart*
// @match https://www.ozon.ru/gocheckout*
// @icon https://www.ozon.ru/public/favicon.ico
// @grant none
// ==/UserScript==
(function () {
"use strict";
const LOCAL_STORAGE_OPTIONS_KEY = "0rderOptions";
const CLAIM_BUTTON_SELECTOR = "div[text='Перейти к оформлению'] > button";
const ORDER_BUTTON_SELECTOR = "div[text='Оплатить онлайн'] > button";
const DATA_CONTAINER_SELECTOR = "div[id^='state-webPrice']";
const PRICE_CONTAINER_SELECTOR = "div[data-widget='webPrice']";
const ADD_TO_CART_BUTTON_SELECTOR = "div[data-widget='webAddToCart'] button";
const GO_TO_CART_BUTTON_SELECTOR =
"div[data-widget='webAddToCart'] button:has(> span > span > span)";
const WAIT_TIMEOUT = 500; // интервал между обновлениями карточки товара
const SLEEP_TIMEOUT = 200; // интервал ожидания появления селектора (технический)
const SPAM_ORDER_BUTTON_TIMEOUT = 200; // интервал между нажатиями при спаме кнопки оплаты (технический)
const SPAM_ORDER_BUTTON_TIME = 1000 * 15; // время в течение которого идёт спам кнопки оплаты
const getProductId = () => window.location.pathname.match(/(\d+)\/$/)[1];
const sleep = (timeout) =>
new Promise((resolve) => setTimeout(resolve, timeout));
const parsePrice = (price) =>
Number.parseInt(price.trim().replace(/[^\d]/g, ""));
const defaultOptions = {
watch: false,
price: 0,
productId: undefined,
};
const Reload = {
timeoutId: undefined,
start() {
if (this.timeoutId) {
this.stop();
}
this.timeoutId = setTimeout(reload, WAIT_TIMEOUT);
},
stop() {
clearTimeout(this.timeoutId);
this.timeoutId = undefined;
},
};
const optionsRaw = sessionStorage.getItem(LOCAL_STORAGE_OPTIONS_KEY);
const options = optionsRaw ? JSON.parse(optionsRaw) : { ...defaultOptions };
const stage = Stage(window.location.pathname);
async function addToCart(options) {
const { watch, productId: watchProductId, price: oldPrice } = options;
const currentProductId = getProductId();
const currentPrice = getCurrentPrice();
const isSameProduct = watchProductId === currentProductId;
const isWatchingSameProduct = watch && isSameProduct;
waitForSelector(PRICE_CONTAINER_SELECTOR)
.then(() => insertCheckbox(isWatchingSameProduct));
if (!watch) {
console.warn(`Наблюдение не проводится`);
return;
}
if (watchProductId && !isSameProduct) {
console.warn(`Наблюдение не за этим товаром`);
return;
}
if (currentPrice >= oldPrice) {
console.warn(
`Товар не стал дешевле. Ожидание и обновление страницы через ${WAIT_TIMEOUT}мс`,
);
return Reload.start();
}
console.warn(`Обнаружена цена со скидкой. Заказ товара`);
await waitForSelector(ADD_TO_CART_BUTTON_SELECTOR);
document.querySelector(ADD_TO_CART_BUTTON_SELECTOR).click();
await waitForSelector(GO_TO_CART_BUTTON_SELECTOR);
await clickSelectorUntil(
GO_TO_CART_BUTTON_SELECTOR,
SPAM_ORDER_BUTTON_TIME,
SPAM_ORDER_BUTTON_TIMEOUT,
);
}
async function claimOrder({ watch }) {
const selector = CLAIM_BUTTON_SELECTOR;
if (!watch) {
return;
}
await clickSelectorUntil(
selector,
SPAM_ORDER_BUTTON_TIME,
SPAM_ORDER_BUTTON_TIMEOUT,
);
}
async function order({ watch }) {
const selector = ORDER_BUTTON_SELECTOR;
if (!watch) {
return;
}
disable();
await clickSelectorUntil(
selector,
SPAM_ORDER_BUTTON_TIME,
SPAM_ORDER_BUTTON_TIMEOUT,
);
}
async function clickSelectorUntil(selector, dueTime, timeout) {
const Spam = { continue: true };
await Promise.allSettled([
sleep(dueTime).then(() => (Spam.continue = false)),
(async () => {
while (Spam.continue) {
try {
document.querySelector(selector).click();
} catch (e) {}
await sleep(timeout);
}
})(),
]);
}
async function waitForSelector(selector) {
let repeat = false;
do {
repeat = document.querySelector(selector) === null;
await sleep(SLEEP_TIMEOUT);
} while (repeat);
}
function Stage(path) {
if (path.startsWith(`/product/`)) {
return addToCart;
}
if (path.startsWith(`/cart`)) {
return claimOrder;
}
if (path.startsWith(`/gocheckout`)) {
return order;
}
throw new Error(`No hadler for this operaion`);
}
function reload() {
window.location.reload();
}
function toggleWatching(event) {
const isChecked = event.target.checked;
if (isChecked) {
enable({
watch: true,
price: getCurrentPrice(),
productId: getProductId(),
});
Reload.start();
console.warn(`Наблюдение включено`);
} else {
disable();
Reload.stop();
console.warn(`Наблюдение отключено`);
}
}
function enable(options) {
sessionStorage.setItem(LOCAL_STORAGE_OPTIONS_KEY, JSON.stringify(options));
}
function disable() {
sessionStorage.removeItem(LOCAL_STORAGE_OPTIONS_KEY);
}
function insertCheckbox(isChecked) {
const checkboxElement = document.createElement("INPUT");
const labelElement = document.createElement("LABEL");
const containerElement = document.querySelector(PRICE_CONTAINER_SELECTOR);
checkboxElement.type = "checkbox";
checkboxElement.id = "watch-price";
checkboxElement.onclick = toggleWatching;
labelElement.setAttribute("for", "watch-price");
labelElement.innerText = "Следить за ценой";
if (isChecked) {
checkboxElement.setAttribute("checked", "");
}
containerElement.insertAdjacentElement("afterend", labelElement);
containerElement.insertAdjacentElement("afterend", checkboxElement);
}
function getCurrentPrice() {
const { price, cardPrice } = JSON.parse(
document.querySelector(DATA_CONTAINER_SELECTOR).dataset.state,
);
const current = cardPrice || price;
const cleanPrice = parsePrice(current);
return cleanPrice;
}
stage(options);
})();
ну теперь точно прикручу к своему такое.этот?
JavaScript:// ==UserScript== // @name ozon-wait-and-order // @namespace http://ozon.ru // @version 0.2 // @description wait for discount and order // @author br4instormer // @homepageURL https://gist.github.com/br4instormer/24b029f34d00359bb4c0adec62dd5bb9 // @match https://www.ozon.ru/product/* // @match https://www.ozon.ru/cart* // @match https://www.ozon.ru/gocheckout* // @icon https://www.ozon.ru/public/favicon.ico // @grant none // ==/UserScript== (function () { "use strict"; const LOCAL_STORAGE_OPTIONS_KEY = "0rderOptions"; const CLAIM_BUTTON_SELECTOR = "div[text='Перейти к оформлению'] > button"; const ORDER_BUTTON_SELECTOR = "div[text='Оплатить онлайн'] > button"; const DATA_CONTAINER_SELECTOR = "div[id^='state-webPrice']"; const PRICE_CONTAINER_SELECTOR = "div[data-widget='webPrice']"; const ADD_TO_CART_BUTTON_SELECTOR = "div[data-widget='webAddToCart'] button"; const GO_TO_CART_BUTTON_SELECTOR = "div[data-widget='webAddToCart'] button:has(> span > span > span)"; const WAIT_TIMEOUT = 500; // интервал между обновлениями карточки товара const SLEEP_TIMEOUT = 200; // интервал ожидания появления селектора (технический) const SPAM_ORDER_BUTTON_TIMEOUT = 200; // интервал между нажатиями при спаме кнопки оплаты (технический) const SPAM_ORDER_BUTTON_TIME = 1000 * 15; // время в течение которого идёт спам кнопки оплаты const getProductId = () => window.location.pathname.match(/(\d+)\/$/)[1]; const sleep = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout)); const parsePrice = (price) => Number.parseInt(price.trim().replace(/[^\d]/g, "")); const defaultOptions = { watch: false, price: 0, productId: undefined, }; const Reload = { timeoutId: undefined, start() { if (this.timeoutId) { this.stop(); } this.timeoutId = setTimeout(reload, WAIT_TIMEOUT); }, stop() { clearTimeout(this.timeoutId); this.timeoutId = undefined; }, }; const optionsRaw = sessionStorage.getItem(LOCAL_STORAGE_OPTIONS_KEY); const options = optionsRaw ? JSON.parse(optionsRaw) : { ...defaultOptions }; const stage = Stage(window.location.pathname); async function addToCart(options) { const { watch, productId: watchProductId, price: oldPrice } = options; const currentProductId = getProductId(); const currentPrice = getCurrentPrice(); const isSameProduct = watchProductId === currentProductId; const isWatchingSameProduct = watch && isSameProduct; waitForSelector(PRICE_CONTAINER_SELECTOR) .then(() => insertCheckbox(isWatchingSameProduct)); if (!watch) { console.warn(`Наблюдение не проводится`); return; } if (watchProductId && !isSameProduct) { console.warn(`Наблюдение не за этим товаром`); return; } if (currentPrice >= oldPrice) { console.warn( `Товар не стал дешевле. Ожидание и обновление страницы через ${WAIT_TIMEOUT}мс`, ); return Reload.start(); } console.warn(`Обнаружена цена со скидкой. Заказ товара`); await waitForSelector(ADD_TO_CART_BUTTON_SELECTOR); document.querySelector(ADD_TO_CART_BUTTON_SELECTOR).click(); await waitForSelector(GO_TO_CART_BUTTON_SELECTOR); await clickSelectorUntil( GO_TO_CART_BUTTON_SELECTOR, SPAM_ORDER_BUTTON_TIME, SPAM_ORDER_BUTTON_TIMEOUT, ); } async function claimOrder({ watch }) { const selector = CLAIM_BUTTON_SELECTOR; if (!watch) { return; } await clickSelectorUntil( selector, SPAM_ORDER_BUTTON_TIME, SPAM_ORDER_BUTTON_TIMEOUT, ); } async function order({ watch }) { const selector = ORDER_BUTTON_SELECTOR; if (!watch) { return; } disable(); await clickSelectorUntil( selector, SPAM_ORDER_BUTTON_TIME, SPAM_ORDER_BUTTON_TIMEOUT, ); } async function clickSelectorUntil(selector, dueTime, timeout) { const Spam = { continue: true }; await Promise.allSettled([ sleep(dueTime).then(() => (Spam.continue = false)), (async () => { while (Spam.continue) { try { document.querySelector(selector).click(); } catch (e) {} await sleep(timeout); } })(), ]); } async function waitForSelector(selector) { let repeat = false; do { repeat = document.querySelector(selector) === null; await sleep(SLEEP_TIMEOUT); } while (repeat); } function Stage(path) { if (path.startsWith(`/product/`)) { return addToCart; } if (path.startsWith(`/cart`)) { return claimOrder; } if (path.startsWith(`/gocheckout`)) { return order; } throw new Error(`No hadler for this operaion`); } function reload() { window.location.reload(); } function toggleWatching(event) { const isChecked = event.target.checked; if (isChecked) { enable({ watch: true, price: getCurrentPrice(), productId: getProductId(), }); Reload.start(); console.warn(`Наблюдение включено`); } else { disable(); Reload.stop(); console.warn(`Наблюдение отключено`); } } function enable(options) { sessionStorage.setItem(LOCAL_STORAGE_OPTIONS_KEY, JSON.stringify(options)); } function disable() { sessionStorage.removeItem(LOCAL_STORAGE_OPTIONS_KEY); } function insertCheckbox(isChecked) { const checkboxElement = document.createElement("INPUT"); const labelElement = document.createElement("LABEL"); const containerElement = document.querySelector(PRICE_CONTAINER_SELECTOR); checkboxElement.type = "checkbox"; checkboxElement.id = "watch-price"; checkboxElement.onclick = toggleWatching; labelElement.setAttribute("for", "watch-price"); labelElement.innerText = "Следить за ценой"; if (isChecked) { checkboxElement.setAttribute("checked", ""); } containerElement.insertAdjacentElement("afterend", labelElement); containerElement.insertAdjacentElement("afterend", checkboxElement); } function getCurrentPrice() { const { price, cardPrice } = JSON.parse( document.querySelector(DATA_CONTAINER_SELECTOR).dataset.state, ); const current = cardPrice || price; const cleanPrice = parsePrice(current); return cleanPrice; } stage(options); })();
чо еще есть?) спасибо!фото давай чего ты там накачала и чего там сверху поднялосьСтавлю всех в известность - я покачала пресс, щас закидываюсь белком (курой)