-
Notifications
You must be signed in to change notification settings - Fork 3
/
Crawy.min.js
2 lines (2 loc) · 4.75 KB
/
Crawy.min.js
1
2
!function(e,n){"use strict";var t="1.0.2",o={enjoy:"(̶◉͛‿◉̶)",happy:"(◔◡◔)",nothappy:"(˘︹˘)",what:"(⊙.⊙(☉̃ₒ☉)⊙.⊙)",yesss:"(>‿◠)",ehmm:"(ㆆ_ㆆ)"},r=!1;try{"undefined"!=typeof document.querySelectorAll&&String.prototype.trim&&Array.prototype.indexOf&&null!==n.GetXHR()&&window.File&&window.FileReader&&window.FileList&&window.Blob&&(r=!0)}catch(i){}if(!r)throw alert(o.what+" This browser not support 'Crawy' feature !"),new Error(o.what+" This browser not support 'Crawy' feature !");Array.prototype.Unique=function(e){return this.indexOf(e)<0&&this.push(e),this},Array.prototype.OnlyUnique=function(){for(var e=[],n=0;n<this.length;n++)e.Unique(this[n]);return e},Array.prototype.MergeUnique=function(e,n){n=n||[];for(var t=0;t<e.length;t++)n.indexOf(e[t])<0&&this.Unique(e[t]);return this};var l=!1,c=!1,a=[],u=[],s=[],h=[],f=[],p=[],g=[],d=function(){console.log("All links : "+a.length),console.log("Worker links : "+u.length),console.log("Checking links : "+s.length),console.log("Checked links : "+h.length),console.log("Timeouts : "+f.length),console.log("Errors : "+p.length),console.log("Sources : "+g.length)},w=function(e,t,o,r,i,l){o=o||function(){},r=r||function(){},i=i||function(){},l=l||function(){};var c=n.GetXHR();c.responseType="document",c.overrideMimeType("text/html"),c.open("GET",e,!0),c.onload=function(){c.readyState===c.DONE&&(h.Unique(e),200===c.status&&o(c.responseXML,t,e),r())},c.ontimeout=function(){h.Unique(e),f.Unique(e),i(),r()},c.onerror=function(){h.Unique(e),p.Unique(e),l(),r()},c.send(null)},m=function(t){l=!1,a=[],u=[],s=[],h=[],f=[],p=[],g=[],t=t||{},t.pause=t.pause||500,t.autoscore=t.autoscore||!1,t.pagesallowed=t.pagesallowed||[],t.pagesnotallowed=t.pagesnotallowed||[],t.sourcecontext=t.sourcecontext||function(){},c=t.autoscore,console.info(o.happy+" Crawling ..."),document.title="Crawling ...",h.Unique(location.href),s.Unique(location.href),a.Unique(location.href),a.MergeUnique(n.FilterInternalLinks(e("a")).OnlyUnique(),h),u.MergeUnique(a,h);var r=function(){if(u.length<1||l)return!1;var e=setTimeout(function(){var i=u[0];u.splice(0,1);for(var f=t.pagesallowed.length<1,p=0;p<t.pagesallowed.length;p++){var m=new RegExp("^"+t.pagesallowed[p],"gi");if(i.match(m)){f=!0;break}}for(var y=0;f&&y<t.pagesnotallowed.length;y++){var v=new RegExp("^"+t.pagesnotallowed[y],"gi");if(i.match(v)){f=!1;break}}h.indexOf(i)<0&&(s.Unique(i),w(i,f,function(e,o,r){if(e instanceof HTMLDocument){var i=n.FilterInternalLinks(e.querySelectorAll("a")).OnlyUnique();if(i&&i.length>0&&(a.MergeUnique(i),u.MergeUnique(i,h)),o){var l=t.sourcecontext(r,e);l&&g.Unique(l)}}},function(){var e=h.length/(a.length/100);e=e.toFixed(0),e=100>=e?e:100,document.title=e+"%",c&&d(),l?(d(),h.length!=s.length?(console.info(o.ehmm+" Stopping ..."),document.title="Stopping ..."):(console.info(o.ehmm+" Stopped !"),document.title="Stopped !")):u.length<1&&h.length==s.length&&(d(),console.info(o.yesss+" Crawled !"),document.title="Crawled !")})),r(),clearTimeout(e)},t.pause)};a.length>0?r():console.warn(o.ehmm+" Ehmm, not links internal found in this page !")};m.Stop=function(){l=!0},m.ExportAllLinks=function(){a.length<1?(console.warn(o.ehmm+" No links ..."),alert(o.ehmm+" No links ...")):n.SaveToJSON("CrawyAllLinks."+location.host,a)},m.ExportAllSources=function(){g.length<1?(console.warn(o.ehmm+" No sources ..."),alert(o.ehmm+" No sources ...")):n.SaveToJSON("CrawyAllSources."+location.host,g)},m.ToggleAutoscore=function(){c=!c},m.Score=function(){d()},window.Crawy=m,console.info(o.enjoy+" Hi, i am Crawy "+t+", ready to work ..."),document.title="Crawy loaded !"}(function(e){return document.querySelectorAll(e)},{isExternalLink:function(e){var n=e.protocol+e.hostname,t=location.protocol+location.hostname;return n!==t},RegExpEscape:function(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")},FilterInternalLinks:function(e,n){n=n||"",n=n.trim();for(var t=[],o=0;o<e.length;o++){var r=e[o].getAttribute("href");if(r&&""!=r){if(""!==n){var i=new RegExp(this.RegExpEscape(n),"gi");if(!r.match(i))continue}!this.isExternalLink(e[o])&&r.indexOf("#")<0&&t.push(e[o].href)}}return t},GetXHR:function(){try{return new XMLHttpRequest}catch(e){}try{return new ActiveXObject("Msxml3.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}return null},SaveToJSON:function(e,n){e=e||"Crawy",jsonsource=encodeURIComponent(JSON.stringify(n));var t=document.body.appendChild(document.createElement("a"));t.innerHTML="Download "+e+".json",t.setAttribute("download",e+".json"),t.setAttribute("href","data:text/json;charset=utf-8,"+jsonsource),t.click()}});
//# sourceMappingURL=Crawy.min.js.map