51job search filter with distance

51job搜索结果以距离过滤

目前为 2020-02-06 提交的版本。查看 最新版本

// ==UserScript==
// @name       	51job search filter with distance
// @namespace   https://github.com/zhuzemin
// @description 51job搜索结果以距离过滤
// @author      zhuzemin
// @include     https://search.51job.com/list/*
// @version     1.2
// @grant         GM_xmlhttpRequest
// @grant         GM_registerMenuCommand
// @grant         GM_setValue
// @grant         GM_getValue
// @grant         GM_addStyle
// @connect-src api.map.baidu.com
// @connect-src search.51job.com
// ==/UserScript==

/*
Setting "Home point" & "Distance limit":
	Coordinate from Baidu map: https://api.map.baidu.com/lbsapi/getpoint/index.html
*/
  
"use strict";
  // setting User Preferences
  function setUserPref(varName, defaultVal, menuText, promtText, sep){
    GM_registerMenuCommand(menuText, function() {
      var val = prompt(promtText, GM_getValue(varName, defaultVal));
      if (val === null)  { return; }  // end execution if clicked CANCEL
      // prepare string of variables separated by the separator
      if (sep && val){
        var pat1 = new RegExp('\\s*' + sep + '+\\s*', 'g'); // trim space/s around separator & trim repeated separator
        var pat2 = new RegExp('(?:^' + sep + '+|' + sep + '+$)', 'g'); // trim starting & trailing separator
        //val = val.replace(pat1, sep).replace(pat2, '');
      }
      //val = val.replace(/\s{2,}/g, ' ').trim();    // remove multiple spaces and trim
      GM_setValue(varName, val);
      // Apply changes (immediately if there are no existing highlights, or upon reload to clear the old ones)
      //if(!document.body.querySelector(".THmo")) THmo_doHighlight(document.body);
      //else location.reload();
    });
  }
  
  // prepare UserPrefs
  setUserPref(
  'homepoint',
  '0',
  'Set Home point',
  `Set "home point" with "Baidu Map" point". Example: "39.122174, 117.215491"`,	  
  ','
  );
  
  setUserPref(
  'distance',
  '6000',
  'Set Distance',
  'Set the distance for how far from home.'
  );

	var cssContent= `	
.dw_table .t3{
	width:200px
}
`
GM_addStyle(cssContent);
const ORIGINP=GM_getValue("homepoint");
const LIMIT=GM_getValue("distance");
class Job51{
	constructor(jobid){
		this.url='https://search.51job.com/jobsearch/bmap/map.php?jobid='+jobid;
		this.jobid=jobid;
		this.charset='text/plain;charset=gbk';
	}
}
class Baidu{
	constructor(originP,lat,lng){
		this.ak="RGBBNuGoAcxvzl02ibOAxGZM";
		this.url=`https://api.map.baidu.com/direction/v2/riding?origin=${originP}&destination=${lat},${lng}&ak=${this.ak}`;
		this.charset='text/plain;charset=utf8';
	}
}
var resultList=document.querySelector("#resultList");
var divs=resultList.querySelectorAll("div.el");
for (var i = 1; i < divs.length; ++i){
	(function(div){
	var jobid=div.querySelector("input.checkbox").getAttribute("value");
	//console.log(riding);
	let job51=new Job51(jobid);
GM_xmlhttpRequest({
	method: 'GET',
	url: job51.url,
	headers: {
		'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
		'Accept':	'application/atom+xml,application/xml,text/xml',
		'Referer': 'https://search.51job.com/jobsearch/bmap/map.php?jobid=102801929',
	},
	overrideMimeType:job51.charset, 
  	//synchronous: true
	onload: function(responseDetails) {
	var a=detail_addr(	responseDetails,div);
	var lat=a[0];
	var lng=a[1];
	//	console.log(lat);
if(ORIGINP!="0"||ORIGINP!=""){
		(function(){
		let baidu=new Baidu(ORIGINP,lat,lng);
GM_xmlhttpRequest({
	method: 'GET',
	url: baidu.url,
	headers: {
		'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
		'Accept':	'application/atom+xml,application/xml,text/xml',
		'Referer': 'https://search.51job.com/jobsearch/bmap/map.php?jobid=102801929',
	},
	overrideMimeType:baidu.charset, 
  	//synchronous: true
	onload: function(responseDetails) {
	try{
		filter(	responseDetails,div,resultList);
	}
	catch(err){
		console.log(err);
		//continue;
	}
	}
});
})();

}
	}
});
})(divs[i]);
}
function detail_addr(ret,div){
	var g_company=JSON.parse(ret.responseText.match(/\{.*\}/)[0].replace(/([\'\"])?([a-zA-Z0-9_]+)([\'\"])?:/g, '"$2": '));
	var address=g_company.address;
	var lat=g_company.lat;
	var lng=g_company.lng;
	var region=div.querySelector("span.t3");
	//region.width="300px";
	region.textContent=address;
	return [lat,lng]
}
function filter(ret,div,resultList){
		let riding=JSON.parse(ret.responseText);
//	console.log(riding);
		let distance=parseInt(riding.result.routes[0].distance);
		//console.log(distance);
		if(distance>LIMIT&&distance<100000){
			resultList.removeChild(div);
		}
}
function createElementFromHTML(htmlString) {
  var div = document.createElement('div');
  div.innerHTML = htmlString.trim();

  // Change this to div.childNodes to support multiple top-level nodes
  return div.firstChild; 
}
function addGlobalStyle(css) {
	var head, style;
	head = document.getElementsByTagName('head')[0];
	if (!head) { return; }
  
	style = document.createElement('style');
	style.type = 'text/css';
	style.innerHTML = css;
	head.appendChild(style);
}
	

				

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址