Compare commits
1 Commits
saljic-cra
...
include-in
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
81fa3f046d |
@@ -218,7 +218,7 @@ class SaljicCrawler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async scrapeAd(url, adType) {
|
async scrapeAd(url, adType) {
|
||||||
console.log("[SALJIC] Scraping : ", url);
|
// console.log("[SALJIC] Scraping : ", url);
|
||||||
try {
|
try {
|
||||||
const adPageSource = await fetch(url);
|
const adPageSource = await fetch(url);
|
||||||
const body = await adPageSource.text();
|
const body = await adPageSource.text();
|
||||||
@@ -227,9 +227,7 @@ class SaljicCrawler {
|
|||||||
// No information for status ex. PRODAN
|
// No information for status ex. PRODAN
|
||||||
const status = AD_STATUS.STATUS_NORMAL;
|
const status = AD_STATUS.STATUS_NORMAL;
|
||||||
//Extracting agency ID from url
|
//Extracting agency ID from url
|
||||||
const agencyObjectId = url
|
const agencyObjectId = parseInt(url.substring(46, url.length));
|
||||||
? parseInt(url.substring(46, url.length))
|
|
||||||
: null;
|
|
||||||
|
|
||||||
//Extracting main properties
|
//Extracting main properties
|
||||||
const propertySelectors = {
|
const propertySelectors = {
|
||||||
@@ -274,10 +272,14 @@ class SaljicCrawler {
|
|||||||
.trim();
|
.trim();
|
||||||
|
|
||||||
const latAndLongSrc = $(propertySelectors.latAndLong).attr("src");
|
const latAndLongSrc = $(propertySelectors.latAndLong).attr("src");
|
||||||
const tmpLatLong = latAndLongSrc.split("marker=")[1];
|
const latText = latAndLongSrc.substring(
|
||||||
const latText = tmpLatLong.split("%2C")[0];
|
latAndLongSrc.indexOf("marker=") + 7,
|
||||||
const longText = tmpLatLong.split("%2C")[1];
|
latAndLongSrc.indexOf("%2C", latAndLongSrc.indexOf("marker="))
|
||||||
|
);
|
||||||
|
const longText = latAndLongSrc.substring(
|
||||||
|
latAndLongSrc.indexOf("%2C", latAndLongSrc.indexOf("marker=")) + 3,
|
||||||
|
latAndLongSrc.length
|
||||||
|
);
|
||||||
const locationLat = parseFloat(latText) || null;
|
const locationLat = parseFloat(latText) || null;
|
||||||
const locationLong = parseFloat(longText) || null;
|
const locationLong = parseFloat(longText) || null;
|
||||||
|
|
||||||
@@ -326,10 +328,11 @@ class SaljicCrawler {
|
|||||||
let numberOfViewsKivi = null;
|
let numberOfViewsKivi = null;
|
||||||
let streetNumber = 0;
|
let streetNumber = 0;
|
||||||
let adStatus = status;
|
let adStatus = status;
|
||||||
let shortDescription = descriptions
|
let shortDescription = descriptions.substring(
|
||||||
? descriptions.substring(0, descriptions.indexOf("."))
|
0,
|
||||||
: "";
|
descriptions.indexOf(".")
|
||||||
let longDescription = descriptions || "";
|
);
|
||||||
|
let longDescription = descriptions;
|
||||||
//Extracting data - Glavne karakteristike
|
//Extracting data - Glavne karakteristike
|
||||||
let mainFieldIndex = 1;
|
let mainFieldIndex = 1;
|
||||||
do {
|
do {
|
||||||
@@ -340,14 +343,10 @@ class SaljicCrawler {
|
|||||||
.replace(/[\n\r\t]/gm, "")
|
.replace(/[\n\r\t]/gm, "")
|
||||||
.trim();
|
.trim();
|
||||||
|
|
||||||
const mainFieldTitle = mainField
|
const mainFieldTitle = mainField.substring(0, mainField.indexOf(" "));
|
||||||
? mainField.substring(0, mainField.indexOf(" "))
|
|
||||||
: "";
|
|
||||||
const mainFieldValue = mainField
|
const mainFieldValue = mainField
|
||||||
? mainField
|
.substring(mainField.indexOf(" "), mainField.length)
|
||||||
.substring(mainField.indexOf(" "), mainField.length)
|
.trim();
|
||||||
.trim()
|
|
||||||
: "";
|
|
||||||
|
|
||||||
switch (mainFieldTitle) {
|
switch (mainFieldTitle) {
|
||||||
case "Površina":
|
case "Površina":
|
||||||
|
|||||||
@@ -332,10 +332,14 @@ const findRealEstatesForSearchRequest = async (searchRequest, maxResults) => {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//When includeIncompleteAds are not defined - null it will consider it true
|
||||||
const order = [["updatedAt", "desc"]];
|
const order = [["updatedAt", "desc"]];
|
||||||
|
|
||||||
return db.RealEstate.findAll({
|
return db.RealEstate.findAll({
|
||||||
where: includeIncompleteAds ? queryIncludeIncomplete : query,
|
where:
|
||||||
|
includeIncompleteAds || includeIncompleteAds == null
|
||||||
|
? queryIncludeIncomplete
|
||||||
|
: query,
|
||||||
limit: maxResults,
|
limit: maxResults,
|
||||||
order
|
order
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
} else {
|
} else {
|
||||||
// If real estate dont have defined number of rooms ex. null
|
// If real estate dont have defined number of rooms ex. null
|
||||||
//It returns requests that didn't choose number of rooms - also null
|
//It returns requests that didn't choose number of rooms - also null
|
||||||
//Or ones that picked some values but also picked to includeIncomplete ads
|
//Or ones that picked some values but also picked to includeIncomplete ads (or default)
|
||||||
numberOfRoomsQuery = {
|
numberOfRoomsQuery = {
|
||||||
[Op.or]: [
|
[Op.or]: [
|
||||||
{
|
{
|
||||||
@@ -176,7 +176,10 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
includeIncompleteAds: {
|
includeIncompleteAds: {
|
||||||
[Op.eq]: true
|
[Op.or]: {
|
||||||
|
[Op.eq]: true,
|
||||||
|
[Op.is]: null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -226,7 +229,10 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
includeIncompleteAds: {
|
includeIncompleteAds: {
|
||||||
[Op.eq]: true
|
[Op.or]: {
|
||||||
|
[Op.eq]: true,
|
||||||
|
[Op.is]: null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -275,7 +281,10 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
includeIncompleteAds: {
|
includeIncompleteAds: {
|
||||||
[Op.eq]: true
|
[Op.or]: {
|
||||||
|
[Op.eq]: true,
|
||||||
|
[Op.is]: null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -313,7 +322,10 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
includeIncompleteAds: {
|
includeIncompleteAds: {
|
||||||
[Op.eq]: true
|
[Op.or]: {
|
||||||
|
[Op.eq]: true,
|
||||||
|
[Op.is]: null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -347,7 +359,10 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
includeIncompleteAds: {
|
includeIncompleteAds: {
|
||||||
[Op.eq]: true
|
[Op.or]: {
|
||||||
|
[Op.eq]: true,
|
||||||
|
[Op.is]: null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -381,7 +396,10 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
includeIncompleteAds: {
|
includeIncompleteAds: {
|
||||||
[Op.eq]: true
|
[Op.or]: {
|
||||||
|
[Op.eq]: true,
|
||||||
|
[Op.is]: null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -423,10 +441,13 @@ const findSearchRequestsForRealEstate = async realEstate => {
|
|||||||
[Op.eq]: "ANY"
|
[Op.eq]: "ANY"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
//Tag to check if incomplete ads are accepted in query
|
//Tag to check if incomplete ads are accepted in query which is default
|
||||||
if (checkForIncompleteWanted) {
|
if (checkForIncompleteWanted) {
|
||||||
query.includeIncompleteAds = {
|
query.includeIncompleteAds = {
|
||||||
[Op.eq]: true
|
[Op.or]: {
|
||||||
|
[Op.eq]: true,
|
||||||
|
[Op.is]: null
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,9 +61,8 @@
|
|||||||
<p class="distinguished">
|
<p class="distinguished">
|
||||||
<label class="checkbox-label">
|
<label class="checkbox-label">
|
||||||
<input type="checkbox" class="filled-in" name="includeIncompleteAds"
|
<input type="checkbox" class="filled-in" name="includeIncompleteAds"
|
||||||
<% if (includeIncompleteAds) { %>
|
|
||||||
checked
|
checked
|
||||||
<% } %>>
|
>
|
||||||
<span>Uključi i oglase bez potpunih informacija</span>
|
<span>Uključi i oglase bez potpunih informacija</span>
|
||||||
</label>
|
</label>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user