NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Ranking_Points_BP
// @namespace Bigpetroman
// @description Script para ayudar en el manejo del ranking mensual de NeoPuntos de bigpetroman
// @author Bigpetroman
// @include https://www.neobux.com/forum/?/1/229290/*
// @license MIT
// @version 1.1
// ==/UserScript==
//Con esta línea, estamos declarando una función llamada trim() en la clase String, esto es para eliminar
//los espacios al inicio y final de cada linea
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
//var bottom_pix para determinar la posición de los botones,
var bottom_pix = window.innerHeight/2;
var bottom_pix_2 = window.innerHeight/2;
//esta variable la colocamos en 2 si la resolucion horizontal de la ventana es menor a 1205
var TipoBoton = 1;
// common button style, estas variables permiten determinar la forma, color, tamaño, etc, de los botones
var css_button_General = 'cursor:pointer;width:140px; height:32px; -moz-border-radius:20px; -webkit-border-radius:20px; color:#fff; line-height:32px; text-align:center; position:fixed;right:3px;';
// common button style; para los botones pequeños cuando la pantalla tiene un ancho menor a 1204
var css_button_General_2 = 'cursor:pointer;width:56px; height:32px; -moz-border-radius:20px; color:#fff; line-height:32px; text-align:center; position:fixed;right:3px;';
//estas variables es para cambiar las palabras ayer y hoy por su fecha respectiva
var sFechaAyerIng = "Yesterday";
var sFechaHoyIng = "Today";
var sFechaHoyEsp = "Hoy";
var sFechaAyerEsp = "Ayer";
//estos son los datos a obtener de cada mensaje
var ebp_NumPost = 0;
var ebp_Nombre = "";
var ebp_Membrecia = "";
var ebp_Fecha = "";
var ebp_TipoUser = "";
var ebp_Contry = "";
var ebp_Neopuntos = 0;
var ebp_NPCanjeados = 0;
var ebp_TipoAct = 0;
var ebp_LinkPost = 0;
var mitexto = "";
//***********************************************************************************
//****esta función es para saber el tamaño de la ventana del navegador, si en la*****
//****misma, el tamaño horizontal es menor a 1204, crearemos los botones tipo 2 *****
//***********************************************************************************
function TamVentana() {
var Tamanyo = [0, 0];
if (typeof window.innerWidth != 'undefined')
{
Tamanyo = [
window.innerWidth,
window.innerHeight
];
}
else if (typeof document.documentElement != 'undefined'
&& typeof document.documentElement.clientWidth !=
'undefined' && document.documentElement.clientWidth != 0)
{
Tamanyo = [
document.documentElement.clientWidth,
document.documentElement.clientHeight
];
}
else {
Tamanyo = [
document.getElementsByTagName('body')[0].clientWidth,
document.getElementsByTagName('body')[0].clientHeight
];
}
return Tamanyo;
}
//***********************************************************************************
//**** Leemos la información de la página del tema *****
//***********************************************************************************
function EBP_Leer_Topic()
{
//tenemos la fecha del día
var neolfebp_Fecha = new Date();
var neolfFecha = new Date();
var milisegundos = parseInt(1*24*60*60*1000);
//Obtenemos la tabla de los mensajes
var EBP_TablaMs = document.documentElement.innerHTML;
var posicion1 = EBP_TablaMs.indexOf('document.write(f_ff');
var posicion2 = EBP_TablaMs.indexOf(',]))</script>');
EBP_TablaMs = EBP_TablaMs.substring(posicion1+21,posicion2);
//obtenemos cada uno de los mensajes
var EBP_Mensajes = EBP_TablaMs.split("],[");
var EBP_SubMensaje = "";
var EBP_SubMensaje_Indiv = "";
for(var i=0; i<EBP_Mensajes.length; i++)
{
EBP_SubMensaje = EBP_Mensajes[i].split("','");
for(var j=0; j<EBP_SubMensaje.length; j++)
{
EBP_SubMensaje_Indiv = EBP_SubMensaje[j].split(",");
switch(j)
{
case 0: //obtenemos el link y el usuario
ebp_LinkPost = EBP_SubMensaje_Indiv[1];
ebp_Nombre = EBP_SubMensaje_Indiv[2];
ebp_Nombre = ebp_Nombre.replace(/'/g, '');
break;
case 1: //obtenemos el país
ebp_Contry = EBP_SubMensaje_Indiv[2];
ebp_Contry = ebp_Contry.replace(/'/g, '');
break;
case 2: //obtenemos la membresia y la fecha
switch(EBP_SubMensaje_Indiv.length)
{
case 11: //no tiene membresia o tiene una sola
ebp_Membrecia = EBP_SubMensaje_Indiv[2];
ebp_Membrecia = ebp_Membrecia.replace(/'/g, '');
ebp_Fecha = EBP_SubMensaje_Indiv[4];
ebp_Fecha = ebp_Fecha.replace(/'/g, '');
break;
case 12: //tiene 2 membresias, golden y cualquier otro paquete
ebp_Membrecia = EBP_SubMensaje_Indiv[2] + ',' + EBP_SubMensaje_Indiv[3];
ebp_Membrecia = ebp_Membrecia.replace(/'/g, '');
ebp_Fecha = EBP_SubMensaje_Indiv[5];
ebp_Fecha = ebp_Fecha.replace(/'/g, '');
break;
case 13: //tiene 3 membresias, golden y cualquier otro paquete y pionner
ebp_Membrecia = EBP_SubMensaje_Indiv[2] + ',' + EBP_SubMensaje_Indiv[3] + ',' + EBP_SubMensaje_Indiv[4];
ebp_Membrecia = ebp_Membrecia.replace(/'/g, '');
ebp_Fecha = EBP_SubMensaje_Indiv[6];
ebp_Fecha = ebp_Fecha.replace(/'/g, '');
break;
case 14: //tiene 4 membresias, golden y cualquier otro paquete y pionner y moderador
ebp_Membrecia = EBP_SubMensaje_Indiv[2] + ',' + EBP_SubMensaje_Indiv[3] + ',' + EBP_SubMensaje_Indiv[4] + ',' + EBP_SubMensaje_Indiv[5];
ebp_Membrecia = ebp_Membrecia.replace(/'/g, '');
ebp_Fecha = EBP_SubMensaje_Indiv[7];
ebp_Fecha = ebp_Fecha.replace(/'/g, '');
break;
case 15: //tiene 5 membresias, golden y cualquier otro paquete y pionner y moderador y admin
ebp_Membrecia = EBP_SubMensaje_Indiv[2] + ',' + EBP_SubMensaje_Indiv[3] + ',' + EBP_SubMensaje_Indiv[4] + ',' + EBP_SubMensaje_Indiv[5] + ',' + EBP_SubMensaje_Indiv[6];
ebp_Membrecia = ebp_Membrecia.replace(/'/g, '');
ebp_Fecha = EBP_SubMensaje_Indiv[8];
ebp_Fecha = ebp_Fecha.replace(/'/g, '');
break;
default:
ebp_Membrecia = EBP_SubMensaje_Indiv[2];
ebp_Membrecia = ebp_Membrecia.replace(/'/g, '');
ebp_Fecha = EBP_SubMensaje_Indiv[4];
ebp_Fecha = ebp_Fecha.replace(/'/g, '');
break;
}
if(ebp_Fecha.indexOf(sFechaAyerIng) != -1)
{
//obtenemos el valor en milisegundos de la fecha actual.
var tiempo = neolfebp_Fecha.getTime();
//Ajustamos la fecha Tempo al día
var total = neolfFecha.setTime(tiempo);
//restamos un día a la fecha
var total = neolfFecha.setTime(parseInt(tiempo - milisegundos));
if(neolfFecha.getDate() < 10)
{
var sTextDia = "0" + neolfFecha.getDate();
}else{
var sTextDia = neolfFecha.getDate();
}
if(neolfFecha.getMonth() < 9)
{
var sTextMes = "0" + (neolfFecha.getMonth() + 1);
}else{
var sTextMes = (neolfFecha.getMonth() + 1);
}
var sTextFecha = neolfFecha.getFullYear() + '/' + sTextMes + '/' + sTextDia;
ebp_Fecha = ebp_Fecha.replace(sFechaAyerIng, sTextFecha);
}else{
if(ebp_Fecha.indexOf(sFechaHoyIng) != -1)
{
//obtenemos el valor en milisegundos de la fecha actual.
var tiempo = neolfebp_Fecha.getTime();
//Ajustamos la fecha Tempo al día
var total = neolfFecha.setTime(tiempo);
if(neolfFecha.getDate() < 10)
{
var sTextDia = "0" + neolfFecha.getDate();
}else{
var sTextDia = neolfFecha.getDate();
}
if(neolfFecha.getMonth() < 9)
{
var sTextMes = "0" + (neolfFecha.getMonth() + 1);
}else{
var sTextMes = (neolfFecha.getMonth() + 1);
}
var sTextFecha = neolfFecha.getFullYear() + '/' + sTextMes + '/' + sTextDia;
ebp_Fecha = ebp_Fecha.replace(sFechaHoyIng, sTextFecha);
}else{
if(ebp_Fecha.indexOf(sFechaHoyEsp) != -1)
{
//obtenemos el valor en milisegundos de la fecha actual.
var tiempo = neolfebp_Fecha.getTime();
//Ajustamos la fecha Tempo al día
var total = neolfFecha.setTime(tiempo);
if(neolfFecha.getDate() < 10)
{
var sTextDia = "0" + neolfFecha.getDate();
}else{
var sTextDia = neolfFecha.getDate();
}
if(neolfFecha.getMonth() < 9)
{
var sTextMes = "0" + (neolfFecha.getMonth() + 1);
}else{
var sTextMes = (neolfFecha.getMonth() + 1);
}
var sTextFecha = neolfFecha.getFullYear() + '/' + sTextMes + '/' + sTextDia;
ebp_Fecha = ebp_Fecha.replace(sFechaHoyEsp, sTextFecha);
}else{
if(ebp_Fecha.indexOf(sFechaAyerEsp) != -1)
{
//obtenemos el valor en milisegundos de la fecha actual.
var tiempo = neolfebp_Fecha.getTime();
//Ajustamos la fecha Tempo al día
var total = neolfFecha.setTime(tiempo);
//restamos un día a la fecha
var total = neolfFecha.setTime(parseInt(tiempo - milisegundos));
if(neolfFecha.getDate() < 10)
{
var sTextDia = "0" + neolfFecha.getDate();
}else{
var sTextDia = neolfFecha.getDate();
}
if(neolfFecha.getMonth() < 9)
{
var sTextMes = "0" + (neolfFecha.getMonth() + 1);
}else{
var sTextMes = (neolfFecha.getMonth() + 1);
}
var sTextFecha = neolfFecha.getFullYear() + '/' + sTextMes + '/' + sTextDia;
ebp_Fecha = ebp_Fecha.replace(sFechaAyerEsp, sTextFecha);
}
}
}
}
ebp_Fecha = ebp_Fecha.replace('a las ', '');
//ebp_Fecha = ebp_Fecha.substring(0,10);
break;
case 6: //obtenemos el número del post y los datos reportados por los usuarios
//obtenemos los neopuntos, si los neopuntos son "0", es una actualización tipo 2 o 3, si los
//neopunots son diferentes a 0, es una actualización tipo 1
ebp_Neopuntos = EBP_SubMensaje_Indiv[EBP_SubMensaje_Indiv.length-1];
ebp_Neopuntos = ebp_Neopuntos.replace(/'/g, '');
ebp_Neopuntos = ebp_Neopuntos.replace(/]/g, '');
if(ebp_Neopuntos != 0)
{
ebp_TipoAct = 1;
}else{
ebp_TipoAct = 3;
}
ebp_NumPost = EBP_SubMensaje_Indiv[EBP_SubMensaje_Indiv.length-2];
var ebp_TextMensaje = "";
for(var h=0; h<EBP_SubMensaje_Indiv.length-2; h++)
{
ebp_TextMensaje = ebp_TextMensaje + EBP_SubMensaje_Indiv[h] + ", ";
}
EBP_Obtiene_Datos(ebp_TextMensaje);
break;
default:
break;
}
}
}
//obtenemos el campo de los datos y le pasamos los mismos
var ebpTextAreaDatos = document.getElementById('neoleeforum_export_field');
ebpTextAreaDatos.innerHTML = mitexto;
mitexto = "";
var el = document.getElementById('neoleeforum_options_window'); //se define la variable "el" igual a nuestro div
el.style.display = (el.style.display == 'none') ? 'block' : 'none'; //damos un atributo display, que oculta o muestra el div
var ebpdivDatos = document.getElementById('neoleeforum_export_window'); //se define la variable "ebpdivDatos" igual a nuestro div interno
ebpdivDatos.style.display = (ebpdivDatos.style.display == 'none') ? 'block' : 'none'; //damos un atributo display, que oculta o muestra el div
}
function EBP_Obtiene_Datos(MyTexto)
{
ebp_NPCanjeados = 0;
var sTextTempo = "";
var sTextLinea = "";
var ebp_NeopuntosTemp = "";
//estas variables es para determinar si ya se obtuvo el valor de un campo
var b_ebp_Neopuntos = false;
var b_ebp_NPCanjeados = false;
//Revisamos cuantos quote hay en el texto, para así eliminarlos y quedarnos
//solamente con el texto real
var fraseQueBuscar = '<fieldset class=';
var MyTextDivide = MyTexto.split(fraseQueBuscar);
var total = MyTextDivide.length;
total = total-1;
if (total != -1)
{
for(var i=0; i<total; i++)
{
MyTexto = EBP_Limpia_Texto(MyTexto)
}
}
MyTextDivide = MyTexto.split('<br>');
if(ebp_TipoAct == 1)
{
b_ebp_Neopuntos = true;
}
for(var i=0; i<MyTextDivide.length; i++)
{
//buscamos los datos que faltan:
sTextLinea = MyTextDivide[i];
//eliminamos los espacios al inicio y final de la línea
sTextLinea = sTextLinea.trim();
sTextLinea = sTextLinea.toLowerCase();
if((sTextLinea.indexOf('neopoints canjeados:') == 0 || sTextLinea.indexOf('points canjeados:') == 0) && (b_ebp_NPCanjeados == false))
{
//reemplazamos todos los caracteres y dejamos solamente los números
sTextTempo = sTextLinea.replace(/[^0-9]+/g, '');
sTextTempo = sTextTempo.trim();
ebp_NPCanjeados = sTextTempo;
b_ebp_NPCanjeados = true;
}else{
if((sTextLinea.indexOf('neopoints:') == 0 || sTextLinea.indexOf('points:') == 0) && (b_ebp_Neopuntos == false))
{
b_ebp_Neopuntos = true;
sTextTempo = "";
//reemplazamos todos los caracteres y dejamos solamente los números
sTextTempo = sTextLinea.replace(/[^0-9]+/g, '');
sTextTempo = sTextTempo.trim();
ebp_Neopuntos = sTextTempo;
ebp_TipoAct = 2;
}
}
}
mitexto = mitexto + ebp_NumPost + ";" + ebp_Nombre + ";" + ebp_Membrecia + ";" + ebp_Fecha + ";" + ebp_TipoAct + ";" + ebp_Contry + ";" + ebp_Neopuntos + ";" + ebp_NPCanjeados + ";" + ebp_LinkPost + "\n";
}
function EBP_Limpia_Texto(MyNewTexto)
{
//Eliminamos el texto que haya entre las 2 fraces que estamos buscando
var fraseBusca2 = '</fieldset>';
var Posicion_1 = MyNewTexto.lastIndexOf('<fieldset class=');
var posicion_2 = MyNewTexto.indexOf('</fieldset>',Posicion_1);
var TextTemporal = MyNewTexto.substring(0,Posicion_1) + " " + MyNewTexto.substring(posicion_2+11,MyNewTexto.length);
return TextTemporal;
}
//***********************************************************************************
//**** esta funcion agrega los botones en la página, el tamaño y forma de los *****
//**** botones va a depender si son el tipo 1 o tipo 2 (eso depende del tamaño *****
//**** horizontal de la pantalla, esto es para que los botones en resoluciones *****
//**** de 1024 se vean bien *****
//***********************************************************************************
function add_buttons()
{
//Creamos los Botones
var button_Leer_Topic = document.createElement('span');
var button_Espacio = 36;
var tmp_pix = 0;
var tmp_pix_Gen = 0;
var Tam = TamVentana();
//verificamos el tamaño de la pantalla
if(Tam[0] > 1204)
{
var css_button_common = css_button_General;
tmp_pix_Gen = bottom_pix;
}else{
var css_button_common = css_button_General_2;
TipoBoton = 2;
tmp_pix_Gen = bottom_pix_2;
}
var css_Leer_Topic = css_button_common
+ 'background-color:#A4A4A4;bottom:' + tmp_pix_Gen.toString() + 'px;';
var TextoSpan = "";
var SaltoLinea = document.createElement("br");
//dependiendo del tipo de boton, colocaremos el texto en los botones
if(TipoBoton == 1)
{
TextoSpan = "Read Page";
var Text_Leer_Topic = document.createTextNode(TextoSpan);
button_Leer_Topic.appendChild(Text_Leer_Topic);
}else{
TextoSpan = "Read";
var Text_Leer_Topic = document.createTextNode(TextoSpan);
button_Leer_Topic.appendChild(Text_Leer_Topic);
}
button_Leer_Topic.style.cssText = css_Leer_Topic;
button_Leer_Topic.addEventListener('click', EBP_Leer_Topic, false);
document.body.appendChild(button_Leer_Topic);
//Creamos el Div para los datos
var d = document.createElement('div');
d.setAttribute('id','neoleeforum_options_window');
d.setAttribute('style','position: fixed; top: 100px; text-align: center; width: 100%; display: none;');
d.innerHTML = '<div style="width: 800px; height: 400px; margin: 0 auto; background: #FFF; border: 1px solid #333; padding: 10px; display: none;" id="neoleeforum_export_window"><table><tr><td><img src="http://c.nbx.bz/imagens/texto_32.png" width="26" border="0" /></td><td style="font-size: 14px; font-weight: bold; padding-left: 5px; font-family: Arial; text-align: left;" width="800">NeoLeeForum</td><td id="neoleeforum_export_close" style="font-size: 13px; font-weight: bold; padding-left: 5px; font-family: Arial; text-align: right; cursor: pointer;" width="190">Close</td></tr></table><textarea style="width: 790px; height: 365px;" id="neoleeforum_export_field" onMouseOver="this.select();" onMouseUp="this.select();" onMouseDown="this.select();"></textarea></style></div>';
// Lo insertas al final del body
document.body.appendChild(d);
//agregamos las funciones para cerrar (ocultar) el div
var neoleeforumcierra = document.getElementById("neoleeforum_export_close");
neoleeforumcierra.addEventListener('click', NeoLeeForum_Datos_Cerrar, false);
}
//***********************************************************************************
//****esta función oculta el div que contiene los datos a exportar *****
//***********************************************************************************
function NeoLeeForum_Datos_Cerrar()
{
var ebpdivDatos = document.getElementById('neoleeforum_options_window'); //se define la variable "el" igual a nuestro div
ebpdivDatos.style.display = (ebpdivDatos.style.display == 'none') ? 'block' : 'none'; //damos un atributo display:none que oculta el div
var el = document.getElementById('neoleeforum_export_window'); //se define la variable "el" igual a nuestro div
el.style.display = (el.style.display == 'none') ? 'block' : 'none'; //damos un atributo display:none que oculta el div
}
add_buttons();