hi,
Das Script geht zwar, aber eBay geht nicht.
Die stellen neue Artikel nicht zwangsweise oben neu ein, sondern auch mal verspätet - und dadurch - an 2. oder 3. Stelle.
Das neue macht folgendes:
es prüft die ersten 20 Artikel, und speichert sie.
wird unter diesen einer hinzu gefügt, meldet es sich.
Bis zur maximalen Anzahl neuer Tabs, werden sie geöffnet, darüber hinaus kommt eine Abfrage.
Einfärbungen: rot sind neue Artikel, grün sind bereits bekannte Artikel.
Dinge, die verändert und angepasst werden können, stehen oben.
sehr gut möglich, und ehrlich gesagt auch wahrscheinlich, dass sich da irgendwelche Fehler finden lassen.
einmal in Neu:
// ==UserScript==
// @name eBay Suche
// @version 0.2
// @description frag lieber nicht...
// @author LiPi
// @match https://www.ebay.de/sch/i.html*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM.setValue
// @grant GM.getValue
// ==/UserScript==
'use strict';
/* *SETUP* */
var to_beep = 1; //Ton ein (1) oder aus (0)
var intervall = 2; //Intervall in Minuten
var Tab_max = 4; //maximale Anzahl zu öffnender Seiten
var Artikel_num = 20; // maximale Anzahl gespeicherter Artikel.
var audio_dat = 'https://media.geeksforgeeks.org/wp-content/uploads/20190531135120/beep.mp3'
/* ***** */
var time_old = await GM.getValue("eBay_Zeit", Date.now());
var time_aktuell = Date.now();
var time_elapsed = 2*intervall*60*1000;
Artikel_num--;
if ((time_old+time_elapsed)>time_aktuell) { //Zeit prüfen
//liegt in der Zeitspanne
// maximale Einträge anpassen
var URLs=document.getElementById('srp-river-results').getElementsByClassName('s-item__wrapper'); //Adresse: .getElementsByTagName('a')[0].href.split('?')
if (URLs.length < Artikel_num) {
var max_i = URLs.length;
}
else max_i = Artikel_num;
// prüfen, was neu ist und schön bunt machen
var New_Num = 0;
var New_Num_inv = 0;
var Num_array=[];
for (let i=0;i<=max_i;i++) { //jeder aktuelle Eintrag
var j_max = await GM.getValue("eBay_URL_old_max", 0);
var temp = URLs[i].getElementsByTagName('a')[0].href.split('?')[0]
for (let j=0;j<=j_max;j++) { //jeder alte Eintrag
var URL_old = await GM.getValue("eBay_URL_old_"+j, 0);
// alert('old_URL: '+URL_old+' aktuell '+temp);
Num_array[New_Num]=temp;
URLs[i].style.cssText = "background-color: lavenderblush";
if (temp==URL_old) {
URLs[i].style.cssText = "background-color: lightcyan";
Num_array[New_Num]=0;
New_Num_inv++;
break;
}
}
New_Num++;
}
//fertig. Tschüss und beeps!
if (New_Num-New_Num_inv>0) {
if (to_beep) await beep(); //(to_beep || !to_beep) ist eine sinnlose Frage...
var alert_bypass = 0;
for (let i = 0;i<New_Num;i++) {
if ((New_Num-New_Num_inv>=Tab_max)&&!alert_bypass) { // zu viel neues
var alert_str = (New_Num-New_Num_inv)+" Neue Artikel. Dennoch öffnen?";
var alert_load = await confirm(alert_str);
if (!alert_load) {
break;
}
alert_bypass=1;
}
if (Num_array[i]!=0) {
window.open(Num_array[i]);
}
}
}
}
else {max_i = Artikel_num;
URLs=document.getElementById('srp-river-results').getElementsByClassName('s-item__wrapper'); //Adresse: .getElementsByTagName('a')[0].href.split('?')
}
setTimeout(function(){ location.reload(); }, intervall*60*1000);
// speichern der neuen Artikel
for (let i=0;i<=max_i;i++) {
GM.setValue("eBay_URL_old_"+i, URLs[i].getElementsByTagName('a')[0].href.split('?')[0]);
}
GM.setValue("eBay_URL_old_max", max_i);
GM.setValue("eBay_Zeit", time_aktuell);
function beep(){
const audio = new Audio(audio_dat)
return new Promise(res=>{
audio.play()
audio.onended = res
})
}
grüße
lipi