Puppeteer + Playwright

This commit is contained in:
Cyril Rouillon 2024-05-29 16:42:52 +02:00
parent fe9a8e2b20
commit d38817f4c5
22 changed files with 1913 additions and 284 deletions

View File

@ -1,6 +1,5 @@
// Interencheres.js
'use strict';
const { platform } = require('os');
const {Scraper} = require('../Scraper');
const DrouotData = require('./DrouotData');
@ -24,6 +23,8 @@ class Drouot extends Scraper {
this._USER = "jp.ranu@cogip.de"
this._PWD = "LYPYRKDUsSMH5BaWQxvH#"
this._PATH_SESSION_FILE = ".session/session_drouot.json"
this._PATH_PROTOBUF_FILE = "./AuctionServices/Scraper/Drouot/drouot.proto"
this._BROWSER_TOOL = "playwrightBrowser"
}
getPictures = async ({ page, data}) => {
@ -159,55 +160,79 @@ class Drouot extends Scraper {
return LotList
}
async CheckAndConnect(page) {
// ### Playwright
// ###########################################################################
async CheckCookieDialog(page) {
console.log("-- CheckCookieDialog --")
return new Promise(async (resolve, reject) => {
//let XpathCookieButton = "xpath=//button[contains(@class, 'rgpd') and contains(text(), 'Tout refuser')"
// const CookieButton = await page.$$(XpathCookieButton);
const CookieButton = await page.$('//button[contains(@class, "rgpd") and contains(text(), "Tout refuser")]');
//console.log(CookieButton)
if (CookieButton && await CookieButton.isVisible()) {
console.log("-- Click on CookieButton --")
await CookieButton.click();
}
resolve(true)
})
}
async CheckAndConnect(page) {
return new Promise(async (resolve, reject) => {
await page.goto(this._PAGE_MAIN);
await this.CheckCookieDialog(page);
console.log("-- CheckConnexion --")
//get the Connexion button
const [Connexion] = await page.$x("//div[contains(@class, 'btn') and contains(@class, 'ghost') and contains(text(), 'Connexion')]");
console.log(Connexion)
let XpathConnexion = "//div[contains(@class, 'btn') and contains(@class, 'ghost') and contains(text(), 'Connexion')]"
const Connexion = await page.$$(XpathConnexion);
// if Connection button found => Login
if (Connexion) {
if (Connexion.length > 0) {
console.log("-- Login --")
await page.goto(this._PAGE_LOGIN);
//get the Email field
//console.log("-- get Email Input --")
await page.type('#email', this._USER);
//await page.type('#email', this._USER);
await page.fill('#email', this._USER);
//console.log("-- get password Input --")
await page.type("#password", this._PWD);
//wait page.type("#password", this._PWD);
await page.fill('#password', this._PWD);
//await page.screenshot({ path: 'screenshot.png', fullPage: true });
//console.log("-- get ConnexionButton --")
const [ConnexionButton] = await page.$x("//button[contains(text(), 'Connexion')]");
await ConnexionButton.evaluate(b => b.click());
//const [ConnexionButton] = await page.$x("//button[contains(text(), 'Connexion')]");
//await ConnexionButton.evaluate(b => b.click());
await page.click("//button[contains(text(), 'Connexion')]");
//console.log("-- Login wait --")
await page.waitForTimeout(1000);
//resolve(page)
const ConnexionOK = await page.$$("//button[contains(text(), 'Continuer en tant que')]");
//console.log(ConnexionOK)
if (ConnexionOK.length > 0) {
//await ConnexionOK.screenshot({ path: 'screenshot.png', fullPage: true });
const [ConnexionOK] = await page.$x("//button[contains(text(), 'Continuer en tant que')]");
if (ConnexionOK) {
console.log("-- Connection OK --")
await ConnexionOK.evaluate(b => b.click());
//await ConnexionOK.evaluate(b => b.click());
await ConnexionOK[0].click();
await page.waitForTimeout(1000);
await this._saveSession(page)
// const sessionData = await page.session.dumpString({
// storageProviders: [
// StorageProviderName.Cookie,
// StorageProviderName.LocalStorage,
// StorageProviderName.SessionStorage,
// StorageProviderName.IndexedDB,
// ],
// })
// fs.writeFileSync(this._PATH_SESSION_FILE, sessionData);
// console.log("-- Connection OK --")
console.log("-- Connection OK --")
resolve(page)
} else {
console.error("-- !!!! Connection ERROR !!!! --");
@ -224,111 +249,188 @@ class Drouot extends Scraper {
}
Live = async (browser) => {
const context = await this._getContext(browser);
console.log("Live "+this._Name+": "+this.Url)
let page = await context.newPage();
const page = await browser.newPage();
page = await this.CheckAndConnect(page);
let CheckAskStop = null;
let Socket = null;
const StopLive = async (params) => {
clearInterval(CheckAskStop);
Socket.off('Network.webSocketFrameReceived', listener);
page.close()
}
const listener = async (params) => {
let payload = params.response.payloadData
if(payload.length>1 && payload.substring(0, 2) == '42'){
payload = JSON.parse(payload.substring(2))
//console.log(payload)
const type = payload[0];
const payloadData = payload[1];
//init Protobuf Decoder
const protobuf = require("protobufjs");
const root = await protobuf.load(this._PATH_PROTOBUF_FILE);
const LiveBiddingMessage = root.lookupType("drouot.LiveBiddingMessage");
switch (type) {
const listener = async (params) => {
let buffer = params.payload;
case 'startSale':
break;
case 'listAuctionedItems':
break;
case 'joinedSale':
await this.JucunduNextItem(
payloadData.sale_id,
payloadData.timestamp,
payloadData.item_id,
payloadData.order_number.primary,
payloadData.title,
payloadData.description,
payloadData.pricing.estimates.min,
payloadData.pricing.estimates.max,
payloadData
);
break;
case 'auctionedItem':
await this.JucunduAuctionedItem(
payloadData.item_id,
payloadData.timestamp,
payloadData.auctioned.amount,
payloadData.auctioned.sold,
payloadData.auctioned.type
);
break;
case 'nextItem':
await this.JucunduNextItem(
payloadData.sale_id,
payloadData.timestamp,
payloadData.item_id,
payloadData.order_number.primary,
payloadData.title,
payloadData.description,
payloadData.pricing.estimates.min,
payloadData.pricing.estimates.max,
payloadData
);
break;
case 'bid':
await this.JucundusBid(
payloadData.item_id,
payloadData.timestamp,
payloadData.amount,
payloadData.auctioned_type
);
break;
case 'pauseSale':
console.error('** Pause **');
console.log(payloadData);
// await this.JucundusEndSale()
// StopLive()
break;
case 'endSale':
// await this.JucundusEndSale()
// StopLive()
break;
default:
console.error('Unknown data type:', type);
console.log(payloadData);
}
const err = LiveBiddingMessage.verify(buffer);
if (err) {
throw err;
}
const message = LiveBiddingMessage.decode(buffer);
const BideMessage = LiveBiddingMessage.toObject(message, {enums: String});
let DataLot = null
if(BideMessage.vente && BideMessage.vente.lot && BideMessage.vente.lot.lotId != undefined){
DataLot = await this.platformData.getLiveDataLot(BideMessage.vente.lot.lotId);
}
//console.log('BideMessage Type: '+BideMessage.type+' Lot: '+BideMessage.vente.lot.lotId);
switch (BideMessage.type) {
case 'PING':
break;
case 'PONG':
break;
case 'INIT':
console.log('INIT');
break;
case 'CLOSE':
console.log('CLOSE');
break;
case 'BID':
console.log('BID');
console.log('Lot: '+BideMessage.vente.lot.lotId+' Amount: '+BideMessage.vente.bid.amount);
await this.JucundusBid(
BideMessage.vente.lot.lotId,
Date.now(),
BideMessage.vente.bid.amount,
BideMessage.vente.bid.type
);
break;
case 'SELECT_LOT':
console.log('SELECT_LOT');
console.log('Lot: '+BideMessage.vente.lot.lotId);
//console.log('DataLot : '+DataLot)
await this.JucunduNextItem(
BideMessage.vente.venteId,
Date.now(),
BideMessage.vente.lot.lotId,
DataLot.num,
DataLot.titre,
DataLot.description,
DataLot.estimationBasse,
DataLot.estimationHaute,
DataLot
);
break;
case 'STARTING_PRICE':
console.log('STARTING_PRICE');
await this.JucunduNextItem(
BideMessage.vente.venteId,
Date.now(),
BideMessage.vente.lot.lotId,
DataLot.num,
DataLot.titre,
DataLot.description,
DataLot.estimationBasse,
DataLot.estimationHaute,
DataLot
);
break;
case 'INCREMENT':
console.log('INCREMENT');
break;
case 'TENDERING':
console.log('TENDERING');
console.log('Lot: '+BideMessage.vente.lot.lotId+' Amount: '+BideMessage.vente.bid.amount);
await this.JucunduAuctionedItem(
BideMessage.vente.lot.lotId,
Date.now(),
BideMessage.vente.bid.amount,
BideMessage.vente.lot.state == 'ADJ' ? true : false,
BideMessage.vente.bid.type
);
break;
case 'GENERIC_MESSAGE':
console.log('GENERIC_MESSAGE');
break;
case 'CREATE_LOT':
console.log('CREATE_LOT');
break;
case 'NOT_INTERESTED':
break;
case 'INTERESTED':
break;
case 'ACTIVITY':
break;
case 'NEW_CLIENT':
console.log('NEW_CLIENT');
break;
case 'CLOSED_CLIENT':
break;
case 'KILL':
break;
case 'MULTILOT_REQUEST':
break;
case 'MULTILOT_RESPONSE':
break;
case 'SYNC_PAYMENT_LIMIT':
break;
case 'SWITCH_FREE_BID_AUTHORIZE':
break;
case 'REFRESH_CLIENTS_COUNT':
console.log('REFRESH_CLIENTS_COUNT');
break;
default:
//console.log('Unknown type:', BideMessage);
}
};
try{
await page.goto(this.Url);
Socket = await page.target().createCDPSession();
await Socket.send('Network.enable');
await Socket.send('Page.enable');
Socket.on('Network.webSocketFrameReceived', listener);
console.log('Listener set up for Network.webSocketFrameReceived event');
// create the live URL
let {saleID} = await this.platformData.getUrlInfo(this.Url);
let UrlLive = this._PAGE_MAIN + "live/bidlive/" + saleID;
let CheckAskStop = null;
let Socket = null;
// Stop the Live
const StopLive = async (params) => {
clearInterval(CheckAskStop);
page.close()
browser.close()
}
try{
console.log('UrlLive : '+UrlLive)
await page.goto(UrlLive, { waitUntil: 'domcontentloaded' });
// intercept Lots Data
await page.route('https://api.drouot.com/drouot/gingolem/api/live/venteInfos/'+saleID+'?lang=fr', async route => {
console.log('GetLiveData')
const response = await route.fetch();
const LotData = await response.json();
this.platformData.setLiveData(LotData.data);
route.continue();
});
page.on('websocket', ws => {
Socket = ws;
Socket.on('framereceived', listener);
console.log('Websocket connected');
});
console.log('UrlLive : reload')
await page.reload();
// check if stop was asked
CheckAskStop = setInterval(async () => {
this.JucundusCheckStop()

View File

@ -5,10 +5,12 @@ const moment = require('moment-timezone');
const { Console } = require('console');
const { title } = require('process');
class InterencheresData extends ScraperTools {
class DrouotData extends ScraperTools {
_Name = 'drouot'
_LiveData = null
getUrlInfo = async (url) => {
// URL Lot : https://drouot.com/fr/l/25184163-john-conde-17651794-britanniqu
@ -373,6 +375,20 @@ class InterencheresData extends ScraperTools {
return SaleHouseName.trim()
}
// ## Live Data
setLiveData = (Data) => {
this._LiveData = Data
}
getLiveDataLot = async(lotId) => {
for (let lot of this._LiveData.lots) {
if (lot.id === lotId) {
return lot;
}
}
}
}
module.exports = InterencheresData
module.exports = DrouotData

View File

@ -0,0 +1,139 @@
syntax = "proto3";
package drouot;
message BidStruct {
enum Type {
LIVE = 0;
ROOM = 1;
}
uint32 amount = 1;
uint32 currentBidder = 2;
Type type = 3;
bool hasPriority = 4;
bool isLate = 5;
bool isAuto = 6;
IncrementStruct increment = 7;
uint32 nextamount = 8;
uint32 nextsmallamount = 9;
uint32 nextmediumamount = 10;
uint32 nextbigamount = 11;
uint32 nextsmallvehicleamount = 12;
uint32 nextmediumvehicleamount = 13;
uint32 nextstandardamount = 14;
uint32 nextmodel10amount = 15;
}
message IncrementStruct {
enum Type {
FIXED = 0;
SMALL = 1;
MEDIUM = 2;
BIG = 3;
SMALL_VEHICLE = 4;
MEDIUM_VEHICLE = 5;
STANDARD = 6;
MODEL10 = 7;
CUSTOM = 8;
}
Type type = 1;
uint32 fixedvalue = 2;
IncrementData customincrement = 3;
}
message IncrementData {
repeated IncrementStep incrementarray = 1;
}
message IncrementStep {
uint32 startvalue = 1;
uint32 incrementvalue = 2;
bool specialstep = 3;
}
message ClientStruct {
enum Permission {
BIDDER = 0;
CYBER = 1;
SPECTATOR = 2;
}
enum Activity {
IDLE = 0;
ACTIVE = 1;
OVER = 2;
OUT = 3;
}
string sessionId = 1;
uint32 passeportId = 2;
string uuid = 3;
Permission permission = 4;
Activity activity = 5;
uint32 pingdelay = 6;
uint32 maxamount = 7;
bool hasnolimit = 8;
string token = 9;
string refreshtoken = 10;
}
message LiveBiddingMessage {
enum Type {
PING = 0;
PONG = 1;
INIT = 2;
CLOSE = 3;
BID = 4;
SELECT_LOT = 5;
STARTING_PRICE = 6;
INCREMENT = 7;
TENDERING = 8;
GENERIC_MESSAGE = 9;
CREATE_LOT = 10;
NOT_INTERESTED = 11;
INTERESTED = 12;
ACTIVITY = 13;
NEW_CLIENT = 14;
CLOSED_CLIENT = 15;
KILL = 16;
MULTILOT_REQUEST = 17;
MULTILOT_RESPONSE = 18;
SYNC_PAYMENT_LIMIT = 19;
SWITCH_FREE_BID_AUTHORIZE = 20;
REFRESH_CLIENTS_COUNT = 21;
}
Type type = 1;
ClientStruct client = 2;
VenteStruct vente = 3;
string message = 4;
map<string, string> paramsMap = 5;
int64 pingtime = 6;
}
message LotStruct {
enum State {
NEW = 0;
MAP = 1;
BIDDING = 2;
ADJ = 3;
ADJ_CANCELED = 4;
}
uint32 lotId = 1;
State state = 2;
uint32 nextLotId = 3;
}
message VenteStruct {
uint32 venteId = 1;
BidStruct bid = 2;
LotStruct lot = 3;
repeated uint32 connectedRegisteredListList = 4;
repeated uint32 connectedSpectatorListList = 5;
repeated uint32 connectedCyberclercListList = 6;
bool isfreebidauthorized = 7;
uint32 connectedbiddercount = 8;
uint32 connectedspectatorcount = 9;
uint32 readytobidcount = 10;
}

View File

@ -1,6 +1,6 @@
// Drouot.js
'use strict';
const {Scraper} = require('../Scraper');
const {Scraper} = require('../../Scraper');
class Drouot extends Scraper {

View File

@ -0,0 +1,989 @@
Ye.exportSymbol("proto.BidStruct", null, Ve),
Ye.exportSymbol("proto.BidStruct.Type", null, Ve),
Ye.exportSymbol("proto.ClientStruct", null, Ve),
Ye.exportSymbol("proto.ClientStruct.Activity", null, Ve),
Ye.exportSymbol("proto.ClientStruct.Permission", null, Ve),
Ye.exportSymbol("proto.IncrementData", null, Ve),
Ye.exportSymbol("proto.IncrementStep", null, Ve),
Ye.exportSymbol("proto.IncrementStruct", null, Ve),
Ye.exportSymbol("proto.IncrementStruct.Type", null, Ve),
Ye.exportSymbol("proto.LiveBiddingMessage", null, Ve),
Ye.exportSymbol("proto.LiveBiddingMessage.Type", null, Ve),
Ye.exportSymbol("proto.LotStruct", null, Ve),
Ye.exportSymbol("proto.LotStruct.State", null, Ve),
Ye.exportSymbol("proto.VenteStruct", null, Ve),
(proto.IncrementStep = function (Be) {
_e.Message.initialize(this, Be, 0, -1, null, null);
}),
Ye.inherits(proto.IncrementStep, _e.Message),
Ye.DEBUG && !COMPILED && (proto.IncrementStep.displayName = "proto.IncrementStep"),
(proto.IncrementData = function (Be) {
_e.Message.initialize(this, Be, 0, -1, proto.IncrementData.repeatedFields_, null);
}),
Ye.inherits(proto.IncrementData, _e.Message),
Ye.DEBUG && !COMPILED && (proto.IncrementData.displayName = "proto.IncrementData"),
(proto.IncrementStruct = function (Be) {
_e.Message.initialize(this, Be, 0, -1, null, null);
}),
Ye.inherits(proto.IncrementStruct, _e.Message),
Ye.DEBUG && !COMPILED && (proto.IncrementStruct.displayName = "proto.IncrementStruct"),
(proto.BidStruct = function (Be) {
_e.Message.initialize(this, Be, 0, -1, null, null);
}),
Ye.inherits(proto.BidStruct, _e.Message),
Ye.DEBUG && !COMPILED && (proto.BidStruct.displayName = "proto.BidStruct"),
(proto.LotStruct = function (Be) {
_e.Message.initialize(this, Be, 0, -1, null, null);
}),
Ye.inherits(proto.LotStruct, _e.Message),
Ye.DEBUG && !COMPILED && (proto.LotStruct.displayName = "proto.LotStruct"),
(proto.VenteStruct = function (Be) {
_e.Message.initialize(this, Be, 0, -1, proto.VenteStruct.repeatedFields_, null);
}),
Ye.inherits(proto.VenteStruct, _e.Message),
Ye.DEBUG && !COMPILED && (proto.VenteStruct.displayName = "proto.VenteStruct"),
(proto.ClientStruct = function (Be) {
_e.Message.initialize(this, Be, 0, -1, null, null);
}),
Ye.inherits(proto.ClientStruct, _e.Message),
Ye.DEBUG && !COMPILED && (proto.ClientStruct.displayName = "proto.ClientStruct"),
(proto.LiveBiddingMessage = function (Be) {
_e.Message.initialize(this, Be, 0, -1, null, null);
}),
Ye.inherits(proto.LiveBiddingMessage, _e.Message),
Ye.DEBUG && !COMPILED && (proto.LiveBiddingMessage.displayName = "proto.LiveBiddingMessage"),
_e.Message.GENERATE_TO_OBJECT &&
((proto.IncrementStep.prototype.toObject = function (Be) {
return proto.IncrementStep.toObject(Be, this);
}),
(proto.IncrementStep.toObject = function (Be, Re) {
var Ue = { startvalue: _e.Message.getFieldWithDefault(Re, 1, 0), incrementvalue: _e.Message.getFieldWithDefault(Re, 2, 0), specialstep: _e.Message.getBooleanFieldWithDefault(Re, 3, !1) };
return Be && (Ue.$jspbMessageInstance = Re), Ue;
})),
(proto.IncrementStep.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.IncrementStep();
return proto.IncrementStep.deserializeBinaryFromReader(Ue, Re);
}),
(proto.IncrementStep.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = Re.readUint32();
Be.setStartvalue(Ue);
break;
case 2:
Ue = Re.readUint32();
Be.setIncrementvalue(Ue);
break;
case 3:
Ue = Re.readBool();
Be.setSpecialstep(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.IncrementStep.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.IncrementStep.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.IncrementStep.serializeBinaryToWriter = function (Be, Re) {
var Ue = void 0;
0 !== (Ue = Be.getStartvalue()) && Re.writeUint32(1, Ue), 0 !== (Ue = Be.getIncrementvalue()) && Re.writeUint32(2, Ue), (Ue = Be.getSpecialstep()) && Re.writeBool(3, Ue);
}),
(proto.IncrementStep.prototype.getStartvalue = function () {
return _e.Message.getFieldWithDefault(this, 1, 0);
}),
(proto.IncrementStep.prototype.setStartvalue = function (Be) {
return _e.Message.setProto3IntField(this, 1, Be);
}),
(proto.IncrementStep.prototype.getIncrementvalue = function () {
return _e.Message.getFieldWithDefault(this, 2, 0);
}),
(proto.IncrementStep.prototype.setIncrementvalue = function (Be) {
return _e.Message.setProto3IntField(this, 2, Be);
}),
(proto.IncrementStep.prototype.getSpecialstep = function () {
return _e.Message.getBooleanFieldWithDefault(this, 3, !1);
}),
(proto.IncrementStep.prototype.setSpecialstep = function (Be) {
return _e.Message.setProto3BooleanField(this, 3, Be);
}),
(proto.IncrementData.repeatedFields_ = [1]),
_e.Message.GENERATE_TO_OBJECT &&
((proto.IncrementData.prototype.toObject = function (Be) {
return proto.IncrementData.toObject(Be, this);
}),
(proto.IncrementData.toObject = function (Be, Re) {
var Ue = { incrementarrayList: _e.Message.toObjectList(Re.getIncrementarrayList(), proto.IncrementStep.toObject, Be) };
return Be && (Ue.$jspbMessageInstance = Re), Ue;
})),
(proto.IncrementData.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.IncrementData();
return proto.IncrementData.deserializeBinaryFromReader(Ue, Re);
}),
(proto.IncrementData.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = new proto.IncrementStep();
Re.readMessage(Ue, proto.IncrementStep.deserializeBinaryFromReader), Be.addIncrementarray(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.IncrementData.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.IncrementData.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.IncrementData.serializeBinaryToWriter = function (Be, Re) {
var Ue;
(Ue = Be.getIncrementarrayList()).length > 0 && Re.writeRepeatedMessage(1, Ue, proto.IncrementStep.serializeBinaryToWriter);
}),
(proto.IncrementData.prototype.getIncrementarrayList = function () {
return _e.Message.getRepeatedWrapperField(this, proto.IncrementStep, 1);
}),
(proto.IncrementData.prototype.setIncrementarrayList = function (Be) {
return _e.Message.setRepeatedWrapperField(this, 1, Be);
}),
(proto.IncrementData.prototype.addIncrementarray = function (Be, Re) {
return _e.Message.addToRepeatedWrapperField(this, 1, Be, proto.IncrementStep, Re);
}),
(proto.IncrementData.prototype.clearIncrementarrayList = function () {
return this.setIncrementarrayList([]);
}),
_e.Message.GENERATE_TO_OBJECT &&
((proto.IncrementStruct.prototype.toObject = function (Be) {
return proto.IncrementStruct.toObject(Be, this);
}),
(proto.IncrementStruct.toObject = function (Be, Re) {
var Ue,
Ye = { type: _e.Message.getFieldWithDefault(Re, 1, 0), fixedvalue: _e.Message.getFieldWithDefault(Re, 2, 0), customincrement: (Ue = Re.getCustomincrement()) && proto.IncrementData.toObject(Be, Ue) };
return Be && (Ye.$jspbMessageInstance = Re), Ye;
})),
(proto.IncrementStruct.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.IncrementStruct();
return proto.IncrementStruct.deserializeBinaryFromReader(Ue, Re);
}),
(proto.IncrementStruct.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = Re.readEnum();
Be.setType(Ue);
break;
case 2:
Ue = Re.readUint32();
Be.setFixedvalue(Ue);
break;
case 3:
Ue = new proto.IncrementData();
Re.readMessage(Ue, proto.IncrementData.deserializeBinaryFromReader), Be.setCustomincrement(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.IncrementStruct.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.IncrementStruct.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.IncrementStruct.serializeBinaryToWriter = function (Be, Re) {
var Ue = void 0;
0 !== (Ue = Be.getType()) && Re.writeEnum(1, Ue), 0 !== (Ue = Be.getFixedvalue()) && Re.writeUint32(2, Ue), null != (Ue = Be.getCustomincrement()) && Re.writeMessage(3, Ue, proto.IncrementData.serializeBinaryToWriter);
}),
(proto.IncrementStruct.Type = { FIXED: 0, SMALL: 1, MEDIUM: 2, BIG: 3, SMALL_VEHICLE: 4, MEDIUM_VEHICLE: 5, STANDARD: 6, MODEL10: 7, CUSTOM: 8 }),
(proto.IncrementStruct.prototype.getType = function () {
return _e.Message.getFieldWithDefault(this, 1, 0);
}),
(proto.IncrementStruct.prototype.setType = function (Be) {
return _e.Message.setProto3EnumField(this, 1, Be);
}),
(proto.IncrementStruct.prototype.getFixedvalue = function () {
return _e.Message.getFieldWithDefault(this, 2, 0);
}),
(proto.IncrementStruct.prototype.setFixedvalue = function (Be) {
return _e.Message.setProto3IntField(this, 2, Be);
}),
(proto.IncrementStruct.prototype.getCustomincrement = function () {
return _e.Message.getWrapperField(this, proto.IncrementData, 3);
}),
(proto.IncrementStruct.prototype.setCustomincrement = function (Be) {
return _e.Message.setWrapperField(this, 3, Be);
}),
(proto.IncrementStruct.prototype.clearCustomincrement = function () {
return this.setCustomincrement(void 0);
}),
(proto.IncrementStruct.prototype.hasCustomincrement = function () {
return null != _e.Message.getField(this, 3);
}),
_e.Message.GENERATE_TO_OBJECT &&
((proto.BidStruct.prototype.toObject = function (Be) {
return proto.BidStruct.toObject(Be, this);
}),
(proto.BidStruct.toObject = function (Be, Re) {
var Ue,
Ye = {
amount: _e.Message.getFieldWithDefault(Re, 1, 0),
currentBidder: _e.Message.getFieldWithDefault(Re, 2, 0),
type: _e.Message.getFieldWithDefault(Re, 3, 0),
hasPriority: _e.Message.getBooleanFieldWithDefault(Re, 4, !1),
isLate: _e.Message.getBooleanFieldWithDefault(Re, 5, !1),
isAuto: _e.Message.getBooleanFieldWithDefault(Re, 6, !1),
increment: (Ue = Re.getIncrement()) && proto.IncrementStruct.toObject(Be, Ue),
nextamount: _e.Message.getFieldWithDefault(Re, 8, 0),
nextsmallamount: _e.Message.getFieldWithDefault(Re, 9, 0),
nextmediumamount: _e.Message.getFieldWithDefault(Re, 10, 0),
nextbigamount: _e.Message.getFieldWithDefault(Re, 11, 0),
nextsmallvehicleamount: _e.Message.getFieldWithDefault(Re, 12, 0),
nextmediumvehicleamount: _e.Message.getFieldWithDefault(Re, 13, 0),
nextstandardamount: _e.Message.getFieldWithDefault(Re, 14, 0),
nextmodel10amount: _e.Message.getFieldWithDefault(Re, 15, 0),
};
return Be && (Ye.$jspbMessageInstance = Re), Ye;
})),
(proto.BidStruct.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.BidStruct();
return proto.BidStruct.deserializeBinaryFromReader(Ue, Re);
}),
(proto.BidStruct.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = Re.readUint32();
Be.setAmount(Ue);
break;
case 2:
Ue = Re.readUint32();
Be.setCurrentBidder(Ue);
break;
case 3:
Ue = Re.readEnum();
Be.setType(Ue);
break;
case 4:
Ue = Re.readBool();
Be.setHasPriority(Ue);
break;
case 5:
Ue = Re.readBool();
Be.setIsLate(Ue);
break;
case 6:
Ue = Re.readBool();
Be.setIsAuto(Ue);
break;
case 7:
Ue = new proto.IncrementStruct();
Re.readMessage(Ue, proto.IncrementStruct.deserializeBinaryFromReader), Be.setIncrement(Ue);
break;
case 8:
Ue = Re.readUint32();
Be.setNextamount(Ue);
break;
case 9:
Ue = Re.readUint32();
Be.setNextsmallamount(Ue);
break;
case 10:
Ue = Re.readUint32();
Be.setNextmediumamount(Ue);
break;
case 11:
Ue = Re.readUint32();
Be.setNextbigamount(Ue);
break;
case 12:
Ue = Re.readUint32();
Be.setNextsmallvehicleamount(Ue);
break;
case 13:
Ue = Re.readUint32();
Be.setNextmediumvehicleamount(Ue);
break;
case 14:
Ue = Re.readUint32();
Be.setNextstandardamount(Ue);
break;
case 15:
Ue = Re.readUint32();
Be.setNextmodel10amount(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.BidStruct.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.BidStruct.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.BidStruct.serializeBinaryToWriter = function (Be, Re) {
var Ue = void 0;
0 !== (Ue = Be.getAmount()) && Re.writeUint32(1, Ue),
0 !== (Ue = Be.getCurrentBidder()) && Re.writeUint32(2, Ue),
0 !== (Ue = Be.getType()) && Re.writeEnum(3, Ue),
(Ue = Be.getHasPriority()) && Re.writeBool(4, Ue),
(Ue = Be.getIsLate()) && Re.writeBool(5, Ue),
(Ue = Be.getIsAuto()) && Re.writeBool(6, Ue),
null != (Ue = Be.getIncrement()) && Re.writeMessage(7, Ue, proto.IncrementStruct.serializeBinaryToWriter),
0 !== (Ue = Be.getNextamount()) && Re.writeUint32(8, Ue),
0 !== (Ue = Be.getNextsmallamount()) && Re.writeUint32(9, Ue),
0 !== (Ue = Be.getNextmediumamount()) && Re.writeUint32(10, Ue),
0 !== (Ue = Be.getNextbigamount()) && Re.writeUint32(11, Ue),
0 !== (Ue = Be.getNextsmallvehicleamount()) && Re.writeUint32(12, Ue),
0 !== (Ue = Be.getNextmediumvehicleamount()) && Re.writeUint32(13, Ue),
0 !== (Ue = Be.getNextstandardamount()) && Re.writeUint32(14, Ue),
0 !== (Ue = Be.getNextmodel10amount()) && Re.writeUint32(15, Ue);
}),
(proto.BidStruct.Type = { LIVE: 0, ROOM: 1 }),
(proto.BidStruct.prototype.getAmount = function () {
return _e.Message.getFieldWithDefault(this, 1, 0);
}),
(proto.BidStruct.prototype.setAmount = function (Be) {
return _e.Message.setProto3IntField(this, 1, Be);
}),
(proto.BidStruct.prototype.getCurrentBidder = function () {
return _e.Message.getFieldWithDefault(this, 2, 0);
}),
(proto.BidStruct.prototype.setCurrentBidder = function (Be) {
return _e.Message.setProto3IntField(this, 2, Be);
}),
(proto.BidStruct.prototype.getType = function () {
return _e.Message.getFieldWithDefault(this, 3, 0);
}),
(proto.BidStruct.prototype.setType = function (Be) {
return _e.Message.setProto3EnumField(this, 3, Be);
}),
(proto.BidStruct.prototype.getHasPriority = function () {
return _e.Message.getBooleanFieldWithDefault(this, 4, !1);
}),
(proto.BidStruct.prototype.setHasPriority = function (Be) {
return _e.Message.setProto3BooleanField(this, 4, Be);
}),
(proto.BidStruct.prototype.getIsLate = function () {
return _e.Message.getBooleanFieldWithDefault(this, 5, !1);
}),
(proto.BidStruct.prototype.setIsLate = function (Be) {
return _e.Message.setProto3BooleanField(this, 5, Be);
}),
(proto.BidStruct.prototype.getIsAuto = function () {
return _e.Message.getBooleanFieldWithDefault(this, 6, !1);
}),
(proto.BidStruct.prototype.setIsAuto = function (Be) {
return _e.Message.setProto3BooleanField(this, 6, Be);
}),
(proto.BidStruct.prototype.getIncrement = function () {
return _e.Message.getWrapperField(this, proto.IncrementStruct, 7);
}),
(proto.BidStruct.prototype.setIncrement = function (Be) {
return _e.Message.setWrapperField(this, 7, Be);
}),
(proto.BidStruct.prototype.clearIncrement = function () {
return this.setIncrement(void 0);
}),
(proto.BidStruct.prototype.hasIncrement = function () {
return null != _e.Message.getField(this, 7);
}),
(proto.BidStruct.prototype.getNextamount = function () {
return _e.Message.getFieldWithDefault(this, 8, 0);
}),
(proto.BidStruct.prototype.setNextamount = function (Be) {
return _e.Message.setProto3IntField(this, 8, Be);
}),
(proto.BidStruct.prototype.getNextsmallamount = function () {
return _e.Message.getFieldWithDefault(this, 9, 0);
}),
(proto.BidStruct.prototype.setNextsmallamount = function (Be) {
return _e.Message.setProto3IntField(this, 9, Be);
}),
(proto.BidStruct.prototype.getNextmediumamount = function () {
return _e.Message.getFieldWithDefault(this, 10, 0);
}),
(proto.BidStruct.prototype.setNextmediumamount = function (Be) {
return _e.Message.setProto3IntField(this, 10, Be);
}),
(proto.BidStruct.prototype.getNextbigamount = function () {
return _e.Message.getFieldWithDefault(this, 11, 0);
}),
(proto.BidStruct.prototype.setNextbigamount = function (Be) {
return _e.Message.setProto3IntField(this, 11, Be);
}),
(proto.BidStruct.prototype.getNextsmallvehicleamount = function () {
return _e.Message.getFieldWithDefault(this, 12, 0);
}),
(proto.BidStruct.prototype.setNextsmallvehicleamount = function (Be) {
return _e.Message.setProto3IntField(this, 12, Be);
}),
(proto.BidStruct.prototype.getNextmediumvehicleamount = function () {
return _e.Message.getFieldWithDefault(this, 13, 0);
}),
(proto.BidStruct.prototype.setNextmediumvehicleamount = function (Be) {
return _e.Message.setProto3IntField(this, 13, Be);
}),
(proto.BidStruct.prototype.getNextstandardamount = function () {
return _e.Message.getFieldWithDefault(this, 14, 0);
}),
(proto.BidStruct.prototype.setNextstandardamount = function (Be) {
return _e.Message.setProto3IntField(this, 14, Be);
}),
(proto.BidStruct.prototype.getNextmodel10amount = function () {
return _e.Message.getFieldWithDefault(this, 15, 0);
}),
(proto.BidStruct.prototype.setNextmodel10amount = function (Be) {
return _e.Message.setProto3IntField(this, 15, Be);
}),
_e.Message.GENERATE_TO_OBJECT &&
((proto.LotStruct.prototype.toObject = function (Be) {
return proto.LotStruct.toObject(Be, this);
}),
(proto.LotStruct.toObject = function (Be, Re) {
var Ue = { lotId: _e.Message.getFieldWithDefault(Re, 1, 0), state: _e.Message.getFieldWithDefault(Re, 2, 0), nextLotId: _e.Message.getFieldWithDefault(Re, 3, 0) };
return Be && (Ue.$jspbMessageInstance = Re), Ue;
})),
(proto.LotStruct.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.LotStruct();
return proto.LotStruct.deserializeBinaryFromReader(Ue, Re);
}),
(proto.LotStruct.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = Re.readUint32();
Be.setLotId(Ue);
break;
case 2:
Ue = Re.readEnum();
Be.setState(Ue);
break;
case 3:
Ue = Re.readUint32();
Be.setNextLotId(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.LotStruct.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.LotStruct.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.LotStruct.serializeBinaryToWriter = function (Be, Re) {
var Ue = void 0;
0 !== (Ue = Be.getLotId()) && Re.writeUint32(1, Ue), 0 !== (Ue = Be.getState()) && Re.writeEnum(2, Ue), 0 !== (Ue = Be.getNextLotId()) && Re.writeUint32(3, Ue);
}),
(proto.LotStruct.State = { NEW: 0, MAP: 1, BIDDING: 2, ADJ: 3, ADJ_CANCELED: 4 }),
(proto.LotStruct.prototype.getLotId = function () {
return _e.Message.getFieldWithDefault(this, 1, 0);
}),
(proto.LotStruct.prototype.setLotId = function (Be) {
return _e.Message.setProto3IntField(this, 1, Be);
}),
(proto.LotStruct.prototype.getState = function () {
return _e.Message.getFieldWithDefault(this, 2, 0);
}),
(proto.LotStruct.prototype.setState = function (Be) {
return _e.Message.setProto3EnumField(this, 2, Be);
}),
(proto.LotStruct.prototype.getNextLotId = function () {
return _e.Message.getFieldWithDefault(this, 3, 0);
}),
(proto.LotStruct.prototype.setNextLotId = function (Be) {
return _e.Message.setProto3IntField(this, 3, Be);
}),
(proto.VenteStruct.repeatedFields_ = [4, 5, 6]),
_e.Message.GENERATE_TO_OBJECT &&
((proto.VenteStruct.prototype.toObject = function (Be) {
return proto.VenteStruct.toObject(Be, this);
}),
(proto.VenteStruct.toObject = function (Be, Re) {
var Ue,
Ye = {
venteId: _e.Message.getFieldWithDefault(Re, 1, 0),
bid: (Ue = Re.getBid()) && proto.BidStruct.toObject(Be, Ue),
lot: (Ue = Re.getLot()) && proto.LotStruct.toObject(Be, Ue),
connectedRegisteredListList: null == (Ue = _e.Message.getRepeatedField(Re, 4)) ? void 0 : Ue,
connectedSpectatorListList: null == (Ue = _e.Message.getRepeatedField(Re, 5)) ? void 0 : Ue,
connectedCyberclercListList: null == (Ue = _e.Message.getRepeatedField(Re, 6)) ? void 0 : Ue,
isfreebidauthorized: _e.Message.getBooleanFieldWithDefault(Re, 7, !1),
connectedbiddercount: _e.Message.getFieldWithDefault(Re, 8, 0),
connectedspectatorcount: _e.Message.getFieldWithDefault(Re, 9, 0),
readytobidcount: _e.Message.getFieldWithDefault(Re, 10, 0),
};
return Be && (Ye.$jspbMessageInstance = Re), Ye;
})),
(proto.VenteStruct.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.VenteStruct();
return proto.VenteStruct.deserializeBinaryFromReader(Ue, Re);
}),
(proto.VenteStruct.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = Re.readUint32();
Be.setVenteId(Ue);
break;
case 2:
Ue = new proto.BidStruct();
Re.readMessage(Ue, proto.BidStruct.deserializeBinaryFromReader), Be.setBid(Ue);
break;
case 3:
Ue = new proto.LotStruct();
Re.readMessage(Ue, proto.LotStruct.deserializeBinaryFromReader), Be.setLot(Ue);
break;
case 4:
for (var _e = Re.isDelimited() ? Re.readPackedUint32() : [Re.readUint32()], Ye = 0; Ye < _e.length; Ye++) Be.addConnectedRegisteredList(_e[Ye]);
break;
case 5:
for (_e = Re.isDelimited() ? Re.readPackedUint32() : [Re.readUint32()], Ye = 0; Ye < _e.length; Ye++) Be.addConnectedSpectatorList(_e[Ye]);
break;
case 6:
for (_e = Re.isDelimited() ? Re.readPackedUint32() : [Re.readUint32()], Ye = 0; Ye < _e.length; Ye++) Be.addConnectedCyberclercList(_e[Ye]);
break;
case 7:
Ue = Re.readBool();
Be.setIsfreebidauthorized(Ue);
break;
case 8:
Ue = Re.readUint32();
Be.setConnectedbiddercount(Ue);
break;
case 9:
Ue = Re.readUint32();
Be.setConnectedspectatorcount(Ue);
break;
case 10:
Ue = Re.readUint32();
Be.setReadytobidcount(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.VenteStruct.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.VenteStruct.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.VenteStruct.serializeBinaryToWriter = function (Be, Re) {
var Ue = void 0;
0 !== (Ue = Be.getVenteId()) && Re.writeUint32(1, Ue),
null != (Ue = Be.getBid()) && Re.writeMessage(2, Ue, proto.BidStruct.serializeBinaryToWriter),
null != (Ue = Be.getLot()) && Re.writeMessage(3, Ue, proto.LotStruct.serializeBinaryToWriter),
(Ue = Be.getConnectedRegisteredListList()).length > 0 && Re.writePackedUint32(4, Ue),
(Ue = Be.getConnectedSpectatorListList()).length > 0 && Re.writePackedUint32(5, Ue),
(Ue = Be.getConnectedCyberclercListList()).length > 0 && Re.writePackedUint32(6, Ue),
(Ue = Be.getIsfreebidauthorized()) && Re.writeBool(7, Ue),
0 !== (Ue = Be.getConnectedbiddercount()) && Re.writeUint32(8, Ue),
0 !== (Ue = Be.getConnectedspectatorcount()) && Re.writeUint32(9, Ue),
0 !== (Ue = Be.getReadytobidcount()) && Re.writeUint32(10, Ue);
}),
(proto.VenteStruct.prototype.getVenteId = function () {
return _e.Message.getFieldWithDefault(this, 1, 0);
}),
(proto.VenteStruct.prototype.setVenteId = function (Be) {
return _e.Message.setProto3IntField(this, 1, Be);
}),
(proto.VenteStruct.prototype.getBid = function () {
return _e.Message.getWrapperField(this, proto.BidStruct, 2);
}),
(proto.VenteStruct.prototype.setBid = function (Be) {
return _e.Message.setWrapperField(this, 2, Be);
}),
(proto.VenteStruct.prototype.clearBid = function () {
return this.setBid(void 0);
}),
(proto.VenteStruct.prototype.hasBid = function () {
return null != _e.Message.getField(this, 2);
}),
(proto.VenteStruct.prototype.getLot = function () {
return _e.Message.getWrapperField(this, proto.LotStruct, 3);
}),
(proto.VenteStruct.prototype.setLot = function (Be) {
return _e.Message.setWrapperField(this, 3, Be);
}),
(proto.VenteStruct.prototype.clearLot = function () {
return this.setLot(void 0);
}),
(proto.VenteStruct.prototype.hasLot = function () {
return null != _e.Message.getField(this, 3);
}),
(proto.VenteStruct.prototype.getConnectedRegisteredListList = function () {
return _e.Message.getRepeatedField(this, 4);
}),
(proto.VenteStruct.prototype.setConnectedRegisteredListList = function (Be) {
return _e.Message.setField(this, 4, Be || []);
}),
(proto.VenteStruct.prototype.addConnectedRegisteredList = function (Be, Re) {
return _e.Message.addToRepeatedField(this, 4, Be, Re);
}),
(proto.VenteStruct.prototype.clearConnectedRegisteredListList = function () {
return this.setConnectedRegisteredListList([]);
}),
(proto.VenteStruct.prototype.getConnectedSpectatorListList = function () {
return _e.Message.getRepeatedField(this, 5);
}),
(proto.VenteStruct.prototype.setConnectedSpectatorListList = function (Be) {
return _e.Message.setField(this, 5, Be || []);
}),
(proto.VenteStruct.prototype.addConnectedSpectatorList = function (Be, Re) {
return _e.Message.addToRepeatedField(this, 5, Be, Re);
}),
(proto.VenteStruct.prototype.clearConnectedSpectatorListList = function () {
return this.setConnectedSpectatorListList([]);
}),
(proto.VenteStruct.prototype.getConnectedCyberclercListList = function () {
return _e.Message.getRepeatedField(this, 6);
}),
(proto.VenteStruct.prototype.setConnectedCyberclercListList = function (Be) {
return _e.Message.setField(this, 6, Be || []);
}),
(proto.VenteStruct.prototype.addConnectedCyberclercList = function (Be, Re) {
return _e.Message.addToRepeatedField(this, 6, Be, Re);
}),
(proto.VenteStruct.prototype.clearConnectedCyberclercListList = function () {
return this.setConnectedCyberclercListList([]);
}),
(proto.VenteStruct.prototype.getIsfreebidauthorized = function () {
return _e.Message.getBooleanFieldWithDefault(this, 7, !1);
}),
(proto.VenteStruct.prototype.setIsfreebidauthorized = function (Be) {
return _e.Message.setProto3BooleanField(this, 7, Be);
}),
(proto.VenteStruct.prototype.getConnectedbiddercount = function () {
return _e.Message.getFieldWithDefault(this, 8, 0);
}),
(proto.VenteStruct.prototype.setConnectedbiddercount = function (Be) {
return _e.Message.setProto3IntField(this, 8, Be);
}),
(proto.VenteStruct.prototype.getConnectedspectatorcount = function () {
return _e.Message.getFieldWithDefault(this, 9, 0);
}),
(proto.VenteStruct.prototype.setConnectedspectatorcount = function (Be) {
return _e.Message.setProto3IntField(this, 9, Be);
}),
(proto.VenteStruct.prototype.getReadytobidcount = function () {
return _e.Message.getFieldWithDefault(this, 10, 0);
}),
(proto.VenteStruct.prototype.setReadytobidcount = function (Be) {
return _e.Message.setProto3IntField(this, 10, Be);
}),
_e.Message.GENERATE_TO_OBJECT &&
((proto.ClientStruct.prototype.toObject = function (Be) {
return proto.ClientStruct.toObject(Be, this);
}),
(proto.ClientStruct.toObject = function (Be, Re) {
var Ue = {
sessionId: _e.Message.getFieldWithDefault(Re, 1, ""),
passeportId: _e.Message.getFieldWithDefault(Re, 2, 0),
uuid: _e.Message.getFieldWithDefault(Re, 3, ""),
permission: _e.Message.getFieldWithDefault(Re, 4, 0),
activity: _e.Message.getFieldWithDefault(Re, 5, 0),
pingdelay: _e.Message.getFieldWithDefault(Re, 6, 0),
maxamount: _e.Message.getFieldWithDefault(Re, 7, 0),
hasnolimit: _e.Message.getBooleanFieldWithDefault(Re, 8, !1),
token: _e.Message.getFieldWithDefault(Re, 9, ""),
refreshtoken: _e.Message.getFieldWithDefault(Re, 10, ""),
};
return Be && (Ue.$jspbMessageInstance = Re), Ue;
})),
(proto.ClientStruct.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.ClientStruct();
return proto.ClientStruct.deserializeBinaryFromReader(Ue, Re);
}),
(proto.ClientStruct.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = Re.readString();
Be.setSessionId(Ue);
break;
case 2:
Ue = Re.readUint32();
Be.setPasseportId(Ue);
break;
case 3:
Ue = Re.readString();
Be.setUuid(Ue);
break;
case 4:
Ue = Re.readEnum();
Be.setPermission(Ue);
break;
case 5:
Ue = Re.readEnum();
Be.setActivity(Ue);
break;
case 6:
Ue = Re.readUint32();
Be.setPingdelay(Ue);
break;
case 7:
Ue = Re.readUint32();
Be.setMaxamount(Ue);
break;
case 8:
Ue = Re.readBool();
Be.setHasnolimit(Ue);
break;
case 9:
Ue = Re.readString();
Be.setToken(Ue);
break;
case 10:
Ue = Re.readString();
Be.setRefreshtoken(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.ClientStruct.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.ClientStruct.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.ClientStruct.serializeBinaryToWriter = function (Be, Re) {
var Ue = void 0;
(Ue = Be.getSessionId()).length > 0 && Re.writeString(1, Ue),
0 !== (Ue = Be.getPasseportId()) && Re.writeUint32(2, Ue),
(Ue = Be.getUuid()).length > 0 && Re.writeString(3, Ue),
0 !== (Ue = Be.getPermission()) && Re.writeEnum(4, Ue),
0 !== (Ue = Be.getActivity()) && Re.writeEnum(5, Ue),
0 !== (Ue = Be.getPingdelay()) && Re.writeUint32(6, Ue),
0 !== (Ue = Be.getMaxamount()) && Re.writeUint32(7, Ue),
(Ue = Be.getHasnolimit()) && Re.writeBool(8, Ue),
(Ue = Be.getToken()).length > 0 && Re.writeString(9, Ue),
(Ue = Be.getRefreshtoken()).length > 0 && Re.writeString(10, Ue);
}),
(proto.ClientStruct.Permission = { BIDDER: 0, CYBER: 1, SPECTATOR: 2 }),
(proto.ClientStruct.Activity = { IDLE: 0, ACTIVE: 1, OVER: 2, OUT: 3 }),
(proto.ClientStruct.prototype.getSessionId = function () {
return _e.Message.getFieldWithDefault(this, 1, "");
}),
(proto.ClientStruct.prototype.setSessionId = function (Be) {
return _e.Message.setProto3StringField(this, 1, Be);
}),
(proto.ClientStruct.prototype.getPasseportId = function () {
return _e.Message.getFieldWithDefault(this, 2, 0);
}),
(proto.ClientStruct.prototype.setPasseportId = function (Be) {
return _e.Message.setProto3IntField(this, 2, Be);
}),
(proto.ClientStruct.prototype.getUuid = function () {
return _e.Message.getFieldWithDefault(this, 3, "");
}),
(proto.ClientStruct.prototype.setUuid = function (Be) {
return _e.Message.setProto3StringField(this, 3, Be);
}),
(proto.ClientStruct.prototype.getPermission = function () {
return _e.Message.getFieldWithDefault(this, 4, 0);
}),
(proto.ClientStruct.prototype.setPermission = function (Be) {
return _e.Message.setProto3EnumField(this, 4, Be);
}),
(proto.ClientStruct.prototype.getActivity = function () {
return _e.Message.getFieldWithDefault(this, 5, 0);
}),
(proto.ClientStruct.prototype.setActivity = function (Be) {
return _e.Message.setProto3EnumField(this, 5, Be);
}),
(proto.ClientStruct.prototype.getPingdelay = function () {
return _e.Message.getFieldWithDefault(this, 6, 0);
}),
(proto.ClientStruct.prototype.setPingdelay = function (Be) {
return _e.Message.setProto3IntField(this, 6, Be);
}),
(proto.ClientStruct.prototype.getMaxamount = function () {
return _e.Message.getFieldWithDefault(this, 7, 0);
}),
(proto.ClientStruct.prototype.setMaxamount = function (Be) {
return _e.Message.setProto3IntField(this, 7, Be);
}),
(proto.ClientStruct.prototype.getHasnolimit = function () {
return _e.Message.getBooleanFieldWithDefault(this, 8, !1);
}),
(proto.ClientStruct.prototype.setHasnolimit = function (Be) {
return _e.Message.setProto3BooleanField(this, 8, Be);
}),
(proto.ClientStruct.prototype.getToken = function () {
return _e.Message.getFieldWithDefault(this, 9, "");
}),
(proto.ClientStruct.prototype.setToken = function (Be) {
return _e.Message.setProto3StringField(this, 9, Be);
}),
(proto.ClientStruct.prototype.getRefreshtoken = function () {
return _e.Message.getFieldWithDefault(this, 10, "");
}),
(proto.ClientStruct.prototype.setRefreshtoken = function (Be) {
return _e.Message.setProto3StringField(this, 10, Be);
}),
_e.Message.GENERATE_TO_OBJECT &&
((proto.LiveBiddingMessage.prototype.toObject = function (Be) {
return proto.LiveBiddingMessage.toObject(Be, this);
}),
(proto.LiveBiddingMessage.toObject = function (Be, Re) {
var Ue,
Ye = {
type: _e.Message.getFieldWithDefault(Re, 1, 0),
client: (Ue = Re.getClient()) && proto.ClientStruct.toObject(Be, Ue),
vente: (Ue = Re.getVente()) && proto.VenteStruct.toObject(Be, Ue),
message: _e.Message.getFieldWithDefault(Re, 4, ""),
paramsMap: (Ue = Re.getParamsMap()) ? Ue.toObject(Be, void 0) : [],
pingtime: _e.Message.getFieldWithDefault(Re, 6, 0),
};
return Be && (Ye.$jspbMessageInstance = Re), Ye;
})),
(proto.LiveBiddingMessage.deserializeBinary = function (Be) {
var Re = new _e.BinaryReader(Be),
Ue = new proto.LiveBiddingMessage();
return proto.LiveBiddingMessage.deserializeBinaryFromReader(Ue, Re);
}),
(proto.LiveBiddingMessage.deserializeBinaryFromReader = function (Be, Re) {
for (; Re.nextField() && !Re.isEndGroup(); ) {
switch (Re.getFieldNumber()) {
case 1:
var Ue = Re.readEnum();
Be.setType(Ue);
break;
case 2:
Ue = new proto.ClientStruct();
Re.readMessage(Ue, proto.ClientStruct.deserializeBinaryFromReader), Be.setClient(Ue);
break;
case 3:
Ue = new proto.VenteStruct();
Re.readMessage(Ue, proto.VenteStruct.deserializeBinaryFromReader), Be.setVente(Ue);
break;
case 4:
Ue = Re.readString();
Be.setMessage(Ue);
break;
case 5:
Ue = Be.getParamsMap();
Re.readMessage(Ue, function (Be, Re) {
_e.Map.deserializeBinary(Be, Re, _e.BinaryReader.prototype.readString, _e.BinaryReader.prototype.readString, null, "", "");
});
break;
case 6:
Ue = Re.readInt64();
Be.setPingtime(Ue);
break;
default:
Re.skipField();
}
}
return Be;
}),
(proto.LiveBiddingMessage.prototype.serializeBinary = function () {
var Be = new _e.BinaryWriter();
return proto.LiveBiddingMessage.serializeBinaryToWriter(this, Be), Be.getResultBuffer();
}),
(proto.LiveBiddingMessage.serializeBinaryToWriter = function (Be, Re) {
var Ue = void 0;
0 !== (Ue = Be.getType()) && Re.writeEnum(1, Ue),
null != (Ue = Be.getClient()) && Re.writeMessage(2, Ue, proto.ClientStruct.serializeBinaryToWriter),
null != (Ue = Be.getVente()) && Re.writeMessage(3, Ue, proto.VenteStruct.serializeBinaryToWriter),
(Ue = Be.getMessage()).length > 0 && Re.writeString(4, Ue),
(Ue = Be.getParamsMap(!0)) && Ue.getLength() > 0 && Ue.serializeBinary(5, Re, _e.BinaryWriter.prototype.writeString, _e.BinaryWriter.prototype.writeString),
0 !== (Ue = Be.getPingtime()) && Re.writeInt64(6, Ue);
}),
(proto.LiveBiddingMessage.Type = {
PING: 0,
PONG: 1,
INIT: 2,
CLOSE: 3,
BID: 4,
SELECT_LOT: 5,
STARTING_PRICE: 6,
INCREMENT: 7,
TENDERING: 8,
GENERIC_MESSAGE: 9,
CREATE_LOT: 10,
NOT_INTERESTED: 11,
INTERESTED: 12,
ACTIVITY: 13,
NEW_CLIENT: 14,
CLOSED_CLIENT: 15,
KILL: 16,
MULTILOT_REQUEST: 17,
MULTILOT_RESPONSE: 18,
SYNC_PAYMENT_LIMIT: 19,
SWITCH_FREE_BID_AUTHORIZE: 20,
REFRESH_CLIENTS_COUNT: 21,
}),
(proto.LiveBiddingMessage.prototype.getType = function () {
return _e.Message.getFieldWithDefault(this, 1, 0);
}),
(proto.LiveBiddingMessage.prototype.setType = function (Be) {
return _e.Message.setProto3EnumField(this, 1, Be);
}),
(proto.LiveBiddingMessage.prototype.getClient = function () {
return _e.Message.getWrapperField(this, proto.ClientStruct, 2);
}),
(proto.LiveBiddingMessage.prototype.setClient = function (Be) {
return _e.Message.setWrapperField(this, 2, Be);
}),
(proto.LiveBiddingMessage.prototype.clearClient = function () {
return this.setClient(void 0);
}),
(proto.LiveBiddingMessage.prototype.hasClient = function () {
return null != _e.Message.getField(this, 2);
}),
(proto.LiveBiddingMessage.prototype.getVente = function () {
return _e.Message.getWrapperField(this, proto.VenteStruct, 3);
}),
(proto.LiveBiddingMessage.prototype.setVente = function (Be) {
return _e.Message.setWrapperField(this, 3, Be);
}),
(proto.LiveBiddingMessage.prototype.clearVente = function () {
return this.setVente(void 0);
}),
(proto.LiveBiddingMessage.prototype.hasVente = function () {
return null != _e.Message.getField(this, 3);
}),
(proto.LiveBiddingMessage.prototype.getMessage = function () {
return _e.Message.getFieldWithDefault(this, 4, "");
}),
(proto.LiveBiddingMessage.prototype.setMessage = function (Be) {
return _e.Message.setProto3StringField(this, 4, Be);
}),
(proto.LiveBiddingMessage.prototype.getParamsMap = function (Be) {
return _e.Message.getMapField(this, 5, Be, null);
}),
(proto.LiveBiddingMessage.prototype.clearParamsMap = function () {
return this.getParamsMap().clear(), this;
}),
(proto.LiveBiddingMessage.prototype.getPingtime = function () {
return _e.Message.getFieldWithDefault(this, 6, 0);
}),
(proto.LiveBiddingMessage.prototype.setPingtime = function (Be) {
return _e.Message.setProto3IntField(this, 6, Be);
}),
Ye.object.extend(Re, proto);
const Ze = proto.LiveBiddingMessage,
$e = proto.VenteStruct,
tt = proto.ClientStruct,
nt = proto.BidStruct,
rt = proto.LotStruct,
ot = proto.IncrementStruct,
it = proto.IncrementData,
at = proto.IncrementStep;

View File

@ -23,6 +23,7 @@ class Interencheres extends Scraper {
this._USER = ""
this._PWD = ""
this._PATH_SESSION_FILE = ".session/session_inter.json"
this._BROWSER_TOOL = "puppeteerBrowser"
}
getPictures = async ({ page, data}) => {
@ -148,21 +149,41 @@ class Interencheres extends Scraper {
return LotList
}
// ### Puppeteer
// ###########################################################################
async CheckCookieDialog(page) {
console.log("-- CheckCookieDialog --")
return new Promise(async (resolve, reject) => {
const CookieButton = await page.$('//button[contains(@class, "cpm-cookies-bar-cta-refus") and contains(text(), "Refuser")]');
//console.log(CookieButton)
if (CookieButton && await CookieButton.isVisible()) {
console.log("-- Click on CookieButton --")
await CookieButton.click();
}
resolve(true)
})
}
Live = async (browser) => {
console.log("Live "+this._Name+": "+this.Url)
const page = await browser.newPage();
let CheckAskStop = null;
let Socket = null;
const StopLive = async (params) => {
clearInterval(CheckAskStop);
Socket.off('Network.webSocketFrameReceived', listener);
//Socket.off('Network.webSocketFrameReceived', listener);
page.close()
browser.close()
}
const listener = async (params) => {
let payload = params.response.payloadData
if(payload.length>1 && payload.substring(0, 2) == '42'){
payload = JSON.parse(payload.substring(2))
@ -246,6 +267,7 @@ class Interencheres extends Scraper {
try{
await page.goto(this.Url);
Socket = await page.target().createCDPSession();
await Socket.send('Network.enable');
await Socket.send('Page.enable');
@ -260,7 +282,7 @@ class Interencheres extends Scraper {
StopLive()
}
})
}, 10000); // 10000 milliseconds = 10 seconds
}, 5000); // 10000 milliseconds = 5 seconds
}catch(e){
console.log('Error : '+e)

View File

@ -299,7 +299,8 @@ class InterencheresData extends ScraperTools {
const SaleTitleXPath = [
'/html/body/div[1]/div/div/div/main/div/div/div/div/div/div[1]/div/div[1]/div[2]/h1/div/div/div/div/div',
'/html/body/div[1]/div/div/div/main/div/div/div/div/div/div[1]/div/div/div/h1/div/div/div/div/div',
'/html/body/div[1]/div/div/div/main/div/div/div/div/div/div[1]/div/div/div/div/h1/div/div/div/div/div'
'/html/body/div[1]/div/div/div/main/div/div/div/div/div/div[1]/div/div/div/div/h1/div/div/div/div/div',
'/html/body/div[1]/div/div/div[1]/main/div/div/div/div/div/div[1]/div/div/div/div/h1/div/div/div/div/div'
]
let SaleTitle = await this.getTextContent(SaleTitleXPath, page, 'SaleTitleXPath')
return SaleTitle

View File

@ -14,6 +14,8 @@ class Scraper {
_PATH_SESSION_FILE = ""
_BROWSER_TOOL = null
_Proxy = ""
_DebugMode = false
@ -23,29 +25,43 @@ class Scraper {
this.Url = Url;
}
async _saveSession(page) {
async _getContext(browser) {
return new Promise(async (resolve, reject) => {
console.log('-- Save Session --')
const cookies = await page.cookies();
//console.log(cookies)
//await fs.writeFile(this._PATH_SESSION_FILE, JSON.stringify(cookies));
fs.writeFileSync(this._PATH_SESSION_FILE, JSON.stringify(cookies));
resolve(page)
try {
if (fs.existsSync(this._PATH_SESSION_FILE)) {
resolve(await browser.newContext({
storageState: this._PATH_SESSION_FILE,
timezoneId: 'Europe/Paris',
extraHTTPHeaders: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0',
'Accept-Language': 'fr-FR,fr;q=0.9'
}
}));
} else {
resolve(await browser.newContext({
timezoneId: 'Europe/Paris',
extraHTTPHeaders: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0',
'Accept-Language': 'fr-FR,fr;q=0.9'
}
}));
}
}catch(e){
console.error('Error: '+e)
reject(new Error('Error: '+e))
}
})
}
async _restoreSession(page) {
async _saveSession(page) {
return new Promise(async (resolve, reject) => {
if (fs.existsSync(this._PATH_SESSION_FILE)) {
console.log('-- restore Session --')
const cookies = JSON.parse(fs.readFileSync(this._PATH_SESSION_FILE));
await page.setCookie(...cookies);
}
console.log('-- Save Session --')
await page.context().storageState({ path: this._PATH_SESSION_FILE });
resolve(page)
})
}
getPictures({ page, data}) {

View File

@ -0,0 +1,103 @@
{
"cookies": [
{
"name": "locale",
"value": "fr",
"domain": ".drouot.com",
"path": "/",
"expires": -1,
"httpOnly": false,
"secure": false,
"sameSite": "Lax"
},
{
"name": "JSESSIONID",
"value": "CEE9A69D532738CA6F448BC54BD5FA98",
"domain": "drouot.com",
"path": "/",
"expires": -1,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
},
{
"name": "cf_clearance",
"value": "Nw88GFRRH4A.R3IrqBs1WHV3v2j6b72TL4xFNt1qtRY-1716455904-1.0.1.1-YiA2MwdTbDytd5SaxdOm_F7ru5Q5bW.MaPs1FxJrr7YtILq0z0u9a4Lghyt2DIaNM_b_2hbki5IKioTVnUlqkQ",
"domain": ".drouot.com",
"path": "/",
"expires": 1747991903.778234,
"httpOnly": true,
"secure": true,
"sameSite": "None"
},
{
"name": "consentLevel",
"value": "none",
"domain": "drouot.com",
"path": "/",
"expires": 1732353503,
"httpOnly": false,
"secure": false,
"sameSite": "Lax"
},
{
"name": "aws.auth.refresh",
"value": "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.ej0FDIw3VwTFabbv_Xrthwn6QRxOrGSlTP8P-hM3xyDmhigcIepCgEUlgjSO-taBevdDgiDNuRZ2ymbsmSHjBTgtPPhBJMlNW1CJMFpf34cnHp8P8fNso7KVZH98CVT8a-klxeNUw8sJbzV76E2pefGPiKahMbgNcct6I4C0lmK60569b1ADgDJUXoZ3ZWLM5h7dmu2_zEwcu3rcJSAZvqLBQBrBhw1ck2tivoMVl0Rp3rRDmYCkbvjYpVxozv_KCBA1pKdm_n1E78T4nlJR12UVZKwGj4TnM3_AiV43J-FUKkj-rDEoPfJrWlZh0J3aV403sDGeO_R7C8zOvMz8qQ.HTEsnaMZSmoB5bMT.CPMenx7Y1fkZnG3xdudDXwto0S9nXhlrviwGAUaEV0PdAiN1JRyWyfd2gfZ9gqDJ6CxBog-kZ45nttrdY2JjS71HgBfrg3RAqRqUyiRd9OLUTtHXgysdf6tXGZYqm2j62uTzq5aYWwr_KUMEYKqH45TrxAEnBGlCaKX5ielLghK6ZA_EWrOK3oJW3aM_-mZKD0vrJd9_iwVAUMKk_hdCF1UFqsuVHXZqXxQ_iOPzyd_t5Ui_2WgVqqLZTteAsFwr_L_TqpoM11AgSH-8a1ad05JwCdeMxyhZnW8Gf172Yt7pVzUFuV491KAxXdsgxCbFIhReYhOqABCsS9fKKbi6VBDtDBrRqGeiHgfOapVMLeg8-Va-_YGa1_4oRbX_zye_HTz3WE-xmBBwt98PVEJp4pWr2lY7wDgisqzLgI8foWm1YVWFD5rypAsJxEu-9-25SVErMVlptRaZ650YFHWNrkEr3oeqzwriIxMEjm92gxgVPQOO0Q5gqj9WcUHrbeq01xr6WBhX84AqGqTpT-kxbSrFBxHFMM3zhPey4ElJ2unc_ppj2r96e3FNjTmhRdhYYz827oewmJZZwhAF2KI8a_MEz6-W18b5ju0teM4lWBWRedq8IMeTFuEZ8-nlkQTiDnsSFXqZNtFVfJGcbKKTX8LCm708DrG5QGvqjycOkXrrnw-OCaUibCWbymJzwYdPD1sLLhitMpgI6pKW8H74K7bIb_v2IeMo3hH9gm2n6SI120EpD7n74UCIGx1fn5CB28neuj-_BegrcZNd6KEs0iPEhNOpHKd7k_G8riKX-ZtKIQcqZ8MtwAvjWVVFELEkpXR2IwfW2jXzBObIvcDYYNVijroFUZ-8oObp0dAIaUFtoByIzw3VOzOc4qbCSyelFC1YyoZJgbNW2ic6ZvL8pdzYTogjI_XHakVLBk8jeRg95SXtz9XzpLyx_ZoTX5LzEh5T897tOePl1NmIptU17IiBuwxFj_nYoVgDYbbGz1ox9vEWdrAE6EpfzhFrxWVMijyfjyauWaixri-harPAbhirrGG7QEeURqv0LCMMy1w3LyaZ9p9saG3DzX0yzrERgXMNvbFi4OYY3Cb0O8bo0kjHVY7a6Yj_qKKpfIKGclRKmndxkLK5A6JJkqy4fSLK-v9RbpWUiTC-_0L2k9lEGiK5rgPhMSRhyI5XYUW1rbB_XEKPU12M5uxER0NvjomXgTUy0yOdbDfpIYb89Bs2BK-SE0MAJSepzC8bsW4CWOnfCWGnuOGQphRfCuxAIkvd-4Lwm-Nyt8-Mmvh5VhQw79v8mx2eZNzk4DyiTDbSQUwdoCoEpgyoQnvnxObYVxXUeixB.LW8iCOUVXGCbeHw2rTF6Uw",
"domain": ".drouot.com",
"path": "/",
"expires": 1718955905.860105,
"httpOnly": false,
"secure": true,
"sameSite": "Lax"
},
{
"name": "aws.auth.id",
"value": "eyJraWQiOiJaTktsNEx3c1NcL0xyYVdwaGVtcHE4OWVLWk05eUtUemtUQW40ZlM2bXFtST0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1ODY0NWVjYS1mNDllLTQ1YTktOWI0ZC1lNTg0M2RhZWNjNWUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tXC9ldS1jZW50cmFsLTFfWE5GWDNIMzE0IiwiY29nbml0bzp1c2VybmFtZSI6IjU4NjQ1ZWNhLWY0OWUtNDVhOS05YjRkLWU1ODQzZGFlY2M1ZSIsIm9yaWdpbl9qdGkiOiI2YjUxMTM2Mi1kYmMwLTQ3MDctYjA0Zi05YTVmNzQyZjM5YjAiLCJhdWQiOiI0amNsZG9ib2YycWJuc3NtN2YxMDdnbGlxOCIsImV2ZW50X2lkIjoiNDAwNGViODItNDg1Mi00OTk2LWFjMjctNWQ1MTBiMmI3NTJmIiwidG9rZW5fdXNlIjoiaWQiLCJhdXRoX3RpbWUiOjE3MTY0NTU5MDUsImV4cCI6MTcxNjQ1OTUwNiwiaWF0IjoxNzE2NDU1OTA2LCJjdXN0b206cGFzc19pZCI6IjczOTAzMCIsImp0aSI6IjZjZjhmYjFlLWU1YTgtNDBkNS04NzkzLTk2YmRjNmZjMDU0ZCIsImVtYWlsIjoianAucmFudUBjb2dpcC5kZSJ9.I6lc4Y-fKSQJ1Vd5Lu41fP6_XuG9yaedk1ZKlXy3iyYV17HVxbypjkdTkgy1vbTU-QdS2gHcp9Ynf90q-PxkMuJZ_IWIU3njhoKE7--U4OkIPf7wfsFKq2rZGcUEyM0DxuedpRYbjN0Xesd6DF8nqWs5WGzy1NZDbXVys3ji0h5Y9H00bX7oypI_2ihFkcpRUYRzv8wywjBYoD8Jc7eOwqzeHNUkbs8L4ON2OnPCNBkJ33HKfw5Prnf4DahiZ9h6Vz0I2CTG4uIjI7yy0PpmDXz81-4JHy9G8NV2rEWTKUvJu1TWsMB5tRH50Ho3TBAqhUafKr1VB9uLTRg3gezsHw",
"domain": ".drouot.com",
"path": "/",
"expires": 1716459506.054849,
"httpOnly": false,
"secure": true,
"sameSite": "Lax"
}
],
"origins": [
{
"origin": "https://auth.drouot.com",
"localStorage": [
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.accessToken",
"value": "eyJraWQiOiJYSTd2ejJDRW9pRVwvTnR0UGNkOEY0NE5QSDhHMzMzclJQRVB3OFFwRlJJRT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1ODY0NWVjYS1mNDllLTQ1YTktOWI0ZC1lNTg0M2RhZWNjNWUiLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb21cL2V1LWNlbnRyYWwtMV9YTkZYM0gzMTQiLCJjbGllbnRfaWQiOiI0amNsZG9ib2YycWJuc3NtN2YxMDdnbGlxOCIsIm9yaWdpbl9qdGkiOiI2YjUxMTM2Mi1kYmMwLTQ3MDctYjA0Zi05YTVmNzQyZjM5YjAiLCJldmVudF9pZCI6IjQwMDRlYjgyLTQ4NTItNDk5Ni1hYzI3LTVkNTEwYjJiNzUyZiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE3MTY0NTU5MDUsImV4cCI6MTcxNjQ1OTUwNiwiaWF0IjoxNzE2NDU1OTA2LCJqdGkiOiJkOGViNmNlNS00ZTE3LTRiZmQtYWVkNy01MjBmNzZlOGU2NGYiLCJ1c2VybmFtZSI6IjU4NjQ1ZWNhLWY0OWUtNDVhOS05YjRkLWU1ODQzZGFlY2M1ZSJ9.ltgmmPsITav_sGRrsc7AJz7GzViEGpWc_0qly3dVkZPZfL_NpDxIEz0_-XaikQd_Al_WYZ_k5yvh3DeDJzM4TiBFVVQDPydBb3IkeEj0x7djK_Yj5JUXM-SxaDIrtCkzXhxrwt_SCa0wkeKoPGfHSDt75-NYo4LXeZ15tntnsox-RoasVEop4HXBejWsfOiBsqptd4N8vCrK67nxiuNHTWZYylUz72iwMxtgwSvMVVNVV3FzU2N-puM8QvHhZQ96tCq0-jwTBVwR-DRdHL7IwbStze3-c53LFxbBmreXKn4aGiQybTEEwpDASeU0-YOl-Hgw4BD9gyOv2ECbINeiGw"
},
{
"name": "persist:root",
"value": "{\"navigation\":\"{\\\"redirUri\\\":\\\"\\\",\\\"initialLocation\\\":\\\"/\\\"}\",\"_persist\":\"{\\\"version\\\":-1,\\\"rehydrated\\\":true}\"}"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.clockDrift",
"value": "-1"
},
{
"name": "amplify-signin-with-hostedUI",
"value": "false"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.LastAuthUser",
"value": "58645eca-f49e-45a9-9b4d-e5843daecc5e"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.userData",
"value": "{\"UserAttributes\":[{\"Name\":\"sub\",\"Value\":\"58645eca-f49e-45a9-9b4d-e5843daecc5e\"},{\"Name\":\"email_verified\",\"Value\":\"true\"},{\"Name\":\"email\",\"Value\":\"jp.ranu@cogip.de\"},{\"Name\":\"custom:pass_id\",\"Value\":\"739030\"}],\"Username\":\"58645eca-f49e-45a9-9b4d-e5843daecc5e\"}"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.idToken",
"value": "eyJraWQiOiJaTktsNEx3c1NcL0xyYVdwaGVtcHE4OWVLWk05eUtUemtUQW40ZlM2bXFtST0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1ODY0NWVjYS1mNDllLTQ1YTktOWI0ZC1lNTg0M2RhZWNjNWUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tXC9ldS1jZW50cmFsLTFfWE5GWDNIMzE0IiwiY29nbml0bzp1c2VybmFtZSI6IjU4NjQ1ZWNhLWY0OWUtNDVhOS05YjRkLWU1ODQzZGFlY2M1ZSIsIm9yaWdpbl9qdGkiOiI2YjUxMTM2Mi1kYmMwLTQ3MDctYjA0Zi05YTVmNzQyZjM5YjAiLCJhdWQiOiI0amNsZG9ib2YycWJuc3NtN2YxMDdnbGlxOCIsImV2ZW50X2lkIjoiNDAwNGViODItNDg1Mi00OTk2LWFjMjctNWQ1MTBiMmI3NTJmIiwidG9rZW5fdXNlIjoiaWQiLCJhdXRoX3RpbWUiOjE3MTY0NTU5MDUsImV4cCI6MTcxNjQ1OTUwNiwiaWF0IjoxNzE2NDU1OTA2LCJjdXN0b206cGFzc19pZCI6IjczOTAzMCIsImp0aSI6ImIwNDEyYTBmLTZiN2UtNDc1YS04NTAyLTU0YmY5ODU5MzkxMiIsImVtYWlsIjoianAucmFudUBjb2dpcC5kZSJ9.Qfnv42vNIezdxohbyA1rF_ebfjeqx-LReTDOsYyWxwXdJC7yceu2P84Chr0DvZ0bo2dVtvgsL4TAV1pwFNjqMr5xSzcFNwDF-MzgBRtRWQ6R5OnHN1IX0zUFP9qZkuhaJMCz2kId84C_1YaXhDKqrK_qcvQ_-W1J11yfEbS4kVVZXf70Ko2eAq4XnTjtnTWURjEHM7KTpAehqoxGG96kmaOz4DQ6BKsGdg8BvuG9W7G9wEoU6pBSPgblnTyVvqYvoOrG_TbK3T0K-a3xyWfeEnqW3omTyN_lWhLInZYCejIqxkgVgqGguZxgB5AV0JC77pyxEKs2DRu642mlsqEDZQ"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.refreshToken",
"value": "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.ej0FDIw3VwTFabbv_Xrthwn6QRxOrGSlTP8P-hM3xyDmhigcIepCgEUlgjSO-taBevdDgiDNuRZ2ymbsmSHjBTgtPPhBJMlNW1CJMFpf34cnHp8P8fNso7KVZH98CVT8a-klxeNUw8sJbzV76E2pefGPiKahMbgNcct6I4C0lmK60569b1ADgDJUXoZ3ZWLM5h7dmu2_zEwcu3rcJSAZvqLBQBrBhw1ck2tivoMVl0Rp3rRDmYCkbvjYpVxozv_KCBA1pKdm_n1E78T4nlJR12UVZKwGj4TnM3_AiV43J-FUKkj-rDEoPfJrWlZh0J3aV403sDGeO_R7C8zOvMz8qQ.HTEsnaMZSmoB5bMT.CPMenx7Y1fkZnG3xdudDXwto0S9nXhlrviwGAUaEV0PdAiN1JRyWyfd2gfZ9gqDJ6CxBog-kZ45nttrdY2JjS71HgBfrg3RAqRqUyiRd9OLUTtHXgysdf6tXGZYqm2j62uTzq5aYWwr_KUMEYKqH45TrxAEnBGlCaKX5ielLghK6ZA_EWrOK3oJW3aM_-mZKD0vrJd9_iwVAUMKk_hdCF1UFqsuVHXZqXxQ_iOPzyd_t5Ui_2WgVqqLZTteAsFwr_L_TqpoM11AgSH-8a1ad05JwCdeMxyhZnW8Gf172Yt7pVzUFuV491KAxXdsgxCbFIhReYhOqABCsS9fKKbi6VBDtDBrRqGeiHgfOapVMLeg8-Va-_YGa1_4oRbX_zye_HTz3WE-xmBBwt98PVEJp4pWr2lY7wDgisqzLgI8foWm1YVWFD5rypAsJxEu-9-25SVErMVlptRaZ650YFHWNrkEr3oeqzwriIxMEjm92gxgVPQOO0Q5gqj9WcUHrbeq01xr6WBhX84AqGqTpT-kxbSrFBxHFMM3zhPey4ElJ2unc_ppj2r96e3FNjTmhRdhYYz827oewmJZZwhAF2KI8a_MEz6-W18b5ju0teM4lWBWRedq8IMeTFuEZ8-nlkQTiDnsSFXqZNtFVfJGcbKKTX8LCm708DrG5QGvqjycOkXrrnw-OCaUibCWbymJzwYdPD1sLLhitMpgI6pKW8H74K7bIb_v2IeMo3hH9gm2n6SI120EpD7n74UCIGx1fn5CB28neuj-_BegrcZNd6KEs0iPEhNOpHKd7k_G8riKX-ZtKIQcqZ8MtwAvjWVVFELEkpXR2IwfW2jXzBObIvcDYYNVijroFUZ-8oObp0dAIaUFtoByIzw3VOzOc4qbCSyelFC1YyoZJgbNW2ic6ZvL8pdzYTogjI_XHakVLBk8jeRg95SXtz9XzpLyx_ZoTX5LzEh5T897tOePl1NmIptU17IiBuwxFj_nYoVgDYbbGz1ox9vEWdrAE6EpfzhFrxWVMijyfjyauWaixri-harPAbhirrGG7QEeURqv0LCMMy1w3LyaZ9p9saG3DzX0yzrERgXMNvbFi4OYY3Cb0O8bo0kjHVY7a6Yj_qKKpfIKGclRKmndxkLK5A6JJkqy4fSLK-v9RbpWUiTC-_0L2k9lEGiK5rgPhMSRhyI5XYUW1rbB_XEKPU12M5uxER0NvjomXgTUy0yOdbDfpIYb89Bs2BK-SE0MAJSepzC8bsW4CWOnfCWGnuOGQphRfCuxAIkvd-4Lwm-Nyt8-Mmvh5VhQw79v8mx2eZNzk4DyiTDbSQUwdoCoEpgyoQnvnxObYVxXUeixB.LW8iCOUVXGCbeHw2rTF6Uw"
}
]
}
]
}

View File

@ -0,0 +1,36 @@
FROM node:slim
# We don't need the standalone Chromium
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
# Install Google Chrome Stable and fonts
# Note: this installs the necessary libs to make the browser work with Puppeteer.
RUN apt-get update && apt-get install gnupg wget -y && \
wget --quiet --output-document=- https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/google-archive.gpg && \
sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \
apt-get update && \
apt-get install google-chrome-stable -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Setting up the work directory
WORKDIR /agent
#Copying all the files in our project
COPY . .
# Installing dependencies
RUN npm install
#RUN npm ci
# Starting our application
#CMD [ "npm", "run", "start" ]
#ENV DEBUG="puppeteer:*"
CMD [ "npm", "run", "dev" ]
# Exposing server port
EXPOSE 3020
# Expose Debugging port
EXPOSE 9229

View File

@ -1,4 +1,4 @@
FROM node:slim
FROM node:20-bookworm
# We don't need the standalone Chromium
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
@ -12,6 +12,9 @@ RUN apt-get update && apt-get install gnupg wget -y && \
apt-get install google-chrome-stable -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Install Playwright
RUN npx -y playwright@1.44.0 install --with-deps
# Setting up the work directory
WORKDIR /agent
@ -20,22 +23,16 @@ COPY . .
# Installing dependencies
RUN npm install
# Add user so we don't need --no-sandbox.
# same layer as npm install to keep re-chowned files from using up several hundred MBs more space
# RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
# && mkdir -p /home/pptruser/Downloads \
# && chown -R pptruser:pptruser /home/pptruser \
# && chown -R pptruser:pptruser ./node_modules \
# && chown -R pptruser:pptruser ./package.json \
# && chown -R pptruser:pptruser ./package-lock.json
# # Run everything after as non-privileged user.
# USER pptruser
#RUN npm ci
# Starting our application
#CMD [ "npm", "run", "debug-cluster" ]
CMD [ "npm", "run", "start" ]
#CMD [ "npm", "run", "start" ]
#ENV DEBUG="puppeteer:*"
CMD [ "npm", "run", "dev" ]
# Exposing server port
EXPOSE 3020
EXPOSE 3020
# Expose Debugging port
EXPOSE 9229

View File

@ -53,8 +53,15 @@ exports.sale = asyncHandler(async (req, res, next) => {
console.log("Agent Follow Sale: ", url)
AuctionPlatform.Live(req.browser)
switch(AuctionPlatform._BROWSER_TOOL){
case "puppeteerBrowser":
AuctionPlatform.Live(req.puppeteerBrowser)
break;
case "playwrightBrowser":
AuctionPlatform.Live(req.playwrightBrowser)
break;
}
res.status(200).send({"Following URL": url})
}else{
res.status(400).send("URL not supported")

View File

@ -5,16 +5,22 @@ var bodyParser = require('body-parser');
app.use(bodyParser.json())
//const puppeteer = require('puppeteer');
//const puppeteerPackage = require('puppeteer/package.json');
const puppeteer = require('puppeteer-extra');
const pluginStealth = require('puppeteer-extra-plugin-stealth');
puppeteer.use(pluginStealth())
const { chromium } = require('playwright');
const puppeteerMiddleware = require('./middleware/puppeteer');
const playwrightMiddleware = require('./middleware/playwright');
(async () => {
app.use(puppeteerMiddleware(puppeteer));
app.use(playwrightMiddleware(chromium));
// main routes
app.use('/internApi/follow', require('./routes/follow'));
app.use('/health', require('./routes/health'));

View File

@ -0,0 +1,12 @@
module.exports = (chromium) => {
return async (req, res, next) => {
const browser = await chromium.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', '--disable-dev-shm-usage'],
headless: true
});
req.playwrightBrowser = browser;
next();
}
}

View File

@ -5,10 +5,10 @@ module.exports = (puppeteer) => {
executablePath: '/usr/bin/google-chrome',
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu'],
ignoreDefaultArgs: ['--disable-extensions'],
headless: 'new'
headless: 'true'
});
req.browser = browser;
req.puppeteerBrowser = browser;
next();
}
}

401
agent/package-lock.json generated
View File

@ -9,12 +9,14 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@playwright/test": "^1.44.0",
"body-parser": "^1.20.2",
"express": "^4.19.2",
"express-async-handler": "^1.2.0",
"moment-timezone": "^0.5.45",
"node-fetch": "^2.6.1",
"puppeteer": "^22.6.4",
"protobufjs": "^7.3.0",
"puppeteer": "^22.10.0",
"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2"
},
@ -23,11 +25,11 @@
}
},
"node_modules/@babel/code-frame": {
"version": "7.24.2",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
"integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz",
"integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==",
"dependencies": {
"@babel/highlight": "^7.24.2",
"@babel/highlight": "^7.24.6",
"picocolors": "^1.0.0"
},
"engines": {
@ -35,19 +37,19 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz",
"integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
"version": "7.24.2",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
"integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz",
"integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.20",
"@babel/helper-validator-identifier": "^7.24.6",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
@ -56,10 +58,78 @@
"node": ">=6.9.0"
}
},
"node_modules/@playwright/test": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.0.tgz",
"integrity": "sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==",
"dependencies": {
"playwright": "1.44.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=16"
}
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
"integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
},
"node_modules/@puppeteer/browsers": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.1.tgz",
"integrity": "sha512-QSXujx4d4ogDamQA8ckkkRieFzDgZEuZuGiey9G7CuDcbnX4iINKWxTPC5Br2AEzY9ICAvcndqgAUFMMKnS/Tw==",
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz",
"integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==",
"dependencies": {
"debug": "4.3.4",
"extract-zip": "2.0.1",
@ -93,11 +163,36 @@
}
}
},
"node_modules/@puppeteer/browsers/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@puppeteer/browsers/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/@puppeteer/browsers/node_modules/semver": {
"version": "7.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@tootallnate/quickjs-emscripten": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
@ -117,10 +212,9 @@
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
},
"node_modules/@types/node": {
"version": "20.12.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
"integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
"optional": true,
"version": "20.12.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
"integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
"dependencies": {
"undici-types": "~5.26.4"
}
@ -134,12 +228,6 @@
"@types/node": "*"
}
},
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@ -256,37 +344,46 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/bare-events": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
"integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.3.1.tgz",
"integrity": "sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==",
"optional": true
},
"node_modules/bare-fs": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.3.tgz",
"integrity": "sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.0.tgz",
"integrity": "sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==",
"optional": true,
"dependencies": {
"bare-events": "^2.0.0",
"bare-path": "^2.0.0",
"streamx": "^2.13.0"
"bare-stream": "^1.0.0"
}
},
"node_modules/bare-os": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz",
"integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.3.0.tgz",
"integrity": "sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==",
"optional": true
},
"node_modules/bare-path": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.1.tgz",
"integrity": "sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
"integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
"optional": true,
"dependencies": {
"bare-os": "^2.1.0"
}
},
"node_modules/bare-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-1.0.0.tgz",
"integrity": "sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==",
"optional": true,
"dependencies": {
"streamx": "^2.16.1"
}
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@ -359,12 +456,12 @@
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@ -473,9 +570,9 @@
}
},
"node_modules/chromium-bidi": {
"version": "0.5.17",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.17.tgz",
"integrity": "sha512-BqOuIWUgTPj8ayuBFJUYCCuwIcwjBsb3/614P7tt1bEPJ4i1M0kCdIl0Wi9xhtswBXnfO2bTpTMkHD71H8rJMg==",
"version": "0.5.19",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.19.tgz",
"integrity": "sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==",
"dependencies": {
"mitt": "3.0.1",
"urlpattern-polyfill": "10.0.0",
@ -659,9 +756,9 @@
}
},
"node_modules/devtools-protocol": {
"version": "0.0.1262051",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1262051.tgz",
"integrity": "sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g=="
"version": "0.0.1286932",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1286932.tgz",
"integrity": "sha512-wu58HMQll9voDjR4NlPyoDEw1syfzaBNHymMMZ/QOXiHRNluOnDgu9hp1yHOKYoMlxCh4lSSiugLITe6Fvu1eA=="
},
"node_modules/ee-first": {
"version": "1.1.1",
@ -901,9 +998,9 @@
}
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@ -1096,6 +1193,7 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@ -1327,6 +1425,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@ -1505,15 +1604,17 @@
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"node_modules/long": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"engines": {
"node": ">=10"
"node": ">=12"
}
},
"node_modules/media-typer": {
@ -1657,11 +1758,22 @@
}
},
"node_modules/node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/nodemon": {
@ -1715,21 +1827,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/nopt": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
"integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
"dev": true,
"dependencies": {
"abbrev": "1"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
"node": "*"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@ -1872,9 +1969,9 @@
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@ -1888,6 +1985,47 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/playwright": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.0.tgz",
"integrity": "sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==",
"dependencies": {
"playwright-core": "1.44.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=16"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.0.tgz",
"integrity": "sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=16"
}
},
"node_modules/playwright/node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@ -1896,6 +2034,29 @@
"node": ">=0.4.0"
}
},
"node_modules/protobufjs": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz",
"integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==",
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@ -1942,14 +2103,6 @@
}
}
},
"node_modules/proxy-agent/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"engines": {
"node": ">=12"
}
},
"node_modules/proxy-agent/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@ -1976,15 +2129,15 @@
}
},
"node_modules/puppeteer": {
"version": "22.6.4",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.6.4.tgz",
"integrity": "sha512-J9hXNwZmuqKDmNMj6kednZH8jzbdX9735NQfQJrq5LRD4nHisAMyW9pCD7glKi+iM7RV9JkesI1MYhdsN+0ZSQ==",
"version": "22.10.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.10.0.tgz",
"integrity": "sha512-ZOkZd6a6t0BdKcWb0wAYHWQqCfdlN1PPnXOmg/XNrbo6gJhYWFX4qCNb6ahSn8TpAqBqLCoD4Q010F7GwOM7mA==",
"hasInstallScript": true,
"dependencies": {
"@puppeteer/browsers": "2.2.1",
"@puppeteer/browsers": "2.2.3",
"cosmiconfig": "9.0.0",
"devtools-protocol": "0.0.1262051",
"puppeteer-core": "22.6.4"
"devtools-protocol": "0.0.1286932",
"puppeteer-core": "22.10.0"
},
"bin": {
"puppeteer": "lib/esm/puppeteer/node/cli.js"
@ -1994,15 +2147,15 @@
}
},
"node_modules/puppeteer-core": {
"version": "22.6.4",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.6.4.tgz",
"integrity": "sha512-QtfJwPmqQec3EHc6LqbEz03vSiuVAr9bYp0TV87dLoreev6ZevsXdLgOfQgoA3GocrsSe/eUf7NRPQ1lQfsc3w==",
"version": "22.10.0",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.10.0.tgz",
"integrity": "sha512-I54J4Vy4I07UHsgB1QSmuFoF7KNQjJWcvFBPhtY+ezMdBfwgGDr8dzYrJa11aPgP9kxIUHjhktcMmmfJkOAtTw==",
"dependencies": {
"@puppeteer/browsers": "2.2.1",
"chromium-bidi": "0.5.17",
"@puppeteer/browsers": "2.2.3",
"chromium-bidi": "0.5.19",
"debug": "4.3.4",
"devtools-protocol": "0.0.1262051",
"ws": "8.16.0"
"devtools-protocol": "0.0.1286932",
"ws": "8.17.0"
},
"engines": {
"node": ">=18"
@ -2338,6 +2491,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"deprecated": "Rimraf versions prior to v4 are no longer supported",
"dependencies": {
"glob": "^7.1.3"
},
@ -2373,12 +2527,10 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/semver": {
"version": "7.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
},
@ -2685,17 +2837,19 @@
}
},
"node_modules/touch": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
"integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
"integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
"dev": true,
"dependencies": {
"nopt": "~1.0.10"
},
"bin": {
"nodetouch": "bin/nodetouch.js"
}
},
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@ -2731,8 +2885,7 @@
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"optional": true
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"node_modules/universalify": {
"version": "2.0.1",
@ -2771,6 +2924,20 @@
"node": ">= 0.8"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@ -2823,9 +2990,9 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
"version": "8.16.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
"integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
"version": "8.17.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
"integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
"engines": {
"node": ">=10.0.0"
},

View File

@ -4,18 +4,21 @@
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon server.js",
"start": "node server.js",
"dev": "nodemon --inspect=0.0.0.0 server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@playwright/test": "^1.44.0",
"body-parser": "^1.20.2",
"express": "^4.19.2",
"express-async-handler": "^1.2.0",
"moment-timezone": "^0.5.45",
"node-fetch": "^2.6.1",
"puppeteer": "^22.6.4",
"protobufjs": "^7.3.0",
"puppeteer": "^22.10.0",
"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2"
},

BIN
agent/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

@ -10,8 +10,8 @@ services:
- ./AuctionServices:/agent/AuctionServices
networks:
- internal
# ports:
# - "80:80"
ports:
- "9229:9229"
scrapper:
build:

6
node_modules/.package-lock.json generated vendored Normal file
View File

@ -0,0 +1,6 @@
{
"name": "AuctionAgent",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}

6
package-lock.json generated Normal file
View File

@ -0,0 +1,6 @@
{
"name": "AuctionAgent",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}

1
package.json Normal file
View File

@ -0,0 +1 @@
{}