您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Показывает знак зодиака и возраст в профайле на vk.com
/* vk_Zodiac - user script used to add zodiac sign and age into vk's profile page. Created: 07.02.2011 Last Changed: 04.12.2020 This script is rebuilding of a 'IMDBAge v2.5' by Thomas Stewart. */ // ==UserScript== // @name vk_Zodiac // @namespace https://vk.com/drumtheatre // @description Показывает знак зодиака и возраст в профайле на vk.com // @author DRUMtheatre // @version 0.6.4 // @include http://vk.com/* // @include https://vk.com/* // @license CC BY-NC-SA 4.0 International. https://creativecommons.org/licenses/by-nc-sa/4.0/ // ==/UserScript== var born = new Date(); /* calculates tropical zodiac sign input: month and day output: tropical zodiac sign with label as string */ function zodiac(day, month) { var sign; // link the month and day to the sign if (day >= 21 && month == 3 || day <= 19 && month == 4) sign = "Овен ♈"; else if (day >= 20 && month == 4 || day <= 20 && month == 5) sign = "Телец ♉"; else if (day >= 21 && month == 5 || day <= 20 && month == 6) sign = "Близнецы ♊"; else if (day >= 21 && month == 6 || day <= 22 && month == 7) sign = "Рак ♋"; else if (day >= 23 && month == 7 || day <= 22 && month == 8) sign = "Лев ♌"; else if (day >= 23 && month == 8 || day <= 22 && month == 9) sign = "Дева ♍"; else if (day >= 23 && month == 9 || day <= 22 && month == 10) sign = "Весы ♎"; else if (day >= 23 && month == 10 || day <= 21 && month == 11) sign = "Скорпион ♏"; else if (day >= 22 && month == 11 || day <= 21 && month == 12) sign = "Стрелец ♐"; else if (day >= 22 && month == 12 || day <= 19 && month == 1) sign = "Козерог ♑"; else if (day >= 20 && month == 1 || day <= 18 && month == 2) sign = "Водолей ♒"; else if (day >= 19 && month == 2 || day <= 20 && month == 3) sign = "Рыбы ♓"; // return text with label return sign; } /* add sign to page input: date person is born */ function addSign() { // find place to stick the info var links = document.evaluate("//a[contains(@href,'[bday]')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // loop over all dates var link = links.snapshotItem(0); // create a containers var addon1 = document.createElement("span"); addon1.style.color = "#808080"; addon1.setAttribute("id", "zodiac"); var addon2 = document.createElement("span"); addon2.setAttribute("id", "zodiac"); // determination colors of signs var $ = zodiac(born.getDate(), born.getMonth() + 1); if ($ == "Овен ♈" || $ == "Лев ♌" || $ == "Стрелец ♐") addon2.style.color = "#FF6347"; else if ($ == "Телец ♉" || $ == "Дева ♍" || $ == "Козерог ♑") addon2.style.color = "#1D1D1D"; else if ($ == "Близнецы ♊" || $ == "Весы ♎" || $ == "Водолей ♒") addon2.style.color = "#9D9396"; else addon2.style.color = "#6495ED"; // fill a containers addon1.innerHTML = " | "; addon2.innerHTML = $; // attach them link.parentNode.insertBefore(addon1, link.previousSibling); link.parentNode.insertBefore(addon2, link.previousSibling); } /* add age of person to page input: date person is born */ function addAge() { // find the difference between two times var age = new Date() - born.getTime(); // convert difference into years age = age / (1000 * 60 * 60 * 24 * 365.242199); // get nice values var years = Math.floor(age); var months = Math.floor((age - years) * 10); // try to determine 'word' var word; var dozens = Math.floor(years / 10); var delta = years - 10 * dozens; if ((years < 1) || ((years > 1) && (years < 5))) word = " года"; else if (((years > 21) && ((delta > 1) && (delta < 5))) || ((delta == 1) && (months != 0))) word = " года"; else if (((delta == 1) && (months == 0)) && ((years != 11) && (years != 111))) word = " год"; else word = " лет"; // don't show 0 month if (months > 0) months = "," + months; else months = ""; // loop over the tag involving dates var links = document.evaluate("//a[contains(@href,'[bday]')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // loop over all dates var link = links.snapshotItem(0); // create a container var addon3 = document.createElement("span"); addon3.setAttribute("style", "margin-left: 4px;"); addon3.setAttribute("id", "zodiac"); // fill a container addon3.innerHTML = " " + years + months + word; // attach it link.parentNode.insertBefore(addon3, link.previousSibling); } // get year from profile page function getYear() { // loop over the tag involving dates var y_links = document.evaluate("//a[contains(@href,'[byear]')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // loop over all dates for (var i = 0; i < y_links.snapshotLength; i++) { var y_link = y_links.snapshotItem(i); var y_href = y_link.getAttribute("href"); // extract a year if (y_href.indexOf('[byear]') != -1) { // extract actual data born.setFullYear(y_href.match(/\d{1,4}/g)); addAge(); } } } // get dates from profile page function getDates() { // loop over the tag involving dates var d_links = document.evaluate("//a[contains(@href,'[bday]')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // loop over all dates for (var i = 0; i < d_links.snapshotLength; i++) { var d_link = d_links.snapshotItem(i); var d_href = d_link.getAttribute("href"); // extract date and month if (d_href.indexOf('[bday]') != -1) { // extract actual data born.setMonth(parseFloat((d_href.match(/\d{1,2}/g)[1]) - 1)); born.setDate(d_href.match(/\d{1,2}/g)[0]); addSign(); } } getYear(); } getDates(); // checking for the existence function checkExist() { var z = document.getElementById("zodiac"); if (!z) getDates(); } // AJAX rebuilding function function rebuild() { var watch = document.getElementById("page_layout"); if (watch !== null) { watch.addEventListener("DOMNodeInserted", function(e) { if (e.target.className == "profile_info" || e.target.id == "wrap2") checkExist();}, false); } } rebuild();