Menu
Portfolio
Blog
Snippets
Login
Confirm
exit_to_app
Close
Entries
library_add
Utility(Event,Mouse): Log Movement X,Y
delete
Utility(txt): Basic Sentence Generator
delete
Utility(Event,Keyboard): Logger
delete
Utility(txt): Expanded Phrase Generator
delete
Scrape(General|Multi): Paginated Crawler
delete
Scrape(Sunbiz|Multi): Get Biz's By Zip
delete
Utility(Time): Test Load Speed
delete
Scrape(General|Single|NLP): Get Keyword Stats
delete
Scrape(General|Single): Get Text Near Links
delete
Utility(Event|Mouse): Press Down,Up, & Dragend
delete
Utility(Number): Between Range
delete
Utility(Event|Window): On Resize
delete
Scrape(Youtube|Single): Crawl Channel Videos
delete
Scrape(General|Multi): Tiny Link Crawler
delete
Utility(Time): Day of Week Report
delete
Utility(Number): Aspect Ratio Size Pairs
delete
Utility(Data): Sort Object Properties
delete
Scrape(General|Single): RiTa Sentences & Words
delete
Scrape(General|Single): Investigate Element Layers
delete
Scrape(NLP|Single): Using Compromise Plugins
delete
Utility(General): Remote Script Loader
delete
Scrape(General|Single|NLP): Compromise RiTa D3
delete
Scrape(General|Multi|Node): Grouped Node Crawler
delete
Scrape(Amazon|Multi): Crawl Product SERPs
delete
Scrape(Amazon|Multi): Get Paginated Brands
delete
Utility (Data): Download JSON in Browser
delete
Utility (Data): JSON AutoTypes
delete
Scrape(YouTube|Single): Video Page
delete
Utility (Text): Make Page Editable
delete
Utility (Text): Article Editor
delete
Scrape(General|Single|Text): Get Text On Click
delete
Utility (File): DnD File Parser (CSV,JSON,TXT)
delete
Scrape(General|Single): Get Links (Examples)
delete
Scrape(General|Single|Text): Get Sentences by Tag
delete
Utility (File): JSON to CSV via D3.js
delete
Scrape(General|Single): Auto Parse by Content Type
delete
Scrape(General|Single): Get Paragraphs & Sentences
delete
Scrape(Amazon|Multi): Get Reviews by ASIN
delete
Scrape(General|Single): Download Images on Page
delete
Utility(Event,Form): Custom Submit Function
delete
Utility (Fetch): Basic API Post Request
delete
Utility (Event,Form,Fetch): Form Data to API
delete
Utility (Time): Async Delay
delete
Utility (Time): Async Repeat Every N Secs
delete
Scrape(coj): Crawl Property SERPs
delete
Utility (Data): Promise Chain
delete
Utility (Fetch): Examples - JSON,Text,HTML
delete
Scrape(Amazon|Single): Product Review NLP
delete
Utility (Nodejs): Streaming Collections
delete
Scrape(Rate My Professor|Multi): Crawl Prof SERPs
delete
Utility (Time): JS Timer
delete
Utility (Text): Proper Case
delete
Scrape(Thingiverse API): Get Things via Search API
delete
Scrape(General|Single|Node): Get Node Attributes
delete
Scrape(General|Single|Node): Node Attributes + Text
delete
Scrape(Thesaurus): Get Words from SERPs
delete
Scrape(Walmart): Crawl Product SERPs
delete
Scrape(free3d): Crawl 3D Model SERPs
delete
Scrape(Aliexpress|Single): Get Products From SERP
delete
Scrape(simplify3d): Crawl Post SERPs
delete
Scrape(Twitter): Crawl Post Feed (infinite scroll)
delete
Scrape(DDuckGo|Single): Get Links from SERP
delete
Scrape(General|Single): Get Tokens String Distance
delete
Scrape(General|Single): Content Report
delete
Scrape(General|Single|Node): Node Recon (CSV)
delete
Utility (File): D3 JSON to CSV
delete
Scrape(coj|Multi): Crawl Property SERPs
delete
Scrape(coj|Single): sidenote
delete
Scrape(General|Single): Recursive Node Crawler
delete
Utility (Event,Window): Scroll to Root ScrollHeight
delete
Scrape(Indeed|Multi): Crawl Job SERPs
delete
Scrape(Thingiverse API): Get Things By Id
delete
Scrape(Thingiverse): Crawl Things by Category
delete
Scrape(Thingiverse API): Get Thing Batches by Id via DnD
delete
Scrape(YouTube|Single): Get Video Playlist
delete
Utility (Data): Join Thing Metrics & Meta
delete
Utility(Data): Get Nested Array Lengths
delete
Utility (Twitter): Hide Followed Profiles
delete
Utility (Time): YYYY-MM-DD HH:MM:SS
delete
Scrape(Thangs|Multi): Crawl 3D Model SERPs
delete
Scrape(PrusaPrints,Multi): Get Prints
delete
Scrape(Reddit,Single): Get Posts
delete
Userscript(Youtube): Scrape Channel Videos
delete
Userscript(Youtube): Tab Manager
delete
Scrape(Sunbiz|Multi): Biz Details
delete
Utility(Data):DnD View Types
delete
Scrape(General|Single|Node): Select Nodes by Attr
delete
Scrape(Aliexpress|Multi) Get Products via API
delete
Utility(Text): Strip Web Page CSS, Script, Events, Media
delete
Scrape(Youtube|Single) Get Subs
delete
Scrape(General|Single): SelectAll ReduceByProp
delete
Scrape(General|Single): SelectAll ReduceMultiProps
delete
Scrape(General|Multi): Tiny Link Crawler + Delay & Node Reports
delete
Scrape(P5|Multi): Get Examples
delete
Scrape(LinkedIn|Single): Find New Connections
delete
UserScript(linkedIn|Single) Get Jobs
delete
Utility (Time): Date From Days Ago
delete
Utility(General|Single) Keep Scrolling
delete
Scrape(YouTube) Videos From Search
delete
Utility(General|Single): getOffset
delete
Utility(Event,Form): Get Data On Form Input
delete
Utility(Event,Element): ResizeObserver
delete
COCO-SSD Object Categories
delete
Scrape(Wikipedia|Multi): What Links Here?
delete
Scrape(DDuckGo|Single): Download Images
delete
Scrape(General|Single|NLP): Compromise nGram
delete
Scrape(General|Single|NLP): Get Keyword Stats
Edit Snippet
(async () => { var options = { scripts: ["https://d3js.org/d3.v6.min.js"], } const downloadCSV = (data, fileName) => { var d = document; var a = d.createElement('a'); a.href = window.URL.createObjectURL(new Blob([d3.csvFormat(data)],{type:'text/csv;charset=utf-8;'})); a.setAttribute('download', `${fileName}.csv`); d.body.appendChild(a); a.click(); d.body.removeChild(a); }; var run = async () => { var stripTags = ["SCRIPT","STYLE","NOSCRIPT"]; var stopWords = [ "by","of","to","as","at","an","or","on","no","be","from","with","more","for","have","want", "than","and","can","the","are","not","arent","aren't","i", "we", "he", "she", "it", "they", "me", "us", "her", "him", "them", "mine", "ours", "hers", "his", "theirs", "my", "our", "your", "their", "myself", "yourself", "herself", "himself", "itself", "ourselves", "yourselves", "themselves", "all", "another", "any", "anybody", "anyone", "anything", "both", "each", "either", "everybody", "everyone", "everything", "few", "many", "most", "neither", "nobody", "none", "no one", "nothing", "one", "other", "others", "several", "some", "somebody", "someone", "something", "such", "that", "these", "this", "those", "what", "whatever", "which", "whichever", "who", "whoever", "whom", "whomever", "whose", "as", "thou", "thee", "thy", "thine", "ye", "aught", "each other", "enough", "idem", "its", "naught", "nought", "one another", "ought", "ourself", "somewhat", "suchlike", "theirself", "theirselves", "themself", "there", "thyself", "whatnot", "whatsoever", "whence", "where", "whereby", "wherefrom", "wherein", "whereinto", "whereof", "whereon", "wherever", "wheresoever", "whereto", "whereunto", "wherewith", "wherewithal", "whether", "whichsoever", "whomso", "whomsoever", "whosever", "whosesoever", "whoso", "whosoever", "yon", "yonder", "you", "yours" ]; var extractTextFromTag = (tag) => { // console.log("tag",tag) try{ tag.textContent = ""+tag.textContent.replace(/[^a-z0-9\s'-]/gim, " ").replace(/[\s\t\r\n]+/gim, " ").trim(); return ((tag.textContent.length > 0) && tag.nodeName == "#text") ? tag.textContent : null; }catch(err){ console.log(err,tag); } } var extractTextFromTags = (tags) => { return tags.reduce((result,tag) => { var tagText = extractTextFromTag(tag); (tagText) ? result.push(tagText): null; return result;},[]); } var processChildren = (parent) => { return [...parent.childNodes].reduce((result,tag) => {(stripTags.indexOf(tag.tagName) == -1) ? result.push(tag) : null; return result;},[]); } var children = await processChildren(document); var childrenWithNoChild = []; for (var i = 0; i < children.length; i++) { var child = children[i]; if(stripTags.indexOf(child.tagName) == -1) (children[i].hasChildNodes()) ? children = children.concat([...child.childNodes]): childrenWithNoChild.push(child); } var bodyChildrenText = await extractTextFromTags(childrenWithNoChild); var textCollection = bodyChildrenText.reduce((result, row) => { result += " "+row.toLowerCase(); return result; },"").trim(); var wordCount = await textCollection.split(" ").reduce((result, row) => { if(row.length > 2 && stopWords.indexOf(row) == -1) (!result.hasOwnProperty(row)) ? result[row] = 1 : result[row]++; return result; },{}) var totalWordCount = Object.values(wordCount).reduce((sum,d) => sum += +d); var keysSorted = await Object.keys(wordCount).sort(function(a,b){return wordCount[a]- wordCount[b]}).map(key => { var obj = {}; obj.word = key; obj.count = wordCount[key]; obj.percentOfTotal = Math.round((obj.count / totalWordCount) * 100) / 100; return obj; }); downloadCSV(keysSorted, "wordcount_"+document.location.hostname.replace(".","_")) } const loadScripts = ({scripts}) => { console.log(`Loading External Scripts`); var scriptCountdown = scripts.length; var loadScript = (url) => { var scriptsLoaded = () => scriptCountdown == 0 ? run() : null; var imported = document.createElement('script'); imported.src = url; imported.addEventListener("load", () => { scriptCountdown--; scriptsLoaded(); }); document.head.appendChild(imported); } scripts.forEach(loadScript) } loadScripts(options); })();