summaryrefslogtreecommitdiffstats
path: root/.config/qutebrowser/greasemonkey/linkedin.js
diff options
context:
space:
mode:
Diffstat (limited to '.config/qutebrowser/greasemonkey/linkedin.js')
-rwxr-xr-x.config/qutebrowser/greasemonkey/linkedin.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/.config/qutebrowser/greasemonkey/linkedin.js b/.config/qutebrowser/greasemonkey/linkedin.js
new file mode 100755
index 0000000..b8468ec
--- /dev/null
+++ b/.config/qutebrowser/greasemonkey/linkedin.js
@@ -0,0 +1,59 @@
+// ==UserScript==
+// @name linkedin css
+// @match *://*.linkedin.com/*
+// @grant none
+// @inject-into content
+// ==/UserScript==
+
+(function() {
+ 'use strict';
+
+ // Selectors
+ const storySelector = '.feed-shared-update-v2';
+ const descriptionSelector = '.feed-shared-actor__description, .feed-shared-actor__sub-description';
+
+ // Search strings
+ const searchStrings = {
+ 'da': ['Promoveret'],
+ 'en': ['Promoted'],
+ 'es': ['Promocionado'],
+ 'fr': ['Post sponsorisé']
+ };
+
+ const language = searchStrings.hasOwnProperty(document.documentElement.lang) ? document.documentElement.lang : 'en';
+
+ function blockSponsoredPosts() {
+ const stories = document.querySelectorAll(storySelector);
+ for (const story of stories) {
+ if (story.style.display == 'none') {
+ continue;
+ }
+
+ const descriptions = story.querySelectorAll(descriptionSelector);
+ for (const description of descriptions) {
+
+ const descriptionContent = description.innerText.trim();
+ if (searchStrings[language].find(searchString => searchString == descriptionContent)) {
+
+ console.debug('Blocked sponsored story', story);
+ story.style.display = 'none';
+ }
+ }
+ }
+ }
+
+ const observer = new MutationObserver(blockSponsoredPosts);
+ observer.observe(document.body, {
+ 'childList': true,
+ 'subtree': true
+ });
+
+ blockSponsoredPosts();
+
+ GM_addStyle(`
+ .scaffold-layout__aside {
+ visibility: hidden;
+ }
+ `)
+
+})();
remember that computers suck.