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 0000000..cff56fe Binary files /dev/null and b/icon-32x32.png differ diff --git a/script.js b/script.js index 6ddd599..3e54e39 100644 --- a/script.js +++ b/script.js @@ -16,87 +16,88 @@ var Links = document.querySelectorAll('a.postlink, a.autolinker_link'); const REDIRECT_REGEX = [ - { - 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: '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); + }); + +})();