From 8bab303663bf7f178cde15773d1694aea71db0a7 Mon Sep 17 00:00:00 2001 From: Michael Campagnaro Date: Thu, 21 Mar 2019 23:33:42 -0400 Subject: [PATCH] Add more words to pick from when derping --- .gitignore | 1 + README.md | 4 +- build/youtube_herp_derp-1.0-an+fx.xpi | Bin 14840 -> 0 bytes build/youtube_herp_derp-1.0.3-an+fx.xpi | Bin 0 -> 14947 bytes index.js | 120 ++++++++++++------------ manifest.json | 2 +- 6 files changed, 67 insertions(+), 60 deletions(-) delete mode 100644 build/youtube_herp_derp-1.0-an+fx.xpi create mode 100644 build/youtube_herp_derp-1.0.3-an+fx.xpi diff --git a/.gitignore b/.gitignore index bfb5501..f247a0d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules .web-extension-id sign.sh +web-ext-artifacts/ diff --git a/README.md b/README.md index 75cde46..83beaec 100644 --- a/README.md +++ b/README.md @@ -17,5 +17,7 @@ file. ### Signing and Building * Install web-ext with `$ npm install --global web-ext` -* Generate an unlisted xpi with 'web-ext sign --channel unlisted --api-key --api-secret `. Those keys can be obtained from https://addons.mozilla.org/en-US/developers/addon/api/key/ +* Generate an unlisted xpi with: + 'web-ext sign --channel unlisted --api-key --api-secret `. + Those keys can be obtained from https://addons.mozilla.org/en-US/developers/addon/api/key/ * Drag downloaded xpi into Firefox. diff --git a/build/youtube_herp_derp-1.0-an+fx.xpi b/build/youtube_herp_derp-1.0-an+fx.xpi deleted file mode 100644 index 68756c5bd253a5172097d0e07b511f9d51d032c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14840 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 diff --git a/build/youtube_herp_derp-1.0.3-an+fx.xpi b/build/youtube_herp_derp-1.0.3-an+fx.xpi new file mode 100644 index 0000000000000000000000000000000000000000..cec28671d20913464a279b255969a0695bc786ad GIT binary patch literal 14947 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
  • 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 Q_UkqFM{`&O)0V9Bj#sB~S literal 0 HcmV?d00001 diff --git a/index.js b/index.js index 1eb2bf7..26e4ea5 100644 --- a/index.js +++ b/index.js @@ -1,46 +1,48 @@ -// returns a random int from 1 to max -const randomInt = max => Math.floor(Math.random() * max); +// [1, max] +const RandomInt = max => Math.floor(Math.random() * max); -// builds a string with random herps and derps -const derpString = (length = 20) => { - const randomLength = randomInt(length) + 1; - const randomDerp = randomInt(2) ? "herp" : "derp"; - - return Array.from({ length: randomLength }, () => randomDerp).join(" "); +const DerpString = (length = 20) => { + const RandomDerp = () => { + let n = RandomInt(4); + let result = ""; + if (n == 0) + result = "blah"; + else if (n == 1) + result = "durr"; + else if (n == 2) + result = "herp"; + else if (n == 3) + result = "derp"; + return result; + }; + return Array.from({ length: (RandomInt(length) + 1) }, () => RandomDerp()).join(" "); }; -// herp derps an element -const derpElement = element => { +// Herp derps an element. +const DerpElement = element => { const c = element; - // preserve the original contents - c.derpOriginal = c.textContent; - // swap between the two when clicked + c.derpOriginal = c.textContent; // Preserve the original contents. c.onclick = () => { c.clicked = !c.clicked; - c.textContent = c.clicked ? c.derpOriginal : c.derpString; + c.textContent = c.clicked ? c.derpOriginal : c.derp_str; }; - - // add derped class c.classList.add("derped"); - // create a derp string for this comment - c.derpString = derpString(); - // change the contents - c.textContent = c.derpString; + c.derp_str = DerpString(); + c.textContent = c.derp_str; c.clicked = false; }; -const checkComment = commentElement => { - const c = commentElement; - // if everything is fine, return +const ValidatePreviouslyDerpedComments = comment => { + const c = comment; if (c.clicked && c.textContent === c.derpOriginal) return; - if (!c.clicked && c.textContent === c.derpString) return; + if (!c.clicked && c.textContent === c.derp_str) return; - // otherwise, fix the comment - // the only case of malformed comment encountered so far are these two cases: - if (c.textContent.indexOf(c.derpString) !== -1) { - // in the case of the new comment being appended after the derp string, + // Fix the comment. The only case of malformed comments encountered so far + // are these two cases: + if (c.textContent.indexOf(c.derp_str) !== -1) { + // In the case of the new comment being appended after the derp string, // just grab it and put it in the derpOriginal variable - const idx = c.derpString.length; + const idx = c.derp_str.length; c.derpOriginal = c.textContent.substring(idx); c.textContent = c.textContent.substring(0, idx); c.clicked = false; @@ -48,56 +50,58 @@ const checkComment = commentElement => { } if (c.textContent.indexOf(c.derpOriginal) !== -1) { - // Same issue but the comment was appended after derpOriginal + // Same issue, but the comment was appended after derpOriginal. const idx = c.derpOriginal.length; c.derpOriginal = c.textContent.substring(idx); - c.textContent = c.derpString; + c.textContent = c.derp_str; c.clicked = false; } }; -const init = commentsSection => { - // selectors for comments - const selectors = ["#content-text"]; - // build the full selector string - const derpSelectorString = selectors +const Init = commentsSection => { + const commentContentSelector = ["#content-text"]; // Comment text content. + + const notDerpedSelector = commentContentSelector .map(sel => `${sel}:not(.derped)`) .join(", "); - const checkSelectorString = selectors.map(sel => `${sel}.derped`).join(", "); - // Only watch for child list changes, as we're watching the comments container + const derpedSelector = commentContentSelector.map(sel => `${sel}.derped`).join(", "); + + // Only watch for child list changes, as we're watching the comments + // container. const mutationConfig = { attributes: false, childList: true, subtree: true }; - // Create a MutationObserver - // This object will monitor the comments for DOM changes + // Detect when comments are added to the DOM. const observer = new MutationObserver(() => { - // Check that everything's fine with the already derped comments - // This is necessary because youtube does a lot of wizardry with comments in-between videos - document.querySelectorAll(checkSelectorString).forEach(checkComment); - // Derp all un-derped comments - document.querySelectorAll(derpSelectorString).forEach(derpElement); + // Check that everything's fine with the already derped comments. + // This is necessary because youtube does a lot of wizardry with comments + // in-between videos. + document.querySelectorAll(derpedSelector).forEach(ValidatePreviouslyDerpedComments); + + // Derp all un-derped comments. + document.querySelectorAll(notDerpedSelector).forEach(DerpElement); }); observer.observe(commentsSection, mutationConfig); }; -// Check every so often if comments are loaded or not. Once they are, the timeout -// stops until the user leaves youtube or reloads the page. This needs to be -// done since comments are added in the DOM through js at an undetermined point -// through Youtube's execution. -const checkCommentsLoaded = () => { +// Check every so often if comments are loaded or not. Once they are, the +// timeout stops until the user leaves youtube or reloads the page. This needs +// to be done since comments are added in the DOM through js at an undetermined +// point through Youtube's execution. +const CheckIfCommentsLoaded = () => { + const commentSectionSelector = "html body ytd-app ytd-comments ytd-item-section-renderer #contents"; + setTimeout(() => { // This selector is awful, but Youtube re-uses a lot of the DOM (the // selector for the comments is re-used across a bunch of pages) so we need // the exact path to the comments to match - const commentsSection = document.querySelector("html body ytd-app ytd-comments ytd-item-section-renderer #contents"); - if (commentsSection !== null) { - init(commentsSection); - } - else { - checkCommentsLoaded(); - } + const commentsSection = document.querySelector(commentSectionSelector); + if (commentsSection !== null) + Init(commentsSection); + else + CheckIfCommentsLoaded(); }, 500); }; -checkCommentsLoaded(); +CheckIfCommentsLoaded(); diff --git a/manifest.json b/manifest.json index 7f2b2c8..4a897e4 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "YouTube Herp Derp", "description": "Replaces YouTube comments with herp derps. Forked from github.com/twstokes/herpderp", "homepage_url": "https://michael.is", - "version": "1.0", + "version": "1.0.3", "icons": { "48": "icons/herp48.png", "128": "icons/herp128.png"