Created
May 11, 2021 08:03
-
-
Save tridungle/67e213cdea98d89d3097845d9fddc3d1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function getPageType() { | |
var path = window.location.pathname; | |
if (path.split('-')[0] == "/Hotel_Review") { return "search"; } | |
if (path.split('-')[0] == "/Hotels") { return "details"; } | |
return "unrecognized"; | |
} | |
function get_location_name() { | |
var PT = getPageType(); | |
if (PT === "details") { | |
if(window.geoName) | |
return window.geoName; | |
else | |
return "no_location_found"; | |
} | |
if (PT === "search") { | |
return $("[property='v:locality']").eq(0).text(); | |
} | |
return ''; | |
} | |
function get_checkin() { | |
try { | |
var checkin = window.ta.widgets.calendar.getPageInDate(); | |
}catch(err) { | |
return "no_checkin_date_found"; | |
} | |
if(checkin) | |
return convertDateToString(checkin); | |
else | |
return "no_checkin_date_found"; | |
} | |
function get_checkout() { | |
try { | |
var checkout = window.ta.widgets.calendar.getPageOutDate(); | |
}catch(err){ | |
return "no_checkout_date_found"; | |
} | |
if(checkout) | |
return convertDateToString(checkout); | |
else | |
return "no_checkout_date_found"; | |
} | |
function get_currency() { | |
var docdomain = document.domain.split('.'); | |
var domain = docdomain[docdomain.length - 1]; | |
if ($('#CURRENCYPOP .link').length) { | |
return $.trim( | |
$('#CURRENCYPOP .link').text() | |
); | |
} | |
if (domain == "uk") { | |
return "GBP"; | |
} else if (domain == "it" | |
|| domain == "fr" | |
|| domain == "es" | |
|| domain == "de" | |
|| domain == "nl" | |
|| domain == "ie" | |
|| domain == "gr") { | |
return "EUR"; | |
} | |
return "USD"; | |
} | |
function is_price_display_per_night() { | |
return true; | |
} | |
function get_lang() { | |
return window.bingMapsLang; | |
} | |
function get_page_num() { | |
var num; | |
$('#ACCOM_OVERVIEW .deckTools .pagination .pageNumbers').each(function () { | |
$this = $(this); | |
num = $.trim($this.find('span.current').text()); | |
}); | |
if(num) | |
return num; | |
else | |
return "no_page_number_found"; | |
} | |
var marker = false; | |
function execute() { | |
var currency = get_currency(); | |
var checkin = get_checkin(); | |
var checkout = get_checkout(); | |
var location = get_location_name(); | |
var language = get_lang(); | |
var ea = 'tripadvisor'; | |
var pdpn = is_price_display_per_night(); | |
var host_name = window.location.host; | |
var page_num = get_page_num(); | |
var d = new Date(); | |
var datestr = d.getFullYear() + "-" + ("0" + (d.getMonth() + 1)).slice(-2) + "-" + ("0" + d.getDate()).slice(-2); | |
var dtime = datestr + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getMinutes(); // "2014-12-08 11:37:25" | |
var hotelsArrAll = []; | |
var hotelObj = {}; | |
$('#ACCOM_OVERVIEW .listing').each(function () { | |
$this = $(this); | |
id1 = $this.attr('data-locationid'); | |
name = $.trim($this.find('#property_'+id1).text()); | |
var abc = $.trim($this.find('.price').text()).split('*'); | |
price = abc[0]; | |
partner = $.trim($this.find('.partnerImg img').attr('alt')); | |
var compHotelObj = {} | |
$this.find('.hasPartner .textLinks .provider').each(function () { | |
$this2 = $(this); | |
if($.trim($this2.find('span.providerName').text()).toLowerCase() != "") | |
compHotelObj[$.trim($this2.find('span.providerName').text()).toLowerCase()] = $.trim($this2.find('.js_buildProviderRHS .lowestPrice').attr('title')); | |
}); | |
hotelObj = { | |
id: id1, | |
n: name, | |
p: price, | |
cp: partner, | |
ch: compHotelObj | |
}; | |
hotelsArrAll.push(hotelObj); | |
}); | |
try { | |
if(hotelsArrAll && hotelsArrAll[0] && hotelsArrAll[0].p && hotelsArrAll[0].p != 0){ | |
var args_post = { | |
dt: dtime, | |
ci: checkin, | |
co: checkout, | |
lo: location, | |
cu: currency, | |
ea: ea, | |
pdpn: pdpn, | |
h: hotelsArrAll, | |
pn: page_num, | |
hn: host_name | |
}; | |
//RANK INSERTION | |
/* for(var key in args_post.h){ | |
if(args_post.h.hasOwnProperty(key)){ | |
args_post.h[key].rank = parseInt(key) + 1; | |
var indx = 1; | |
var ArrAll = []; | |
for(var key2 in args_post.h[key].ch){ | |
if(args_post.h[key].ch.hasOwnProperty(key2)){ | |
obj = { | |
name: key2, | |
price: args_post.h[key].ch[key2], | |
rank: indx | |
}; | |
ArrAll.push(obj); | |
indx++; | |
} | |
} | |
args_post.h[key].ch = ArrAll; | |
} | |
} */ | |
var args_final = { | |
namespace: "etb", | |
source: ea, | |
page: "search", | |
contents: btoa(unescape(encodeURIComponent(JSON.stringify(args_post)))), | |
date: datestr | |
}; | |
var args_arr = []; | |
args_arr.push(args_final); | |
if (window.console) { | |
console.debug(args_post); | |
} | |
$.ajax({ | |
type: 'POST', | |
url: 'http://172.16.43.109/dts/s/a/n', | |
crossDomain: true, | |
data: btoa(unescape(encodeURIComponent(JSON.stringify(args_arr)))), | |
dataType: 'json', | |
async: true, | |
cache: false, | |
timeout: 5000, | |
success: function() { | |
marker=true; | |
var msg = "!!! SUCCESSS from myscript !!!\nSuccessfully submitted to PDT: " + hotelsArrAll.length + " hotels for " + | |
location + ", " + checkin + " - " + checkout + "."; | |
$("body").prepend("<div id='crawler'>" + msg + "</div>"); | |
$("#crawler-debug").append(" | SUCCESSS"); | |
}, | |
error: function(err) { | |
var msg = "!!! ERROR !!!\nError submitting to PDT: " + hotelsArrAll.length + " hotels for " + | |
location + ", " + checkin + " - " + checkout + ".\nError: " + err.statusText; | |
$("body").prepend("<div id='crawler'>" + msg + "</div>"); | |
$("#crawler-debug").append(" | ERROR"); | |
} | |
}); | |
} else { | |
var msg = "!!! TRY AGAIN !!!\nPrices not found, skipping submitting to PDT: " + hotelsArrAll.length + " hotels for " + | |
location + ", " + checkin + " - " + checkout + "."; | |
$("#crawler-debug").append(" | TRY AGAIN"); | |
} | |
} catch(err) { | |
console.log(err); | |
$("#crawler-debug").append(" | "+err); | |
} | |
} | |
function initJQuery() { | |
var theNewScript = document.createElement("script"); | |
theNewScript.type = "text/javascript"; | |
theNewScript.src = "http://code.jquery.com/jquery-1.11.2.min.js"; | |
document.getElementsByTagName("head")[0].appendChild(theNewScript); | |
var waitForLoad = function () { | |
if (typeof jQuery != "undefined") { | |
init(); | |
} else { | |
window.setTimeout(waitForLoad, 1000); | |
} | |
}; | |
window.setTimeout(waitForLoad, 1000); | |
} | |
function init() { | |
$("body").prepend("<hr style='border: 1px solid !important; z-index:5500'><div id='crawler-debug'></div>"); | |
execute(); | |
var hcs_timer = setInterval(function() { | |
/* if($("#js_itemlist_error_pos1").text().contains(nsObject.validatedArgs.no_results_text)){ | |
marker=true; | |
$("#crawler-debug").append(" | no-results"); | |
$("body").prepend("<div id='crawler'>!!! NORESULTS !!!</div>"); | |
} */ | |
if(marker == false) { | |
execute(); | |
} else | |
clearInterval(hcs_timer); | |
},2500); | |
} | |
(function() { | |
initJQuery(); | |
}) (); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment