// ==UserScript==
// @name GreasyFork优化工具,包含时区转换,时间格式化,一键复制代码,一键查看代码,论坛默认显示问答版块而不是脚本反馈等
// @namespace http://bbs.91wc.net/?timezone-timeformat
// @version 0.1.9
// @description 把greasyfork.org的时间格式化为精确到秒的时间格式,并转换为当地时区的时间,只对脚本列表页和脚本查看页面转换和格式化。增加一键复制代码功能和列表页一键查看代码链接。让greasyfork论坛默认显示问题讨论而不是脚本反馈,还原真正的论坛功能。
// @author Wilson
// @icon https://greasyfork.org/assets/blacklogo16-f649ec98e464d95b075234438da0fa13233b467b3cd1ad020f0ea07dea91d08c.png
// @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js
// @match *://greasyfork.org/*/scripts*
// @grant GM_setClipboard
// @license GPL License
// @downloadURL https://update.greasyfork.icu/scripts/412956/GreasyFork%E4%BC%98%E5%8C%96%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8C%85%E5%90%AB%E6%97%B6%E5%8C%BA%E8%BD%AC%E6%8D%A2%EF%BC%8C%E6%97%B6%E9%97%B4%E6%A0%BC%E5%BC%8F%E5%8C%96%EF%BC%8C%E4%B8%80%E9%94%AE%E5%A4%8D%E5%88%B6%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%B8%80%E9%94%AE%E6%9F%A5%E7%9C%8B%E4%BB%A3%E7%A0%81%EF%BC%8C%E8%AE%BA%E5%9D%9B%E9%BB%98%E8%AE%A4%E6%98%BE%E7%A4%BA%E9%97%AE%E7%AD%94%E7%89%88%E5%9D%97%E8%80%8C%E4%B8%8D%E6%98%AF%E8%84%9A%E6%9C%AC%E5%8F%8D%E9%A6%88%E7%AD%89.user.js
// @updateURL https://update.greasyfork.icu/scripts/412956/GreasyFork%E4%BC%98%E5%8C%96%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8C%85%E5%90%AB%E6%97%B6%E5%8C%BA%E8%BD%AC%E6%8D%A2%EF%BC%8C%E6%97%B6%E9%97%B4%E6%A0%BC%E5%BC%8F%E5%8C%96%EF%BC%8C%E4%B8%80%E9%94%AE%E5%A4%8D%E5%88%B6%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%B8%80%E9%94%AE%E6%9F%A5%E7%9C%8B%E4%BB%A3%E7%A0%81%EF%BC%8C%E8%AE%BA%E5%9D%9B%E9%BB%98%E8%AE%A4%E6%98%BE%E7%A4%BA%E9%97%AE%E7%AD%94%E7%89%88%E5%9D%97%E8%80%8C%E4%B8%8D%E6%98%AF%E8%84%9A%E6%9C%AC%E5%8F%8D%E9%A6%88%E7%AD%89.meta.js
// ==/UserScript==
(function() {
'use strict';
setTimeout(function(){
//获取时区,比如-8
var timezone = new Date().getTimezoneOffset()/60;
//格式化时间戳
var formatTimestamp = function(timestamp) {
var date = new Date(timestamp);
var YY = date.getFullYear() + '-';
var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
return YY + MM + DD +" "+hh + mm + ss;
}
//格式化时间及转换时区
$("time").each(function(){
var me = $(this);
if(!me.attr("formated")){
var medate = me.attr("datetime").replace("T", " ").replace("+00:00", "").replace(/-/g, "/");
medate = new Date(medate);
medate = medate.setHours(medate.getHours()-timezone);
medate = formatTimestamp(medate);
me.html(medate);
me.attr("formated", 1);
}
});
//一键复制代码
if(location.href.indexOf("/code")!==-1 && $("#_w_copy_code").length===0 && $("#install-area").length > 0){
$("#install-area").append('复制代码');
$("#_w_copy_code").click(function(){
GM_setClipboard($(".prettyprint")[0].innerText);
var me = $(this);
me.html("已复制到剪贴板");
setTimeout(function(){
me.html("复制代码");
}, 1000);
});
}
//给列表添加查看代码
setTimeout(function(){
$("article h2 a:first-child").each(function(){
var me = $(this);
if(!me.attr("data-codea")){
var mehref=me.attr("href");
//兼容newscript+
var queryString = location.search.indexOf("fr=newscript") !== -1 ? "?fr=newscript" : "";
me.attr("data-codea", 1).after('查看代码');
}
});
});
//让greasyfork论坛默认显示问题讨论而不是脚本反馈,还原真正的论坛功能
var exlude1 = document.querySelector(".sidebar .list-option-groups > div:nth-child(3) > ul > li:nth-child(1) a");
if(exlude1 && exlude1.getAttribute && !exlude1.getAttribute("data-exclude")) exlude1.setAttribute("data-exclude", 1);
var links = document.getElementsByTagName("a");
for(var i in links){
var link = links[i];
if(typeof link ==="object" && link.href && /(\/discussions)\/?$|\/discussions\?/i.test(link.href) && link.href.toLowerCase().indexOf("/no-scripts")===-1){
if(link.getAttribute("data-exclude")==1) continue;
if(link.href.toLowerCase().indexOf("/discussions?")!==-1){
link.href=link.href.replace("/discussions?", "/discussions/no-scripts?");
}else {
link.href=link.href+"/no-scripts";
}
}
}
});
})();