Skip to content

Instantly share code, notes, and snippets.

@bayleedev
Created February 22, 2021 22:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bayleedev/f1f961e9bcd80b26041360026655dcab to your computer and use it in GitHub Desktop.
Save bayleedev/f1f961e9bcd80b26041360026655dcab to your computer and use it in GitHub Desktop.
on randomString(aLength)
set randomChars to {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
set aString to ""
repeat aLength times
set aString to aString & some item of randomChars
end repeat
return aString
end randomString
on appName()
tell application "System Events"
set frontmostProcess to first process where it is frontmost
set appName to name of frontmostProcess
end tell
if appName is equal to "Safari" then
tell application "Safari"
return the URL of the current tab of the front window
end tell
else if appName is equal to "Google Chrome" then
tell application "Google Chrome"
return the URL of the active tab of the front window
end tell
end if
tell application appName
return appName & " " & the name of the front window
end tell
return appName
end appName
on appNameSlug(aLength)
set commandString to "~/.bin/slugify \"" & appName() & "\" | cut -c -" & aLength as string
return do shell script commandString
end appNameSlug
on run {input, parameters}
(* TODO: update the format here to meet your needs *)
set email to randomString(5) & "." & appNameSlug(15) & "@privaterelay.example.com"
tell application "System Events" to keystroke email
do shell script "afplay /System/Library/Sounds/Bottle.aiff"
return input
end run
// ==UserScript==
// @name Email Generator
// @version 0.1
// @description Type in "/email in a text or textarea field and it will update it with a randomly generated username that goes through a relay.
// @author You
// @grant none
// @include *
// ==/UserScript==
(function() {
const tmClickAudio = new Audio('data:audio/wav;charset=utf-8;base64,UklGRrgEAABXQVZFZm10IBAAAAABAAEAIlYAACJWAAABAAgAZGF0YZQEAAB+fHp9dnOKeIeYTnh+eX1+yJfCt5KDVmptnJqxu6qUd4R4Xo11c7puf3ZwhGuGfHV6b1RoYmd4f4Fxc2NkX2lhXGlqX2RyZXh1hYqLlI6ViYKDhYeHhoyEh4uCiIGHioyRjZCSj4qLiIyKiYuIjo2Lj46Jh4aEhoSDg4OCgH5/fHd6fH1/goOBgoOAgIB+fX9/f4B+fn99fX19fHp5eHh5enl7fX5/f3+Af39+f4CAf319fX17fH5/gICBgoGBgYKCgYGCgoGAgICBgYCAgICBgH9+fn19foCAgICAgICAgIB/gX+AgYCAgYKCgYCAf4CAgICDgoCCgIGAfYGAgIKAgYB/gH5/gH+AgH6Af319fn5+fn6Af4B/gIOAgIKBgYCAgICAgIGCgoGAgYCAgYGDg4KBgYB+fH1/foCAgYCAgH1+fn1+fn+Afn9+foB+f4CAgIB/gICAgoGBgIB/gICCgoGCgYGBgICAgIKBgYKBgYGAgIB/f31+fX1/fX9/fn16eXp6en1+f3+AgH59fn9/f4CAgYGBgoGBg4SEg4KCgYGAgICAgICAf39/fn5/f39/f35+f318foCAf39/gH59fn+AgIGCgICAgICAgICAgYGBgICAgICAgH+AgYCAgICAgICAgH+AgICAgICAgICAgICBgICCgoGChIKAgICAgICBg4GBgoGAgICAgICAgICAgH5+f3+AgIB/gICAf3+Af39/gIB/f4CAf4CDgYKFhIB/gXh7gn2Ch4CAgoKEgH6AgIWBf4CAgICDgH+Bg4OAgYGCg4KBgYCAgICBgH+Af35+fX+Af35/fnx8fn5+foB+e3x8eXl7fn+AgoCAf36CgoaAipZ1hoJ+e3qOcJB8fI13g3+GgH92fn1/g4CKhId7f3h3fnx9fIOAf4CBfoB9fH98gYCChIKChIGDgX+CgoaEgoCAgH+Bf359f4GDg4B/fn6AgYGCg4GAgYB/fX+BgYWGgn98gIKDgX97eoCEhoR+fX19f357e3yAhIJ9e3t9foCDgoGEg4CAgoKAgIGBhIWEgYCAgoOCgoCAgIKDgYCAgICCg4KAgICCgoKCgYGBgoGAf39/gICAf35+fX5/f35/gH9+f3+AgYGAgICAgYB/gIGCgH6AgYCAgIWGg4V/g4mAd3Z9enx8fX+AgYBsgKaNfnxpPHikUHy2kGWdqSZcmlh7vouMu2eBgT5SVVGCoJPguJOlZ1lXdYObs7WklZxuZGZcY2yAjpCHm4hqdWdng4KHm5KMko15b3NwbHqJfoGOfXBwbG1wdoCAg4iIgXp5c3V4eX6Bf4GJhIKEgICFioaChYaIiYeDfnx4en5/gYSBfn96eHp8f4OIiYaCgn99gIOFhoeEhIWDgH9+e31/fXp9f3x9f358e3x8fYCAgYKEhYWGhYSDg4OEhoeFhISCgH5+e3l6fH1/gICAgICAgH+Ag4SFhoeFg4B/fHx9fYCAgYGAfXx7fH+AgoaHhoaHhIKDgoCAgoGAgH9+e3p7eXh6enp+f36AgICAgIODgYSEg4SFhIKCgIB/fX5+fICBfw==')
const TMGenerate = {
random: (length) => {
let result = ""
while (result.length < length) {
result += (Math.random()).toString(36).substr(2)
}
return result.substr(0, length)
},
domain: (length) => {
return document.domain.replace(/\.|www/g, '').substr(0, length)
},
email: () => {
// TODO: update the format here to meet your needs
const username = TMGenerate.random(8) + '.' + TMGenerate.domain(12);
const domain = 'privaterelay.example.com'
console.assert(username.length < 64);
console.assert(domain.length < 250);
return username + '@' + domain;
}
}
class TMEmail {
constructor(intervalLength = 1000) {
this.active = document.body
setInterval(() => this.onInterval(), intervalLength)
}
onInterval () {
const current = document.activeElement;
if (this.active !== current && current) {
if (this.active.removeEventListener) {
this.active.removeEventListener('keydown', this.onKeyDown)
}
this.active = current
current.addEventListener('keydown', this.onKeyDown)
}
}
onKeyDown (e) {
const el = e.target;
const value = el.value + e.key
if (value === '/email') {
e.preventDefault()
tmClickAudio.play()
el.value = TMGenerate.email()
}
}
}
new TMEmail()
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment