first commit

This commit is contained in:
2024-05-16 16:11:40 +02:00
commit fe9a8e2b20
32 changed files with 8427 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
const asyncHandler = require("express-async-handler");
const {ScraperTools} = require('../AuctionServices/Scraper/Scraper.js')
const Drouot = require('../AuctionServices/Scraper/Drouot/Drouot.js')
const Interencheres = require('../AuctionServices/Scraper/Interencheres/Interencheres.js')
let getAuctionPlatform = function(Url){
let AuctionPlatform
let STools = new ScraperTools();
switch (STools.detectPlatform(Url)) {
case STools._CONST_INTERENCHERES:
AuctionPlatform = new Interencheres(Url);
break;
case STools._CONST_DROUOT:
AuctionPlatform = new Drouot(Url);
break;
default:
break;
}
return AuctionPlatform
}
let CleanUrl = function(url){
if(String(url).split("http").length > 1){
url = 'http'+String(url).split("http")[1]
}else{
url = ""
}
return url
}
// Display list of all pictures of a lot.
exports.getPictures = asyncHandler(async (req, res, next) => {
let url = req.params.url
url = decodeURIComponent(url);
url = CleanUrl(url)
if(url == ""){
res.status(400).send("URL not supported")
}
try{
let AuctionPlatform = getAuctionPlatform(url);
if(AuctionPlatform){
const PictList = await req.puppeteerCluster.execute(AuctionPlatform.getPictures);
res.json(PictList);
}else{
res.status(400).send("URL not supported")
}
}catch(e){
res.status(500).send("Error: "+e)
}
});
exports.getInfos = asyncHandler(async (req, res, next) => {
let url = req.params.url
url = decodeURIComponent(url);
url = CleanUrl(url)
if(url == ""){
res.status(400).send("URL not supported")
}
try{
let AuctionPlatform = getAuctionPlatform(url);
if(AuctionPlatform){
const LotInfos = await req.puppeteerCluster.execute(AuctionPlatform.getLotInfos);
res.json(LotInfos);
}else{
res.status(400).send("URL not supported")
}
}catch(e){
res.status(500).send("Error: "+e)
}
});
+126
View File
@@ -0,0 +1,126 @@
const asyncHandler = require("express-async-handler");
const fetch = require('node-fetch');
const {ScraperTools} = require('../AuctionServices/Scraper/Scraper.js')
const Drouot = require('../AuctionServices/Scraper/Drouot/Drouot.js')
const Interencheres = require('../AuctionServices/Scraper/Interencheres/Interencheres.js')
let getAuctionPlatform = function(Url){
let AuctionPlatform
let STools = new ScraperTools();
switch (STools.detectPlatform(Url)) {
case STools._CONST_INTERENCHERES:
AuctionPlatform = new Interencheres(Url);
break;
case STools._CONST_DROUOT:
AuctionPlatform = new Drouot(Url);
break;
default:
break;
}
return AuctionPlatform
}
let CleanUrl = function(url){
if(String(url).split("http").length > 1){
url = 'http'+String(url).split("http")[1]
}else{
url = ""
}
return url
}
// ## PUPPETEER CLUSTER
// get Sale info
exports.getSaleInfos = asyncHandler(async (req, res, next) => {
let url = req.params.url
url = decodeURIComponent(url);
url = CleanUrl(url)
if(url == ""){
res.status(400).send("URL not supported")
}
try{
let AuctionPlatform = getAuctionPlatform(url);
if(AuctionPlatform){
const SaleInfos = await req.puppeteerCluster.execute(AuctionPlatform.getSaleInfos);
res.json(SaleInfos);
}else{
res.status(400).send("URL not supported")
}
}catch(e){
res.status(500).send("Error: "+e)
}
});
// get Sale Lot list
exports.getLotList = asyncHandler(async (req, res, next) => {
let url = req.params.url
url = decodeURIComponent(url);
url = CleanUrl(url)
if(url == ""){
res.status(400).send("URL not supported")
}
try{
let AuctionPlatform = getAuctionPlatform(url);
if(AuctionPlatform){
const LotList = await req.puppeteerCluster.execute(AuctionPlatform.getLotList);
res.json(LotList);
}else{
res.status(400).send("URL not supported")
}
}catch(e){
res.status(500).send("Error: "+e)
}
});
// ## AGENT PUPPETEER
//Follow a live Sale
exports.followSale = asyncHandler(async (req, res, next) => {
let url = req.params.url
url = decodeURIComponent(url);
url = CleanUrl(url)
if(url == ""){
res.status(400).send("URL not supported")
}
try{
let AuctionPlatform = getAuctionPlatform(url);
if(AuctionPlatform){
console.log('Scrapper followSale : '+encodeURIComponent(url))
fetch('http://agent/internApi/follow/sale/'+encodeURIComponent(url))
.then(response => {
console.log("fetch OK")
//response.json()
} )
.then(saleInfo => {})
.catch(error => {
console.error(error);
throw new Error('Error: '+error)
});
//res.status(200).send({status: "Following"})
res.status(500).send({"Error": "ok"})
}else{
res.status(400).send("URL not supported")
}
}catch(e){
res.status(500).send("Error: "+e)
}
});