From eecbb6945b4845e0e4f984299891ccdbd4932892 Mon Sep 17 00:00:00 2001 From: Dave Gallant Date: Sun, 14 Jan 2024 17:37:49 -0500 Subject: [PATCH] Generate tamper-monkey-script (#20) * Generate tamper-monkey-script * Update script.js using gomplate --------- Co-authored-by: GitHub Actions --- .github/workflows/tamper-monkey.yaml | 30 +++++ icon-32x32.png | Bin 0 -> 6041 bytes script.js | 163 ++++++++++++++------------- script.js.tmpl | 42 +++++++ 4 files changed, 154 insertions(+), 81 deletions(-) create mode 100644 .github/workflows/tamper-monkey.yaml create mode 100644 icon-32x32.png create mode 100644 script.js.tmpl diff --git a/.github/workflows/tamper-monkey.yaml b/.github/workflows/tamper-monkey.yaml new file mode 100644 index 0000000..721574e --- /dev/null +++ b/.github/workflows/tamper-monkey.yaml @@ -0,0 +1,30 @@ +name: "Generate Tampermonkey script" +on: + pull_request: + +jobs: + gomplate: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} + + - name: Install gomplate + run: | + wget -O gomplate https://github.com/hairyhenderson/gomplate/releases/download/v3.10.0/gomplate_linux-amd64 + chmod +x gomplate + sudo mv gomplate /usr/local/bin/ + + - name: Run gomplate + run: gomplate < script.js.tmpl > script.js + + - name: Commit and push changes + run: | + git config --global user.name "GitHub Actions" + git config --global user.email "actions@users.noreply.github.com" + git add . + git commit -m "Update script.js using gomplate" || true + git push diff --git a/icon-32x32.png b/icon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..cff56fe40c917f02fd781fc5da8638a6802a123a GIT binary patch literal 6041 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.*?)(&|ref%3D|%3F)', - }, - { - name: 'Best Buy', - pattern: 'bestbuyca.(.*).net(.*)\\?u=(?.*)', - }, - { - name: 'HP', - pattern: 'www.awin1.com(.*)\&clickref=\&p=(?.*)\&.*', - }, - { - name: 'Samsung', - pattern: 'www.awin1.com(.*)\?p=(?.*)', - }, - { - name: 'redirectingat.com', - pattern: 'go.redirectingat.com/.*url=(?.*).*', - }, - { - name: 'homedepot', - pattern: 'the-home-depot-ca.pxf.io(.*)\?u=(?.*)', - }, - { - name: 'redirectingat', - pattern: 'go.redirectingat.com(.*)\?url=(?.*)', - }, - { - name: 'adidas-canada', - pattern: 'adidas-canada.sjv.io(.*)\?u=(?.*)', - }, - { - name: 'canadiantire', - pattern: 'imp.i([0-9]*).net(.*)\?u=(?.*)', - }, - { - name: 'kqzyfj', - pattern: 'www.awin1.com(.*)\?ued=(?.*)', - }, - { - name: 'lenovo', - pattern: '(.*).evyy.net(.*)\?u=(?.*)', - }, - { - name: 'thesource', - pattern: 'www.kqzyfj.com(.*)?url=(?.*)&sid=.*', - }, - { - name: 'walmart', - pattern: 'click.linksynergy.com(.*)\?murl=(?.*)&u1=.*', - }, - { - name: 'dpbolvw.net', - pattern: 'www.dpbolvw.net(.*)?url=(?.*)', - }, - { - name: "jdoqocy.com", - pattern: "www.jdoqocy.com(.*)?url=(?.*)&sid=.*" - }, - { - name: 'pxf.io', - pattern: '(.*).pxf.io(.*)\?u=(?.*)', - }, - { - name: 'avantlink.com', - pattern: '(.*).avantlink.com(.*)\?url=(?.*)', - }, - { - name: "anrdoezrs.net", - pattern: ".*anrdoezrs\\.net.+\\?url=(?.*)&sid=.+" - }, - { - name: "tkqlhce.com", - pattern: ".*tkqlhce\\.com.+?url=(?.*)&sid=.*" - }, - { - name: "staples", - pattern: ".*staplescanada\\.4u8mqw\\.net.+\\?u=(?.*)" - } - ]; + { + "name": "Amazon", + "pattern": "www.amazon.ca/gp/redirect.html\\?ie=UTF8&location=(?.*?)(&|ref%3D|%3F)" + }, + { + "name": "Best Buy", + "pattern": "bestbuyca.(.*).net(.*)\\?u=(?.*)" + }, + { + "name": "HP", + "pattern": "www.awin1.com(.*)&clickref=&p=(?.*)&.*" + }, + { + "name": "Samsung", + "pattern": "www.awin1.com(.*)?p=(?.*)" + }, + { + "name": "redirectingat.com", + "pattern": "go.redirectingat.com/.*url=(?.*).*" + }, + { + "name": "homedepot", + "pattern": "the-home-depot-ca.pxf.io(.*)?u=(?.*)" + }, + { + "name": "redirectingat", + "pattern": "go.redirectingat.com(.*)?url=(?.*)" + }, + { + "name": "adidas-canada", + "pattern": "adidas-canada.sjv.io(.*)?u=(?.*)" + }, + { + "name": "canadiantire", + "pattern": "imp.i([0-9]*).net(.*)?u=(?.*)" + }, + { + "name": "underarmour", + "pattern": "www.awin1.com(.*)?ued=(?.*)" + }, + { + "name": "lenovo", + "pattern": "(.*).evyy.net(.*)?u=(?.*)" + }, + { + "name": "kqzyfj", + "pattern": "www.kqzyfj.com(.*)?url=(?.*)&sid=.*" + }, + { + "name": "walmart", + "pattern": "click.linksynergy.com(.*)?murl=(?.*)&u1=.*" + }, + { + "name": "dpbolvw.net", + "pattern": "www.dpbolvw.net(.*)?url=(?.*)" + }, + { + "name": "jdoqocy.com", + "pattern": "www.jdoqocy.com(.*)?url=(?.*)&sid=rfdcb" + }, + { + "name": "pfx.io", + "pattern": "(.*).pxf.io(.*)?u=(?.*)" + }, + { + "name": "avantlink.com", + "pattern": "(.*).avantlink.com(.*)?url=(?.*)" + }, + { + "name": "anrdoezrs.net", + "pattern": ".*anrdoezrs\\.net.+\\?url=(?.*)&sid=.*" + }, + { + "name": "tkqlhce.com", + "pattern": ".*tkqlhce\\.com.+?url=(?.*)&sid=.*" + }, + { + "name": "staples", + "pattern": ".*staplescanada\\.4u8mqw\\.net.+\\?u=(?.*)" + } +] +; var StripRedirect = function(URL) { for (var i = 0; i < REDIRECT_REGEX.length; i++) { diff --git a/script.js.tmpl b/script.js.tmpl new file mode 100644 index 0000000..bab35b2 --- /dev/null +++ b/script.js.tmpl @@ -0,0 +1,42 @@ +// ==UserScript== +// @name RedFlagDeals Redirect Stripper +// @author Dave Gallant +// @description Strip redirect links on forums.redflagdeals.com +// @downloadURL https://raw.githubusercontent.com/davegallant/rfd-redirect-stripper/main/script.js +// @grant none +// @match *://forums.redflagdeals.com/* +// @namespace http://tampermonkey.net/ +// @updateURL https://raw.githubusercontent.com/davegallant/rfd-redirect-stripper/main/script.js +// @version 0.0.1 +// ==/UserScript== + +(function() { + 'use strict'; + + var Links = document.querySelectorAll('a.postlink, a.autolinker_link'); + + const REDIRECT_REGEX = {{ file.Read "redirects.json" }}; + + var StripRedirect = function(URL) { + for (var i = 0; i < REDIRECT_REGEX.length; i++) { + var rule = REDIRECT_REGEX[i]; + var result = new RegExp(rule.pattern).exec(URL); + if (result) { + var newURL = result.groups.baseUrl; + try { + return decodeURIComponent(newURL); + } catch (e) { + console.log(e); + return URL; + } + } + } + return URL; + }; + + Links.forEach(function(Link) { + var ReferralURL = Link.href; + Link.href = StripRedirect(ReferralURL); + }); + +})();