您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Display registration date, last profile edit and last seen in VK user profile
当前为
// ==UserScript== // @name Display additional information in VK profile // @name:ru Отображение доп. информации на странице ВКонтакте // @namespace https://greasyfork.org/ru/users/155145-inlifeuser // @version 2019.01.24 // @description Display registration date, last profile edit and last seen in VK user profile // @description:ru Отображение даты регистрации, последнего редактирования страницы и последний заход на странице пользователя ВКонтакте // @author Inlifeuser // @license MIT // @include *://vk.com/* // @exclude *://vk.com/notifier.php* // @exclude *://vk.com/*widget*.php* // @run-at document-end // ==/UserScript== 'use strict'; function addLeadingZeroToDate (date) { return ('0' + date).slice(-2); } function convert24HoursTo12Hours (hours) { hours = hours % 12; return hours ? hours : 12; } function convert24HoursToAmPmLc (hours) { return hours >= 12 ? 'pm' : 'am'; } (function () { new MutationObserver(function () { var vkUserProfile = document.body.querySelector('#profile_short:not(.display_additional_information_in_vk_profile)'); if (!vkUserProfile) return; var vkAbuseButton = document.body.querySelector('a.page_actions_item[onclick*="abuse"]'); var vkUserId; if (vkAbuseButton) { vkUserId = (vkAbuseButton.getAttribute('onclick').match(/oid: (\d+)/i) || [])[1]; } else { var vkUserWall = document.body.querySelector('a.ui_tab_sel[href*="/wall"]'); if (!vkUserWall) return; vkUserId = (vkUserWall.href.match(/wall(\d+)/i) || [])[1]; } if (!vkUserId) return; vkUserProfile.className += ' display_additional_information_in_vk_profile'; var vkPageLang = document.body.querySelector('a.ui_actions_menu_item[onclick*="lang_dialog"]'); var vkCurrentLang; if (vkPageLang) { vkCurrentLang = vkPageLang.textContent; } else { vkCurrentLang = navigator.language.substring(0, 2); } var vkLang, vkRegMonthName; if (vkCurrentLang === 'Language: english' || vkCurrentLang === 'en') { vkLang = 'en'; vkRegMonthName = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; } else if (vkCurrentLang === 'Язык: русский' || vkCurrentLang === 'ru') { vkLang = 'ru'; vkRegMonthName = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']; } var i = 0; while (i < 3) { var vkUserProfileElement = document.createElement('div'); vkUserProfileElement.style.display = 'none'; vkUserProfile.insertBefore(vkUserProfileElement, vkUserProfile.firstChild); i++; } var requestVkFoaf = new XMLHttpRequest(); requestVkFoaf.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { var vkFoafRegDate = (this.responseText.match(/ya:created dc:date="(.+)"/i) || [])[1]; var vkFoafLastProfileEditDate = (this.responseText.match(/ya:modified dc:date="(.+)"/i) || [])[1]; var vkFoafLastSeenDate = (this.responseText.match(/ya:lastLoggedIn dc:date="(.+)"/i) || [])[1]; if (vkFoafRegDate) { var vkRegDate = new Date(vkFoafRegDate); var vkRegDateElement = document.createElement('div'); vkRegDateElement.className = 'clear_fix profile_info_row'; if (vkLang === 'en') { vkRegDateElement.innerHTML = '<div class="label fl_l">Registration date:</div><div class="labeled">' + vkRegMonthName[vkRegDate.getMonth()] + ' ' + vkRegDate.getDate() + ', ' + vkRegDate.getFullYear() + ' at ' + convert24HoursTo12Hours(vkRegDate.getHours()) + ':' + addLeadingZeroToDate(vkRegDate.getMinutes()) + ':' + addLeadingZeroToDate(vkRegDate.getSeconds()) + ' ' + convert24HoursToAmPmLc(vkRegDate.getHours()) + '</div>'; } else if (vkLang === 'ru') { vkRegDateElement.innerHTML = '<div class="label fl_l">Дата регистрации:</div><div class="labeled">' + vkRegDate.getDate() + ' ' + vkRegMonthName[vkRegDate.getMonth()] + ' ' + vkRegDate.getFullYear() + ' г. ' + vkRegDate.getHours() + ':' + addLeadingZeroToDate(vkRegDate.getMinutes()) + ':' + addLeadingZeroToDate(vkRegDate.getSeconds()) + '</div>'; } else { vkRegDateElement.innerHTML = '<div class="label fl_l">Registration date:</div><div class="labeled">' + addLeadingZeroToDate(vkRegDate.getDate()) + '.' + addLeadingZeroToDate(vkRegDate.getMonth() + 1) + '.' + vkRegDate.getFullYear() + ' ' + addLeadingZeroToDate(vkRegDate.getHours()) + ':' + addLeadingZeroToDate(vkRegDate.getMinutes()) + ':' + addLeadingZeroToDate(vkRegDate.getSeconds()) + '</div>'; } vkUserProfile.replaceChild(vkRegDateElement, vkUserProfile.childNodes[0]); } else { console.info('Registration date on VK FOAF profile is empty or unavailable'); } if (vkFoafLastProfileEditDate) { var vkLastProfileEditDate = new Date(vkFoafLastProfileEditDate); var vkLastProfileEditDateElement = document.createElement('div'); vkLastProfileEditDateElement.className = 'clear_fix profile_info_row'; if (vkLang === 'en') { vkLastProfileEditDateElement.innerHTML = '<div class="label fl_l">Last profile edit:</div><div class="labeled">' + vkRegMonthName[vkLastProfileEditDate.getMonth()] + ' ' + vkLastProfileEditDate.getDate() + ', ' + vkLastProfileEditDate.getFullYear() + ' at ' + convert24HoursTo12Hours(vkLastProfileEditDate.getHours()) + ':' + addLeadingZeroToDate(vkLastProfileEditDate.getMinutes()) + ':' + addLeadingZeroToDate(vkLastProfileEditDate.getSeconds()) + ' ' + convert24HoursToAmPmLc(vkLastProfileEditDate.getHours()) + '</div>'; } else if (vkLang === 'ru') { vkLastProfileEditDateElement.innerHTML = '<div class="label fl_l">Посл. ред. стр.:</div><div class="labeled">' + vkLastProfileEditDate.getDate() + ' ' + vkRegMonthName[vkLastProfileEditDate.getMonth()] + ' ' + vkLastProfileEditDate.getFullYear() + ' г. ' + vkLastProfileEditDate.getHours() + ':' + addLeadingZeroToDate(vkLastProfileEditDate.getMinutes()) + ':' + addLeadingZeroToDate(vkLastProfileEditDate.getSeconds()) + '</div>'; } else { vkLastProfileEditDateElement.innerHTML = '<div class="label fl_l">Last profile edit:</div><div class="labeled">' + addLeadingZeroToDate(vkLastProfileEditDate.getDate()) + '.' + addLeadingZeroToDate(vkLastProfileEditDate.getMonth() + 1) + '.' + vkLastProfileEditDate.getFullYear() + ' ' + addLeadingZeroToDate(vkLastProfileEditDate.getHours()) + ':' + addLeadingZeroToDate(vkLastProfileEditDate.getMinutes()) + ':' + addLeadingZeroToDate(vkLastProfileEditDate.getSeconds()) + '</div>'; } vkUserProfile.replaceChild(vkLastProfileEditDateElement, vkUserProfile.childNodes[1]); } else { console.info('Last profile editing date on VK FOAF profile is empty or unavailable'); } if (vkFoafLastSeenDate) { var vkLastSeenDate = new Date(vkFoafLastSeenDate); var vkLastSeenDateElement = document.createElement('div'); vkLastSeenDateElement.className = 'clear_fix profile_info_row'; if (vkLang === 'en') { vkLastSeenDateElement.innerHTML = '<div class="label fl_l">Last seen:</div><div class="labeled">' + vkRegMonthName[vkLastSeenDate.getMonth()] + ' ' + vkLastSeenDate.getDate() + ', ' + vkLastSeenDate.getFullYear() + ' at ' + convert24HoursTo12Hours(vkLastSeenDate.getHours()) + ':' + addLeadingZeroToDate(vkLastSeenDate.getMinutes()) + ':' + addLeadingZeroToDate(vkLastSeenDate.getSeconds()) + ' ' + convert24HoursToAmPmLc(vkLastSeenDate.getHours()) + '</div>'; } else if (vkLang === 'ru') { vkLastSeenDateElement.innerHTML = '<div class="label fl_l">Последний заход:</div><div class="labeled">' + vkLastSeenDate.getDate() + ' ' + vkRegMonthName[vkLastSeenDate.getMonth()] + ' ' + vkLastSeenDate.getFullYear() + ' г. ' + vkLastSeenDate.getHours() + ':' + addLeadingZeroToDate(vkLastSeenDate.getMinutes()) + ':' + addLeadingZeroToDate(vkLastSeenDate.getSeconds()) + '</div>'; } else { vkLastSeenDateElement.innerHTML = '<div class="label fl_l">Last seen:</div><div class="labeled">' + addLeadingZeroToDate(vkLastSeenDate.getDate()) + '.' + addLeadingZeroToDate(vkLastSeenDate.getMonth() + 1) + '.' + vkLastSeenDate.getFullYear() + ' ' + addLeadingZeroToDate(vkLastSeenDate.getHours()) + ':' + addLeadingZeroToDate(vkLastSeenDate.getMinutes()) + ':' + addLeadingZeroToDate(vkLastSeenDate.getSeconds()) + '</div>'; } vkUserProfile.replaceChild(vkLastSeenDateElement, vkUserProfile.childNodes[2]); } else { console.info('Last seen date on VK FOAF profile is empty or unavailable'); } } else if (this.readyState === 4 && this.status !== 200) { console.error('Failed to get VK FOAF profile (registration date, last profile edit date and last seen date): ' + this.status + ' ' + this.statusText); } }; requestVkFoaf.open('GET', '/foaf.php?id=' + vkUserId, true); requestVkFoaf.send(); }).observe(document.body, { childList: true, subtree: true }); })();