您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Blurring a title which marked as spoiler in reddit, just like in fallout subreddit.
- // ==UserScript==
- // @name Blur Title Reddit
- // @namespace https://greasyfork.org/users/102866
- // @description Blurring a title which marked as spoiler in reddit, just like in fallout subreddit.
- // @include https://*.reddit.com/*
- // @include http://*.reddit.com/*
- // @exclude https://*.reddit.com/r/*/comments/*
- // @exclude http://*.reddit.com/r/*/comments/*
- // @author TiLied
- // @version 0.8.00
- // @grant GM_listValues
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_deleteValue
- // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
- // @grant GM.listValues
- // @grant GM.getValue
- // @grant GM.setValue
- // @grant GM.deleteValue
- // ==/UserScript==
- class BlurTitleReddit
- {
- constructor()
- {
- console.log("Blur Title Reddit v" + GM.info.script.version + " initialization");
- this.Debug = false;
- this.btr_pTitle = false;
- this.asterisk = true;
- this.Scroll = 1;
- this._FirstTime();
- this._SetCSS();
- }
- _SetCSS()
- {
- document.head.append("<!--Start of Blur Title Reddit v" + GM.info.script.version + " CSS-->");
- document.head.insertAdjacentHTML("beforeend", `<style type="text/css">bdi.btr_title:hover \
- { \
- color:inherit!important; \
- background:transparent!important; \
- text-decoration:none!important; \
- text-shadow:0 0.1px 0 #dcddce \
- }</style>`);
- document.head.insertAdjacentHTML("beforeend", `<style type="text/css">bdi.btr_title { \
- color:rgba(255,60,231,0) !important; \
- text-shadow: 0px 0px 1em black; \
- padding: 0 2px; \
- }</style>`);
- document.head.insertAdjacentHTML("beforeend", `<style type="text/css">bdi.btr_trans \
- { \
- transition: all 0.5s ease; \
- }</style>`);
- document.head.insertAdjacentHTML("beforeend", `<style type="text/css">.btr_closeButton\
- { \
- cursor: pointer; \
- text-align: center; \
- font-size: 11px; \
- float:right; \
- margin-top:0px; \
- border:1px solid #AAA; \
- width:16px; \
- height:16px; \
- }</style>`);
- document.head.insertAdjacentHTML("beforeend", `<style type="text/css">.btr_closeButton:hover \
- { \
- border:1px solid #999; \
- background-color: #ddd; \
- }</style>`);
- document.head.insertAdjacentHTML("beforeend", `<style type="text/css">.title \
- { \
- overflow: visible !important; \
- }</style>`);
- document.head.insertAdjacentHTML("beforeend", `<style type="text/css">"div.btr_opt { \
- position: fixed; bottom: 0; right: 0; border: 0; z-index: 500;\
- }</style>`);
- document.head.append("<!--End of Blur Title Reddit v" + GM.info.script.version + " CSS-->");
- }
- async _FirstTime()
- {
- if (this.HasValueGM("btr_GMTitle", false))
- {
- this.btr_pTitle = await GM.getValue("btr_GMTitle");
- }
- if (this.HasValueGM("btr_asterisk", true))
- {
- this.asterisk = await GM.getValue("btr_asterisk");
- }
- //Console log prefs with value
- console.log("*prefs:");
- console.log("*-----*");
- let vals = await GM.listValues();
- //Find out that var in for block is not local... Seriously js?
- for (let i = 0; i < vals.length; i++)
- {
- console.log("*" + vals[i] + ":" + await GM.getValue(vals[i]));
- }
- console.log("*-----*");
- }
- Main()
- {
- window.onscroll = function (ev)
- {
- if (window.pageYOffset >= window.innerHeight * btr.Scroll)
- {
- btr.Core();
- btr.Scroll += 1;
- }
- };
- this.Core();
- //Set UI of settings
- //TODO UI!
- //this.OptionsUI();
- }
- Core()
- {
- let _titlesDivQ = document.querySelectorAll("div.spoiler");
- let _titlesDiv = [];
- if (_titlesDivQ.length == 0)
- {
- function _IsSpoiler(_el)
- {
- let _spans = _el.querySelectorAll("span");
- if (btr.Debug)
- console.log(_el.querySelectorAll("span"));
- for (let i = 0; i <= _spans.length; i++)
- {
- if (i == _spans.length)
- return false;
- if (_spans[i].textContent == 'spoiler')
- return true;
- }
- }
- let _titles = document.querySelectorAll(".Post");
- for (let i = 0; i < _titles.length; i++)
- {
- if (_IsSpoiler(_titles[i]))
- {
- _titlesDiv.push(_titles[i]);
- }
- }
- } else
- {
- for (let i = 0; i < _titlesDivQ.length; i++)
- {
- _titlesDiv.push(_titlesDivQ[i]);
- }
- }
- if (_titlesDiv != this.titlesDiv)
- {
- if (this.Debug)
- console.log(_titlesDiv);
- this.titlesDiv = _titlesDiv;
- for (let i = 0; i < _titlesDiv.length; i++)
- {
- if (_titlesDiv[i].querySelectorAll(".btr_title").length > 0)
- continue;
- let _title = _titlesDiv[i].querySelectorAll("h3, a.title");
- if (this.Debug)
- console.log(_title);
- if (this.btr_pTitle == true)
- {
- let lengthOfIndexes = 0;
- this.ChangeString(_title[0].textContent.length, _title[0].textContent, _title[0], lengthOfIndexes);
- }
- else if (this.asterisk == true)
- {
- let lengthOfIndexes = this.GetAllIndexes(_title[0].textContent, "[", "(").length;
- lengthOfIndexes += this.GetAllIndexes(_title[0].textContent, "*", "even").length;
- this.ChangeString(_title[0].textContent.length, _title[0].textContent, _title[0], lengthOfIndexes);
- } else
- {
- let lengthOfIndexes = this.GetAllIndexes(_title[0].textContent, "[", "(").length;
- this.ChangeString(_title[0].textContent.length, _title[0].textContent, _title[0], lengthOfIndexes);
- }
- }
- }
- }
- ChangeString(l, sArr, tTitle, amountL)
- {
- const stringStartbdi = '<bdi class = "btr_main btr_title btr_trans">',
- stringEndbdi = '</bdi>';
- let amount = amountL;
- let string = "";
- if (amount > 3)
- amount = 1;
- let arrBeg = this.GetAllIndexes(sArr, "[", "(");
- let arrEnd = this.GetAllIndexes(sArr, "]", ")");
- if (this.asterisk === true)
- {
- arrBeg = arrBeg.concat(this.GetAllIndexes(sArr, "*", "even"));
- arrEnd = arrEnd.concat(this.GetAllIndexes(sArr, "*", "odd"));
- }
- arrBeg.sort(function (a, b)
- {
- return a - b;
- });
- arrEnd.sort(function (a, b)
- {
- return a - b;
- });
- if (amount === 0)
- {
- string = stringStartbdi + ' ' + sArr + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- if (amount === 1)
- {
- if (this.Debug)
- {
- console.log("*words in brackets :", sArr.substring(arrBeg[0], arrEnd[0] + 1));
- }
- //IF WHOLE TITLE IN BRACKETS
- if (arrBeg[0] <= 2 && arrEnd[0] >= l - 2)
- {
- string = stringStartbdi + ' ' + sArr + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- if (arrBeg[0] <= 2)
- {
- string = sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- } else if (arrEnd[0] >= l - 2)
- {
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- } else
- {
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- }
- if (amount === 2)
- {
- let s = '';
- for (let a = 0; a < arrBeg.length; a++)
- {
- s += sArr.substring(arrBeg[a], arrEnd[a] + 1) + ' ';
- }
- if (this.Debug)
- {
- console.log("*words in brackets :", s);
- }
- //IF TITLE HAS ONE BRACKET WITHOUT CLOSING ONE
- if (arrBeg.length !== arrEnd.length)
- {
- ChangeString(l, sArr, tTitle, 1);
- return;
- }
- //IF WHOLE TITLE IN BRACKETS, NOT WORKING CORRECTLY TODO!
- if ((arrBeg[0] <= 2 && arrEnd[0] >= l - 2) || (arrBeg[1] <= 2 && arrEnd[1] >= l - 2))
- {
- string = stringStartbdi + ' ' + sArr + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- if (arrBeg[0] <= 2)
- {
- if (arrEnd[0] + 4 > arrBeg[1])
- {
- string = sArr.substring(arrBeg[0], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- } else if (arrEnd[1] >= l - 2)
- {
- string = sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- } else
- {
- string = sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- } else if (arrEnd[1] >= l - 2)
- {
- if (arrBeg[1] - 4 < arrEnd[0])
- {
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- } else if (arrBeg[0] <= 2)
- {
- string = sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- } else
- {
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- } else
- {
- if (arrEnd[0] + 3 >= arrBeg[1])
- {
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- } else
- {
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- }
- }
- //Three groups of brackets
- //example sentence: "[spoiler0]_text1_[spoiler1]_text2_[spoiler2]"
- if (amount === 3)
- {
- let s = '';
- for (let a = 0; a < arrBeg.length; a++)
- {
- s += sArr.substring(arrBeg[a], arrEnd[a] + 1) + ' ';
- }
- if (this.Debug)
- {
- console.log("*words in brackets :", s);
- }
- //IF TITLE HAS ONE BRACKET WITHOUT CLOSING ONE
- if (arrBeg.length !== arrEnd.length)
- {
- ChangeString(l, sArr, tTitle, 1);
- return;
- }
- //IF WHOLE TITLE IN BRACKETS, NOT WORKING CORRECTLY TODO!
- if ((arrBeg[0] <= 2 && arrEnd[0] >= l - 2) || (arrBeg[1] <= 2 && arrEnd[1] >= l - 2) || (arrBeg[2] <= 2 && arrEnd[2] >= l - 2))
- {
- string = stringStartbdi + ' ' + sArr + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- //case one:"[spoiler0]..."
- if (arrBeg[0] <= 2)
- {
- //case one:one:"[spoiler0][spoiler1]..."
- if (arrEnd[0] + 4 > arrBeg[1])
- {
- //case one:one:one:"[spoiler0][spoiler1][spoiler2]_text"
- if (arrEnd[1] + 4 > arrBeg[2])
- {
- //"[spoiler0][spoiler1][spoiler2]<blur>text</blur>"
- string = sArr.substring(arrBeg[0], arrEnd[2] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[2] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- //case one:one:two:"[spoiler0][spoiler1]_text_[spoiler2]"
- } else if (arrEnd[2] >= l - 2)
- {
- //"[spoiler0][spoiler1]<blur>text</blur>[spoiler2]"
- string = sArr.substring(arrBeg[0], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, arrBeg[2]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[2], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- //case one:one:three:"[spoiler0][spoiler1]_text1_[spoiler2]_text2"
- } else
- {
- //"[spoiler0][spoiler1]<blur>text1</blur>[spoiler2]<blur>text2</blur>"
- string = sArr.substring(arrBeg[0], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, arrBeg[2]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[2], arrEnd[2] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[2] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- //case one:two:"[spoiler0]...[spoiler2]"
- //"[spoiler0]...[spoiler1]":NEVER HAPPEND
- } else if (arrEnd[2] >= l - 2)
- {
- //case one:two:one:"[spoiler0]_text_[spoiler1][spoiler2]"
- if (arrEnd[1] + 4 > arrBeg[2])
- {
- //"[spoiler0]<blur>text</blur>[spoiler1][spoiler2]"
- string = sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- //case one:two:two:"[spoiler0]_text1_[spoiler1]_text2_[spoiler2]"
- else
- {
- //"[spoiler0]<blur>text1</blur>[spoiler1]<blur>text2</blur>[spoiler2]"
- string = sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, arrBeg[2]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[2], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- //case one:three:"[spoiler0]_text1_[spoiler1]_text2_[spoiler2]_text3"
- } else
- {
- //"[spoiler0]<blur>text1</blur>[spoiler1]<blur>text2</blur>[spoiler2]<blur>text3</blur>"
- string = sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, arrBeg[2]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[2], arrEnd[2] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[2] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- //case two:"...[spoiler2]"
- } else if (arrEnd[2] >= l - 2)
- {
- //case two:one:"...[spoiler1][spoiler2]"
- if (arrEnd[1] + 4 > arrBeg[2])
- {
- //case two:one:one:"text_[spoiler0][spoiler1][spoiler2]"
- if (arrEnd[0] + 4 > arrBeg[1])
- {
- //"<blur>text</blur>[spoiler0][spoiler1][spoiler2]"
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- //case two:one:one:"text1_[spoiler0]_text2_[spoiler1][spoiler2]"
- //"[spoiler0]_text_[spoiler1][spoiler2]":NEVER HAPPEND
- } else
- {
- //"<blur>text1</blur>[spoiler0]<blur>text2</blur>[spoiler1][spoiler2]"
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrEnd[1] + 1, l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- //case two:two:"text1_[spoiler0][spoiler1]_text2_[spoiler2]"
- } else if (arrEnd[0] + 4 > arrBeg[1])
- {
- //"<blur>text1</blur>[spoiler0][spoiler1]<blur>text2</blur>[spoiler2]"
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, arrBeg[2]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrEnd[2] + 1, l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- //case two:two:"text1_[spoiler0]_text2_[spoiler1]_text3_[spoiler2]"
- } else
- {
- //"<blur>text1</blur>[spoiler0]<blur>text2</blur>[spoiler1]<blur>text3</blur>[spoiler2]"
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, arrBeg[2]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[2], l);
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- //case three:"text1_[spoiler0]_text2_[spoiler1]_text3_[spoiler2]_text4"
- //DO I NEED ALL CASES??? TODO!
- } else
- {
- //"<blur>text1</blur>[spoiler0]<blur>text2</blur>[spoiler1]<blur>text3</blur>[spoiler2]<blur>text4</blur>"
- string = stringStartbdi + ' ' + sArr.substring(0, arrBeg[0]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[0], arrEnd[0] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[0] + 1, arrBeg[1]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[1], arrEnd[1] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[1] + 1, arrBeg[2]) + ' ' + stringEndbdi + ' ' + sArr.substring(arrBeg[2], arrEnd[2] + 1) + ' ' + stringStartbdi + ' ' + sArr.substring(arrEnd[2] + 1, l) + ' ' + stringEndbdi;
- if (this.Debug)
- {
- console.info(string);
- }
- tTitle.innerHTML = string;
- return;
- }
- }
- }
- //second value can be "even" or "odd"
- GetAllIndexes(arr, val1, val2)
- {
- let indexes = [], temp = [], x, i;
- switch (val2)
- {
- case "even":
- for (x = 0; x < arr.length; x++)
- if (arr[x] === val1)
- temp.push(x);
- for (i = 0; i < temp.length; i++)
- {
- if (this.IsEven(i))
- {
- indexes.push(temp[i]);
- }
- }
- break;
- case "odd":
- for (x = 0; x < arr.length; x++)
- if (arr[x] === val1)
- temp.push(x);
- for (i = 0; i < temp.length; i++)
- {
- if (!this.IsEven(i))
- {
- indexes.push(temp[i]);
- }
- }
- break;
- default:
- for (x = 0; x < arr.length; x++)
- if (arr[x] === val1 || arr[x] === val2)
- indexes.push(x);
- break;
- }
- return indexes;
- }
- IsEven(n)
- {
- return n === parseFloat(n) ? !(n % 2) : void 0;
- }
- OptionsUI()
- {
- document.body.insertAdjacentHTML("beforeend", `<div id=btrSettings class='side jAyrXr'><div class=spaser ><div class=sidecontentbox><span class=btr_closeButton>×</span> \
- <div class=title><h1>Settings of Blur Title Reddit` + GM.info.script.version + `</h1></div>\
- <ul class=content><li> \
- <form> \
- <br> \
- <p>Bluring option:</p>\
- <input type=radio name=title id=btr_showTitle >Show brackets</input><br> \
- <input type=radio name=title id=btr_hideTitle >Hide brackets</input><br><br> \
- <input type=checkbox name=asterisk id=asterisk >Show what between asterisks like brackets</input><br><br> \
- <input type=checkbox name=debug id=debug >Debug</input><br> \
- </form> <br> \
- <button id=btr_hide class=hauwm>Hide Settings</button></li></ul></div></div></div>`);
- //SET UI SETTINGS
- document.getElementById("debug").setAttribute("checked", this.Debug);
- document.getElementById("asterisk").setAttribute("checked", this.asterisk);
- if (this.btr_pTitle === true)
- {
- document.getElementById("btr_hideTitle").setAttribute("checked", true);
- } else
- {
- document.getElementById("btr_showTitle").setAttribute("checked", true);
- }
- document.getElementById("btrSettings").style.display = "none";
- //CHANGE SETTINGS BY INTERACT WITH UI
- document.getElementById("debug").addEventListener("click", async (e) =>
- {
- if (btr.Debug === true)
- {
- GM.setValue("btr_debug", false);
- btr.Debug = await GM.getValue("btr_debug");
- } else
- {
- GM.setValue("btr_debug", true);
- btr.Debug = await GM.getValue("btr_debug");
- }
- confirm("Settings has been changed.");
- if (btr.Debug)
- {
- console.log('debug: ' + await GM.getValue("btr_debug") + ' and debug: ' + btr.Debug);
- }
- });
- document.getElementById("asterisk").addEventListener("click", async (e) =>
- {
- if (btr.asterisk === true)
- {
- GM.setValue("btr_asterisk", false);
- btr.asterisk = await GM.getValue("btr_asterisk");
- } else
- {
- GM.setValue("btr_asterisk", true);
- btr.asterisk = await GM.getValue("btr_asterisk");
- }
- confirm("Settings has been changed.");
- if (btr.Debug)
- {
- console.log('btr_asterisk: ' + await GM.getValue("btr_asterisk") + ' and asterisk: ' + btr.asterisk);
- }
- });
- /* TODO!
- document.getElementById("#btr_showTitle").onclick((e) =>
- {
- GM.setValue("btr_GMTitle", false);
- btr_pTitle = await GM.getValue("btr_GMTitle");
- ReplaceOriginalTitles();
- MyFunction();
- alert("Settings has been changed. Now brackets showing.");
- if (debug)
- {
- console.log('btr_GMTitle: ' + await GM.getValue("btr_GMTitle") + ' and btr_pTitle: ' + btr_pTitle);
- }
- });
- $("#btr_hideTitle").change(async function ()
- {
- GM.setValue("btr_GMTitle", true);
- btr_pTitle = await GM.getValue("btr_GMTitle");
- ReplaceOriginalTitles();
- MyFunction();
- alert("Settings has been changed. Now brackets hiding.");
- if (debug)
- {
- console.log('btr_GMTitle: ' + await GM.getValue("btr_GMTitle") + ' and btr_pTitle: ' + btr_pTitle);
- }
- });
- */
- //TODO ???
- //$(".side").append("<div class=spacer><div class=sidecontentbox><div class=title><h1>BLUR TITLE REDDIT</h1></div><ul class=content><li><button id=btr_show >Show settings</button></li></ul></div></div>");
- //console.log(currentLocation.pathname);
- //if (currentLocation.pathname === "/r/Steam")
- //{
- // $(".debuginfo").after("<p><a id=btr_show style={float=right;}>show settings blur title reddit</a></p>");
- //} else {
- //$(".side").append("<div class=spacer><div class=account-activity-box><p><a id=btr_show >show settings blur title reddit</a></p></div></div>");
- //}
- document.querySelector("div[data-testid='subreddit-sidebar'], div.side").insertAdjacentHTML("beforeend", `<div class=spacer><div class=account-activity-box style=cursor:pointer;><p><a id=btr_show >show settings for blur title reddit</a></p></div></div>`);
- document.getElementById("btr_hide").addEventListener("click", (e) =>
- {
- document.getElementById("btrSettings").style.display = "none";
- });
- document.querySelector(".btr_closeButton").addEventListener("click", (e) =>
- {
- document.getElementById("btrSettings").style.display = "none";
- });
- document.getElementById("btr_show").addEventListener("click", (e) =>
- {
- document.getElementById("btrSettings").style.display = "block";
- if (!document.getElementById("btrSettings").classList.contains("btr_opt"))
- document.getElementById("btrSettings").className += " btr_opt";
- });
- }
- //Start
- //async Methods/Functions GM_VALUE
- async HasValueGM(nameVal, optValue)
- {
- let vals = await GM.listValues();
- if (vals.length === 0)
- {
- if (optValue !== undefined)
- {
- GM.setValue(nameVal, optValue);
- return true;
- } else
- {
- return false;
- }
- }
- if (typeof nameVal !== "string")
- {
- return alert("name of value: '" + nameVal + "' are not string");
- }
- for (let i = 0; i < vals.length; i++)
- {
- if (vals[i] === nameVal)
- {
- return true;
- }
- }
- if (optValue !== undefined)
- {
- GM.setValue(nameVal, optValue);
- return true;
- } else
- {
- return false;
- }
- }
- async DeleteValuesGM(nameVal)
- {
- let vals = await GM.listValues();
- if (vals.length === 0 || typeof nameVal !== "string")
- {
- return;
- }
- switch (nameVal)
- {
- case "all":
- for (let i = 0; i < vals.length; i++)
- {
- if (vals[i] !== "adm")
- {
- GM.deleteValue(vals[i]);
- }
- }
- break;
- case "old":
- for (let i = 0; i < vals.length; i++)
- {
- if (vals[i] === "debug" || vals[i] === "debugA")
- {
- GM.deleteValue(vals[i]);
- }
- }
- break;
- default:
- for (let i = 0; i < vals.length; i++)
- {
- if (vals[i] === nameVal)
- {
- GM.deleteValue(nameVal);
- }
- }
- break;
- }
- }
- async UpdateGM(what)
- {
- var gmVal;
- switch (what)
- {
- case "options":
- gmVal = JSON.stringify(options.values);
- GM.setValue("pp_options", gmVal);
- break;
- default:
- alert("class:Options.UpdateGM(" + what + "). default switch");
- break;
- }
- }
- //async Methods/Functions GM_VALUE
- //End
- }
- let btr;
- window.onload = function ()
- {
- btr = new BlurTitleReddit();
- setTimeout(() =>
- {
- btr.Main();
- console.log(btr);
- }, 1000);
- };