From 9afe4888e05afa54d790d6d1108f8fd10beb6271 Mon Sep 17 00:00:00 2001 From: Jiiks Date: Mon, 21 Dec 2015 13:26:33 +0200 Subject: [PATCH] Firefox emote injects --- Firefox/@betterdiscord-0.0.1.xpi | Bin 0 -> 37883 bytes Firefox/data/css/main.css | 3 + Firefox/data/js/main.js | 199 +++++++++++++++++++++++++++++++ Firefox/icon.png | Bin 0 -> 16586 bytes Firefox/index.js | 9 -- Firefox/lib/BdPageMod.js | 14 +++ Firefox/lib/BetterDiscord.js | 9 ++ Firefox/lib/main.js | 9 ++ Firefox/package.json | 6 +- 9 files changed, 237 insertions(+), 12 deletions(-) create mode 100644 Firefox/@betterdiscord-0.0.1.xpi create mode 100644 Firefox/data/css/main.css create mode 100644 Firefox/data/js/main.js create mode 100644 Firefox/icon.png delete mode 100644 Firefox/index.js create mode 100644 Firefox/lib/BdPageMod.js create mode 100644 Firefox/lib/BetterDiscord.js create mode 100644 Firefox/lib/main.js diff --git a/Firefox/@betterdiscord-0.0.1.xpi b/Firefox/@betterdiscord-0.0.1.xpi new file mode 100644 index 0000000000000000000000000000000000000000..6fbd52d2146e2051ef93ac62900d570ddac5c849 GIT binary patch literal 37883 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 PoebcJzG2^2*Q@^k?$a$5 literal 0 HcmV?d00001 diff --git a/Firefox/data/css/main.css b/Firefox/data/css/main.css new file mode 100644 index 0000000..b76d867 --- /dev/null +++ b/Firefox/data/css/main.css @@ -0,0 +1,3 @@ +.guilds { + background:red !important; +} \ No newline at end of file diff --git a/Firefox/data/js/main.js b/Firefox/data/js/main.js new file mode 100644 index 0000000..bce3fc3 --- /dev/null +++ b/Firefox/data/js/main.js @@ -0,0 +1,199 @@ +var emotesTwitch = null, emotesTwitchSub = null, emotesFfz = null, emotesBttv = null, emotesBttv2 = null; + +var twitchEmoteUrlStart = "https://static-cdn.jtvnw.net/emoticons/v1/"; +var twitchEmoteUrlEnd = "/1.0"; +var ffzEmoteUrlStart = "https://cdn.frankerfacez.com/emoticon/"; +var ffzEmoteUrlEnd = "/1"; +var bttvEmoteUrlStart = "https://cdn.betterttv.net/emote/"; +var bttvEmoteUrlEnd = "/1x"; + +var _emoteModule; +function EmoteModule() { + +} + +EmoteModule.prototype.init = function() { + _emoteModule.loadEmoteData(); +}; + +EmoteModule.prototype.obsCallback = function(mutation) { + var self = this; + for(var i = 0 ; i < mutation.addedNodes.length ; ++i) { + var next = mutation.addedNodes.item(i); + if (next) { + var nodes = self.getNodes(next); + for(var node in nodes) { + if (nodes.hasOwnProperty(node)) { + self.injectEmote(nodes[node]); + } + } + } + } +}; + +EmoteModule.prototype.getNodes = function(node) { + var next; + var nodes = []; + var treeWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false); + + while((next = treeWalker.nextNode()) != null) { + nodes.push(next); + } + return nodes; +}; + +EmoteModule.prototype.injectEmote = function(node) { + + if (!node.parentElement) { + return; + } + + var parent = node.parentElement; + if (parent.tagName != "SPAN") { + return; + } + if(!$(parent.parentElement).hasClass("markup") && !$(parent.parentElement).hasClass("message-content")) { return; } + + var parentInnerHTML = parent.innerHTML; + var words = parentInnerHTML.split(/\s+/g); + if (!words) { + return; + } + + words.some(function(word) { + if (word.length < 4) { + return; + } + if(emotesTwitch != null) { + if (emotesTwitch.emotes.hasOwnProperty(word)) { + var len = Math.round(word.length / 4); + parentInnerHTML = parentInnerHTML.replace(word, '' + word.substr(0, len) + '); + return; + } + } + if(emotesTwitchSub != null) { + if (emotesTwitchSub.hasOwnProperty(word)) { + var len = Math.round(word.length / 4); + parentInnerHTML = parentInnerHTML.replace(word, '' + word.substr(0, len) + '); + return; + } + } + if(emotesFfz != null) { + if(emotesFfz.hasOwnProperty(word)) { + var len = Math.round(word.length / 4); + parentInnerHTML = parentInnerHTML.replace(word, '' + word.substr(0, len) + '); + return; + } + } + if(emotesBttv != null) { + if(emotesBttv.hasOwnProperty(word)) { + var len = Math.round(word.length / 4); + parentInnerHTML = parentInnerHTML.replace(word, '' + word.substr(0, len) + '); + return; + } + } + if(emotesBttv2 != null) { + if(emotesBttv2.hasOwnProperty(word)) { + var len = Math.round(word.length / 4); + parentInnerHTML = parentInnerHTML.replace(word, '' + word.substr(0, len) + '); + return; + } + } + }); + + parent.innerHTML = parentInnerHTML.replace(new RegExp("\uFDD9", "g"), ""); +}; + +EmoteModule.prototype.loadEmoteData = function(type) { + if(_hash == null) { + _utils.getHash(this.loadEmoteData); + return; + } + + switch(type) { + default: + _emoteModule.loadEmoteData("twitch"); + break; + case "twitch": + _utils.log("Loading twitch global emotes"); + $.getJSON('https://twitchemotes.com/api_cache/v2/global.json', function(data) { + _utils.log("Loaded twitch global emotes"); + emotesTwitch = data; + _emoteModule.loadEmoteData("twitch-sub"); + }); + break; + case "twitch-sub": + emotesTwitchSub = {}; + _utils.log("Loading twitch subscriber emotes"); + $.getJSON('https://twitchemotes.com/api_cache/v2/subscriber.json', function(data) { + $.each(data.channels, function(key, val){ + $.each(val.emotes, function(key, val) { + emotesTwitchSub[val.code] = val.image_id; + }); + }); + + _emoteModule.loadEmoteData("ffz"); + }); + break; + case "ffz": + emotesFfz = {}; + _utils.log("Loading FFZ emotes"); + $.getJSON('https://cdn.rawgit.com/Jiiks/BetterDiscordApp/'+_hash+'/data/emotedata_ffz.json', function(data) { + emotesFfz = data; + _emoteModule.loadEmoteData("bttv"); + }); + break; + case "bttv": + emotesBttv = {}; + _utils.log("Loading Basic BTTV emotes"); + $.getJSON('https://api.betterttv.net/2/emotes', function(data) { + $.each(data.emotes, function(key, val) { + emotesBttv[val.code] = val.id; + }); + _emoteModule.loadEmoteData("bttv2"); + }); + break; + case "bttv2": + emotesBttv2 = {}; + _utils.log("Loading BTTV emotes"); + $.getJSON('https://cdn.rawgit.com/Jiiks/BetterDiscordApp/'+_hash+'/data/emotedata_bttv.json', function(data) { + emotesBttv2 = data; + }); + break; + } +}; + +var _utils; + +var _hash = null; +function Utils() {} + +Utils.prototype.getHash = function(callback) { + _utils.log("Getting HASH"); + $.getJSON("https://api.github.com/repos/Jiiks/BetterDiscordApp/commits/master", function(data){ + _hash = data.sha; + _utils.log("HASH = " + _hash); + callback(); + }); +}; + +Utils.prototype.log = function(message) { + console.log("[BetterDiscord] - " + message); +}; + +(function() { + + _utils = new Utils(); + + _emoteModule = new EmoteModule(); + _emoteModule.init(); + + var mainObserver = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + _emoteModule.obsCallback(mutation); + }); + }); + + mainObserver.observe(document, { childList: true, subtree: true }); + +})(); \ No newline at end of file diff --git a/Firefox/icon.png b/Firefox/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5587df62d5d786d5df44a5b234a67865bc40800f GIT binary patch literal 16586 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.0a1" + "firefox": ">=30" }, "license": "MIT", "keywords": [