您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Export GPS point of your trajets.
当前为
// ==UserScript== // @name WME Export Trajet // @name:fr WME Export Trajet // @version 0.3 // @description Export GPS point of your trajets. // @description:fr Export des coordonée GPS de vos trajet. // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @include https://editor-beta.waze.com/* // @namespace https://greasyfork.org/fr/scripts/14832-wme-export-trajet // @author seb-d59 // @copyright seb-d59 - 2015 // ==/UserScript== //function WMEExpT_Injected(){ // valable sans injection.... // var WMEExpT_Version = GM_info.script.version; // var WMEExpT_Name = GM_info.script.name; var WMEExpT_Version = 0.3; var WMEExpT_Name = "WME Export Trajet"; var WMEExpT = {}; var icon_export="iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wgBFAggT+iJkgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADUklEQVR42u2dTWsTURSGn5lOrEoJVYsff0AqUhHEreBW40IR/FiJKze6cV2NuhFdiFgQXLgQf0ARXIk7t3UhLYp/QBTFEksbmibjYk4kxHSMucn96JwXhtAmTU6fOfecc++cuYmwoxIQ459aQMPkDSILRk4CN4EZDwEuAQ+BZTxVCbgH/ACaHh4/gUdykr3UODAvxqaeHkYQY1STwBXg9iAQEwcG14AFYMXBZ1c2ifttiAB3/icmugC4AFwWI1OLoeRlF7waUDaF6ALgihhXd1CydOo5cNUUoqsYmDr63E6I0wKxZhITi5xEGsB9U4hFz8LLMlQHhqhljCFEBWgIUQEaQlSAhhAVoCHEpMCgJoBdspjQrTUpccgptleBapEBHpPpXd6cvJQzYzkMxEUGWAZO9vG6U3klYJEBDpIDWt1/U5Qk0iJbvq8N+42L4oENsmsfMNi1mRjYAM4UFWC7PKkOOOrGgRdF9sBOT3QaRFUKUAEqQAWoUoAKUAH2rW3ADux0km05gBGwBzgnj5ECHGwadR64AUz5BjEEgBGwl2xR87pvEENJIjFwwEeIIWVhLyGOejVmA7jI8DqxOiECPAG+465ZaeQA273Io/JE5xCTnMA9JsZGjkfIPmB7DsQImAO+uYDYC+AYWe9cBTgC7HQIMQH2AwdzPPGaQL4FfLUNMenhedPAXeAE2fVP14km/sdzU8AF+XnWticmPbyvIvCmAsrQZeCseOBjiYlOzm4sw2UiwHn9buAScBqL13q6AbaAz7i5BcFU68Ai8H4Emb9vgE3gNfBOhsFGIPDqwBuJ3R9dxsBUDJjtysKuEsmYZNhDYkcevCrwwfZJTzYpfpeAT/IPuJ4pzQBPgaO+wcsrpFMxxvUQXpfMWvcRXmiLCd7BswGw1+2ur+T3wcML0QO9gmdjNWaYWgXe+gQvJIBrHXWeN/BCAdiUwn7eN3ghAEzJGiOfAV9sTtG2kgf+kiP10bgQAKY+G6e9MQpQASpABahSgApQASpAlQJUgApQAaoUoAIMSC7WA/M2vPFVk2zSseYCYD8b3vimCeB4rxHrAmC/G94EEe4Sn4zRJPK3RrbhjWPVyJo5W6P2QNMNb3zVIvAAaNi6faHE1iqZ/nyNxm/UEhZ+/DhJcwAAAABJRU5ErkJggg=="; var lang={}; WMEExpT.Trajets = {'list': {},'objects':{}}; var debug=true; // ********************* // ** HELPER FUNCTION ** // ********************* function log(msg, obj) { if (obj === undefined) console.log(WMEExpT_Name + " v" + WMEExpT_Version + " - " + msg); else if (debug) console.debug(WMEExpT_Name + " v" + WMEExpT_Version + " - " + msg + " " ,obj); } function getId(node) { return document.getElementById(node); } function getElementsByClassName(classname, node) { node || (node = document.getElementsByTagName("body")[0]); for (var a = [], re = new RegExp("\\b" + classname + "\\b"), els = node.getElementsByTagName("*"), i = 0, j = els.length;i < j;i++) { re.test(els[i].className) && a.push(els[i]); } return a; } function getFunctionWithArgs(func, args) { return ( function () { var json_args = JSON.stringify(args); return function() { var args = JSON.parse(json_args); func.apply(this, args); }; } )(); } function IsJsonString(str) { try { JSON.parse(str); } catch (e) { return false; } return true; } function saveOption(){ localStorage.setItem('WMEExportTrajet', JSON.stringify(WMEExpT)); } // ************* // ** INIT ** // ************* function WMEExpT_bootstrap() { if (typeof unsafeWindow === "undefined") { unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute('onclick', 'return window;'); return dummyElem.onclick(); }) (); } /* begin running the code! */ log("starting"); WMEExpT_init(); } function WMEExpT_init(){ // Waze object needed /* WMEExpTWaze = unsafeWindow.Waze; if(typeof(WMEExpTWaze) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpTWaze : NOK"); } window.setTimeout(WMEExpT_init, 500); return; } WMEExpTMap = WMEExpTWaze.map; if(typeof(WMEExpTMap) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpTmap : NOK"); } window.setTimeout(WMEExpT_init, 500); return; } WMEExpTModel = WMEExpTWaze.model; if(typeof(WMEExpTModel) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpTModel DOM : NOK"); } window.setTimeout(WMEExpT_init, 500); return; } // OpenLayers WMEExpTOpenLayers = unsafeWindow.OpenLayers; if(typeof(WMEExpTOpenLayers) === 'undefined'){ if (debug) { console.error("WME Export Trajet - OpenLayers : NOK"); } window.setTimeout(WMEExpT_init, 500); return; } */ // Traductions WMEExpTI18n = unsafeWindow.I18n.locale; if(typeof(WMEExpTI18n) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpTI18n : NOK"); } setTimeout(WMEExpT_init, 500); return; } // Waze GUI needed WMEExpT_userInfo = getId("user-info"); if(typeof(WMEExpT_userInfo) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpT_userInfo : NOK"); } setTimeout(WMEExpT_init, 500); return; } WMEExpT_navTabs = getElementsByClassName("nav-tabs", WMEExpT_userInfo)[0]; if(typeof(WMEExpT_navTabs) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpT_navTabs : NOK"); } setTimeout(WMEExpT_init, 500); return; } WMEExpT_tabContent = getElementsByClassName("tab-content", WMEExpT_userInfo)[0]; if(typeof(WMEExpT_tabContent) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpT_tabContent : NOK"); } setTimeout(WMEExpT_init, 500); return; } WMEExpTDrives = getId("sidepanel-drives"); if(typeof(WMEExpTDrives) === 'undefined'){ if (debug) { console.error("WME Export Trajet - WMEExpTDrives : NOK"); } setTimeout(WMEExpT_Main, 1000); return; } /* if (typeof(localStorage.WMEExportTrajets) !== "undefined") { localStorage.removeItem("WMEExportTrajets"); } if (typeof(sessionStorage.WMEExportTrajets) !== "undefined") { sessionStorage.removeItem("WMEExportTrajets"); } */ //====================================================== // Translation if (WMEExpTI18n == "fr") { lang = new Array("Export","Selectionnez le trajet"); } else { lang = new Array("Export","Select the Drive"); } log("init ok"); // Then running WMEExpT_css(); } // ************* // ** HTML ** // ************* function WMEExpT_css() { var Scss = document.createElement("style"); Scss.type = "text/css"; var css =".CSETcontent {width:260px; margin-left:10px; box-shadow: 0 4px 10px #aaa;}"; css +=".divl {float:left; text-align:center;}"; css +=".divr {float:right; text-align:center;}"; css +="#export {width:35px; height:22px;}"; Scss.innerHTML = css; document.body.appendChild(Scss); WMEExpT_html(); } function WMEExpT_html() { var addon= document.createElement('div', "ExpT-cotent"); var content = "<div style='float:left; margin-left:5px;'><b><a href='#' target='_blank'><u>"+ WMEExpT_Name +"</u></a></b> v"+ WMEExpT_Version +"</div><br>"; content += "<div style='clear:both; padding-top:10px;'></div><div class='CSETcontent' >"; content += "<div class='divl' style='width:240px; text-align:left;'><select id='selectTrajet' style='width:200px;'>"; content +="<option value='0' id='0'>"+lang[1]+"</option>"; content +="</select></div>"; content += "<div class='divr' style='width:20px;'><a href='#' id='exportTrajet'><img style='width:20px;' title='"+ lang[0] +"' src='data:image/png;base64,"+ icon_export +"' /></a></div></div>"; addon.innerHTML = content; WMEExpTDrives.appendChild(addon); getId('selectTrajet').onfocus = updateTrajetsList; getId('selectTrajet').onchange = ExpTrajet; } function updateTrajetsList() { var available_Trajets = getElementsByClassName('result session session-available'); if(typeof(available_Trajets) === 'undefined'){ if (debug) { console.error("WME Export Trajet - available_Trajets : NOK"); } return; } var selectTrajet = getId('selectTrajet'); selectTrajet.options.length = 1; for (var i=0;i<available_Trajets.length;i++){ var trajetID= available_Trajets[i]['dataset'].id; var trajetDetail = available_Trajets[i].childNodes[1].childNodes[0].textContent; WMEExpT.Trajets.list[trajetID] = trajetDetail.replace(/,/g,''); var expTrOption = document.createElement('option'); var expTrText = document.createTextNode(WMEExpT.Trajets.list[trajetID]); expTrOption.setAttribute('value','0'); expTrOption.setAttribute('id', trajetID); expTrOption.appendChild(expTrText); selectTrajet.appendChild(expTrOption); } } function ExpTrajet() { var selectTrajet = getId('selectTrajet'); if (selectTrajet.selectedIndex <= 0) return; id = selectTrajet.options[selectTrajet.selectedIndex].id; if (id <= 0) return; if (!WMEExpT.Trajets.objects.hasOwnProperty(id)) { var url = "https://www.waze.com/row-Descartes-live/app/Archive/Session?id="+id; RequestObject = window.ActiveXObject // ? new ActiveXObject("Microsoft.XMLHTTP") ? new ActiveXObject("Msxml2.XMLHTTP") : new XMLHttpRequest(); RequestObject.onreadystatechange = function() { if(RequestObject.readyState == 4) { var resultRequest={}; resultRequest = JSON.parse(RequestObject.responseText); WMEExpT.Trajets.objects[id] = resultRequest.archiveSessions.objects[0]; log('New data download link ok: '+ WMEExpT.Trajets.list[id]+'; id= '+ id); //log('WMEExpT.Trajets.objects['+id+'].data',WMEExpT.Trajets.objects[id].data); getId('exportTrajet').setAttribute('download', WMEExpT.Trajets.list[id]+ '.xml'); getId('exportTrajet').href='data:Application/octet-stream,' + encodeURIComponent(WMEExpT.Trajets.objects[id].data); //getId('exportTrajet').href='data:application/octet-stream;charset=utf-8;' + WMEExpT.Trajets.objects[id].data; } }; RequestObject.open("GET", url,false); RequestObject.send(null); }else { log('data download link ok: '+ WMEExpT.Trajets.list[id]+'; id= '+ id); getId('exportTrajet').setAttribute('download', WMEExpT.Trajets.list[id]+ '.xml'); getId('exportTrajet').href='data:Application/octet-stream,' + encodeURIComponent(WMEExpT.Trajets.objects[id].data); //getId('exportTrajet').href='data:application/octet-stream;charset=utf-8;' + WMEExpT.Trajets.objects[id].data; } } /* begin running the code! */ WMEExpT_bootstrap (); /*} var WMEExpT_Injected_script = document.createElement("script"); WMEExpT_Injected_script.textContent = '' + WMEExpT_Injected.toString() + ' \n' + 'WMEExpT_Injected();'; WMEExpT_Injected_script.setAttribute("type", "application/javascript"); document.body.appendChild(WMEExpT_Injected_script); */