T411 - Shoutbox notifications

Affiche une notification de bureau lors de la réception d'un message

Versione datata 06/07/2016. Vedi la nuova versione l'ultima versione.

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         T411 - Shoutbox notifications
// @namespace    https://www.t411.ch
// @description  Affiche une notification de bureau lors de la réception d'un message
// @author       M1st3rN0b0d7, Micdu70
// @match        http://www.t411.ch/chati/*
// @match        https://www.t411.ch/chati/*
// @grant        none
// @version      1.0.1
// ==/UserScript==
function INIT()
{
    var url = document.location.protocol + '//www.t411.ch/users/profile/';
    var http = new XMLHttpRequest();
    http.open("GET", url, true);
    http.timeout = 15000;
    http.ontimeout = function(e)
    {
        alert('Script Shoutbox notifications : Impossible d\'obtenir votre pseudo, site instable ? Actualisez la page...');
    };
    http.onreadystatechange = function()
    {
        if (http.readyState == 4 && http.status == 200)
        {
            getYourUsername(http.response);
        }
    };
    http.send(null);
}
function getYourUsername(x)
{
    var tempDiv = document.createElement('div');
    tempDiv.innerHTML = x.replace(/<script(.|\s)*?\/script>/g, '');
    var title = tempDiv.getElementsByTagName('title')[0].innerHTML;
    if (title.indexOf('Membre') != -1)
    {
        var yourusername = title.slice(19).slice(0, title.indexOf(' '));
        Check(yourusername);
    }
    else
    {
        alert('Script Shoutbox notifications : Impossible d\'obtenir votre pseudo, site instable ? Actualisez la page...');
    }
}
function Check(me)
{
    var me_test = me.toLowerCase();
    document.getElementById('messages').addEventListener('DOMNodeInserted', function (event)
                                                         {
        if (event.target.parentNode.id == 'messages')
        {
            var element = document.getElementsByClassName("message")[0];
            var user = element.getElementsByTagName("strong")[0];
            var user_pv = element.getElementsByTagName("strong")[1];
            var msg = element.getElementsByTagName("p")[0];
            var msg1 = "";
            if (user.innerText !== me)
            {
                if (user_pv !== undefined)
                {
                    msg1 = msg.innerHTML.replace(/<a.*?>(.*?)<\/a>/g, "$1").replace(/<img.*?alt="\\(.*?)">/g, "$1").replace(/((<.*?>)+).*?((<\/.*?>)+)/g, "");
                    notifyMe("pv", user.innerText, msg1);
                }
                else
                {
                    var test = msg.innerText.toLowerCase().indexOf(me_test);
                    if (test !== -1)
                    {
                        msg1 = msg.innerHTML.replace(/<a.*?>(.*?)<\/a>/g, "$1").replace(/<img.*?alt="(.*?)">/g, "$1").replace(/((<.*?>)+).*?((<\/.*?>)+)/g, "");
                        notifyMe(true, user.innerText, msg1);
                    }
                }
            }
        }
    });
}
function notifyMe(x, user, msg)
{
    if (x === undefined)
    {
        if (!Notification)
        {
            alert('Notifications de bureau non supportées.');
            return;
        }
        if (Notification.permission === "denied")
        {
            alert('Notifications de bureau sont bloquées.');
            return;
        }
        if (Notification.permission !== "granted")
        {
            Notification.requestPermission();
        }
    }
    else
    {
        var notification = "";
        if (x !== "pv")
        {
            notification = new Notification('Shoutbox T411',
                                            {
                icon: 'https://www.t411.ch/themes/blue/images/logo.png',
                body: user + " vous a cité :\n" + msg
            });
        } else {
            notification = new Notification('Shoutbox T411',
                                            {
                icon: 'https://www.t411.ch/themes/blue/images/logo.png',
                body: user + " vous a MP :\n" + msg
            });
        }
        var audio = new Audio("http://mobilering.net/ringtones/mp3/sound-effects/facebook_pop.mp3");
        audio.volume = 0.3;
        audio.play();
    }
}
INIT();
notifyMe();