WeChat Article URL Copier

Simplify WeChat article URL and copy it to the clipboard with a notification

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         WeChat Article URL Copier
// @namespace    http://tampermonkey.net/
// @version      1.5
// @description  Simplify WeChat article URL and copy it to the clipboard with a notification
// @author       You
// @match        https://mp.weixin.qq.com/s*
// @grant        GM_setClipboard
// @license GNU 

// ==/UserScript==

(function() {
    'use strict';

    // Create the "Copy URL" button
    const button = document.createElement('button');
    button.innerText = 'Copy URL';
    button.style.position = 'fixed';
    button.style.top = '10px';
    button.style.right = '10px';
    button.style.zIndex = '10000';
    button.style.padding = '10px 15px';
    button.style.backgroundColor = '#007bff';
    button.style.color = '#fff';
    button.style.border = 'none';
    button.style.borderRadius = '5px';
    button.style.cursor = 'pointer';

    // Button hover effect
    button.onmouseover = () => {
        button.style.backgroundColor = '#0056b3';
    };
    button.onmouseout = () => {
        button.style.backgroundColor = '#007bff';
    };

    // Create notification function
    const createNotification = (message) => {
        const notification = document.createElement('div');
        notification.innerText = message;
        notification.style.position = 'fixed';
        notification.style.bottom = '10px';
        notification.style.right = '10px';
        notification.style.padding = '10px 15px';
        notification.style.backgroundColor = '#28a745';
        notification.style.color = '#fff';
        notification.style.borderRadius = '5px';
        notification.style.boxShadow = '0 2px 5px rgba(0, 0, 0, 0.2)';
        notification.style.zIndex = '10001';
        notification.style.fontSize = '14px';
        document.body.appendChild(notification);

        // Automatically remove the notification after 3 seconds
        setTimeout(() => {
            notification.remove();
        }, 3000);
    };

    // Button click logic
    button.onclick = () => {
        const url = new URL(window.location.href); // Get the current URL
        const params = url.searchParams; // Extract URL parameters

        // Retrieve necessary parameters
        const biz = params.get('__biz');
        const mid = params.get('mid');
        const idx = params.get('idx');
        const sn = params.get('sn');

        if (biz && mid && idx && sn) {
            const simplifiedURL = `https://mp.weixin.qq.com/s?__biz=${biz}&mid=${mid}&idx=${idx}&sn=${sn}`;
            GM_setClipboard(simplifiedURL); // Copy the simplified URL to the clipboard
            createNotification(`URL copied: ${simplifiedURL}`);
        } else {
            createNotification('Unable to simplify the URL. Required parameters are missing.');
        }
    };

    // Append the button to the page
    document.body.appendChild(button);
})();