NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name queer wisdom for Twitter // @namespace stephfuchs.queer.wisdowm.for.twitter // @version 1.0.0 // @author Stephanie Fuchs // @description The "Queer wisdom for Twitter" script adds a button with a queer flag for the LGBTQIA+ community. By clicking the flag the script will add a random wisdom. There is a list of quotes provided by a JSON file. So the script automatically gets quote-updates. Updates concerning the script are just as features or bugfixing. // @homepage https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript // @include https://twitter.com/home // @include https://twitter.com/intent/* // @run-at document-body // @downloadURL https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript/raw/master/queer-wisdom-for-twitter.user.js // @updateURL https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript/raw/master/queer-wisdom-for-twitter.user.js // @supportURL https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript/issues // @license MIT // ==/UserScript== (function () { 'use strict'; /** * Start the plugin stuff to tweet queer stuff. */ class Plugin { /** * Run the stuff when document body is loaded */ start() { var twitterIsReady = setInterval(function () { let version = '1.0.0'; let name = 'Queer wisdom for Twitter'; let copyright = '(c) 2021 • Stephanie Fuchs • https://github.com/stephfuchs'; let classes = '.css-1dbjc4n.r-1awozwy.r-18u37iz.r-156q2ks'; if (document.querySelector(classes) !== null || document.querySelector(classes) !== undefined) { let wisdom = new QueerWisdom(); console.info('loaded script: "' + name + '" with version: ' + version + '\n' + copyright); clearInterval(twitterIsReady); console.debug(wisdom.debug + 'removed interval'); wisdom.init(); console.debug(wisdom.debug + 'created new wisdom object'); } }, 3000); // check every 3sec /** * Check the system every 5 min whether the button is been missing. */ setInterval(function () { if (document.getElementById('queer_wisdom') === null) { console.debug('Button was deleted. Restarts.'); let wisdom = new QueerWisdom(); wisdom.init(); console.info('reloaded the queer button, because it disappeared.'); console.debug('Restart finished.'); } }, 300000); // check every 5 min } } var plugin = new Plugin(); plugin.start(); /** * Make the queer wisdom great again. */ class QueerWisdom { /** * Provide some variables for the the extra button. */ constructor() { this.debug = '## Queer wisdom for Twitter debugger ##\n'; this.info = '## Queer wisdom for Twitter information ##\n'; this.queerElement = null; this.queerElementId = 'queer_wisdom'; this.lesbianJesus = new HayleyKiyoko(); } /** * Initialization of the script. */ init() { let tweetOptionContainerElement = document.querySelector('.css-1dbjc4n.r-1awozwy.r-18u37iz.r-156q2ks'); console.debug(this.debug + 'Initialization of the script starts.'); console.debug(this.debug + tweetOptionContainerElement); this._createQueerElement(); tweetOptionContainerElement.append(this.queerElement); console.debug(this.debug + 'Added lgbtqia+ flag.'); console.debug(this.debug + tweetOptionContainerElement); console.debug(this.debug + 'Initialization of the script ended.'); } /** * Creates a new div container with the queer flag. * * @returns {HTMLDivElement} * @private */ _createQueerElement() { this.queerElement = document.createElement('a'); this.queerElement.id = this.queerElementId; this.queerElement.style.paddingLeft = '10px'; this.queerElement.title = 'add a random queer wisdom'; this.queerElement.innerHTML = this._getFlagSVG(); this.queerElement.setAttribute('href', 'https://twitter.com/intent/tweet?text=' + encodeURI(this._getJsonWisdom())); console.debug(this.debug + 'Created tweet: https://twitter.com/intent/tweet?text=' + encodeURI(this._getJsonWisdom())); } /** * Get the wisdom from the JSON. * * @returns {string} * @private */ _getJsonWisdom() { console.info(this.info + 'We have to call Hayley Kiyoko for help.'); let girlsLikeGirls = this.lesbianJesus.girlsLikeGirls().wisdoms; let wisdomCount = girlsLikeGirls.length; console.info(this.info + 'The answer from Hayley Kiyoko has arrived with ' + wisdomCount + ' wisdoms.'); let random = Math.floor(Math.random() * wisdomCount); let hayleyWisdom = girlsLikeGirls[random]; console.debug(this.debug + 'random number: ' + random); console.debug(this.debug + 'random wisdom: ' + hayleyWisdom.quote); switch (hayleyWisdom) { case hayleyWisdom.copyright === "": return hayleyWisdom.quote; case hayleyWisdom.copyright !== "": default: return hayleyWisdom.quote + '\n-- ' + hayleyWisdom.copyright; } } /** * Get the LGBTQIA+ flag. * Credits for the svg: https://commons.wikimedia.org/wiki/File:LGBTQ%2B_rainbow_flag_Quasar_%22Progress%22_variant.svg * * @returns {string} * @private */ _getFlagSVG() { return '<svg style="width: 27px; height: auto;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6000 3810">\n' + '\t<rect fill="#750787" width="6000" height="3810"/>\n' + '\t<rect fill="#004dff" width="6000" height="3175"/>\n' + '\t<rect fill="#008026" width="6000" height="2540"/>\n' + '\t<rect fill="#ffed00" width="6000" height="1905"/>\n' + '\t<rect fill="#ff8c00" width="6000" height="1270"/>\n' + '\t<rect fill="#e40303" width="6000" height="635"/>\n' + '\n' + ' <polygon points="-1,960 950,1905 -1,2850" fill="#ffffff"/>\n' + ' <polygon points="-1,960 -1,480 1420,1905 -1,3330 -1,2850 950,1905" fill="#ffafc8"/>\n' + ' <polygon points="-1,480 -1,0 1912,1905 -1,3810 -1,3330 1420,1905 -1,480" fill="#74d7ee"/>\n' + ' <polygon points="-1,0 1912,1905 -1,3810 480,3810 2384,1905 480,0" fill="#613915"/>\n' + ' <polygon points="480,0 960,0 2864,1905 960,3810 480,3810 2384 1905 480,0" fill="#000000"/>\n' + '</svg>'; } } /** * The class for the lesbian jesus to give us the queer wisdom. */ class HayleyKiyoko { /** * It's obvious. * * @returns {JSON} */ girlsLikeGirls() { return { "wisdoms": [ { "quote": "I am here, I am queer.", "copyright": "" }, { "quote": "It's LGBTQIA\+\nL\=lesbian\nG\=gay\nB\=bi\nT\=trans\nQ\=queer\nI\=intersex\nA\=ace\/aro\n\+\=ally", "copyright": "" }, { "quote": "There is no man in a wlw relationship. That is the point.", "copyright": "" }, { "quote": "Did I hit my head and wake up in patriarchal bullshit land?", "copyright": "Nicole Haught \('Wynonna Earp'\)" }, { "quote": "Others: \"How do you know, you are queer?\" - Me: \"How do you know you are not?\" ", "copyright": "" }, { "quote": "When someone tells you they are < insert label >, accept it. They know best, who they are.", "copyright": "" }, { "quote": "\"Really, I don't know why I did this. I guess it's probably because I've got a big lesbian crush on you! Suck on that! AY-YI-YI-YI-YI-YI!\"", "copyright": "Janis \('Mean Girls'\)" }, { "quote": "Hetero people when they see women kissing: \"Oh, they must be good friends\" - Queer women: \"Me n who???\"", "copyright": "" }, { "quote": "There is no wrong or right about beeing queer. You are who you are and this should be always right.", "copyright": "" }, { "quote": "\"You are a lesbian, not a unicorn, right?\"", "copyright": "Waverly Earp \('Wynonna Earp'\)" }, { "quote": "My religion is called Hayley Kiyoko and she is the lesbian jesus.", "copyright": "" } ] }; } } })();