Fic's Mixify Auto Welcome Script

This script can be used on Mixify.com while streaming your DJ set. The main reason why I created this script is that I couldn't see every single person who enters the stream so I thought it could be nice if script can annonce in chat who entered the stream with a warm welcome message.

目前为 2015-08-22 提交的版本,查看 最新版本

// ==UserScript==
// @name        Fic's Mixify Auto Welcome Script
// @namespace   Booth
// @include     http://www.mixify.com/*/live/*
// @version     1.3
// @grant       none
// @description This script can be used on Mixify.com while streaming your DJ set. The main reason why I created this script is that I couldn't see every single person who enters the stream so I thought it could be nice if script can annonce in chat who entered the stream with a warm welcome message.
// ==/UserScript==

var session = [];  /* List of all users that entered the stream */
var DJ = $("#marqueeTitle")[0].innerHTML.replace('</h1>', '').replace('<h1>', '').trim(); /*Currnt DJ name*/
var me = $("ul#userDropDown li:eq(2) a").text().trim();  /* Your name on Mixify */
var msgList = ["Welcome ", "Ez ", "Yo ", "Greetings ", "Sup ", "Hey ", "Hi ", "Whazzup ", "Hello"]; /* List of greetings */
var msg;

/* If you are on your own stream script is running */
if (me === DJ) {   

    var url = "http://www.mixify.com/room/spectators/cache/1/?";
    var dataString = $("#specatorsDockItem").attr("data-querystring");      /* Getting url to call AJAX */
    url = url + dataString;

    if (localStorage.getItem("active") === null) {  /* Was this stream refreshed? */
        localStorage.setItem("active", true);   /* You entered the stream for the first time */
        session.push(DJ);	/* Ignore DJ while sending welcome msg */
    } else {
        FillUsersAfterRefresh();    /* You refreshed the stream, ignore current guests in the room */
    }

    setInterval(   /* Calling AJAX  that is called my hovering mouse over attendees icon */
    function () {

        jQuery.ajaxSetup({ async: false });     /* Getting data via AJAX */
        var data = jQuery.get(url);
        var toObject = $(data.responseText);    /* Converting string to object */
        var users = $(toObject).find(".username");  /* Getting all guests on stream */

        for (i = 0; i < users.length; i++) {
            if (users[i].getAttribute("target") !== null && users[i].innerHTML != "Guest" && jQuery.inArray(users[i].innerHTML.trim(), session) === -1) { /* Ignore duplicates and guests */
                console.log("New guest is: " + users[i].innerHTML);
                msg = msgList[Math.floor(Math.random() * msgList.length)];  /* Set random msg from msgList */
                $("#chat_input").val(msg + users[i].innerHTML.trim() + "!");  /* Post welcome msg in chat */
                $('#chat_input').focus().trigger(jQuery.Event('keydown', { keyCode: 13 }));
                session.push(users[i].innerHTML.trim());  /* Mark user as the one that already visited the stream */
            }
        }
    }, 5000);  /* Check for new guests every 5 seconds (Change 5000 ms to any other value you want) */
}

function FillUsersAfterRefresh() {
    jQuery.ajaxSetup({ async: false });
    var data = jQuery.get(url);
    var toObject = $(data.responseText);
    var users = $(toObject).find(".username");
    for (i = 0; i < users.length; i++) {
        if (users[i].getAttribute("target") !== null && users[i].innerHTML != "Guest")
            session.push(users[i].innerHTML.trim());
    }
}