Greasy Fork is available in English.
拉取雪球新闻
当前为
// ==UserScript==
// @name 雪球7*24新闻
// @namespace http://iimondo.xueqiu.net/
// @version 0.1
// @description 拉取雪球新闻
// @author iimondo
// @match https://*/*
// @icon https://xqdoc.imedao.com/17aebcfb84a145d33fc18679.ico
// @require https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js
// @resource css https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.css
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @grant GM_addStyle
// @grant GM_getResourceText
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// 加载外部css资源
GM_addStyle(GM_getResourceText("css"));
const notyf = new Notyf({
duration: 1000 * 30,
position: {
x: 'right',
y: 'top'
},
types: [
{
type: 'info',
background: '#3dc763',
icon: false
}
]
});
let unread_news = GM_getValue("localNews");
if(unread_news != undefined || unread_news != null){
unread_news = JSON.parse(unread_news);
read(unread_news);
console.log(unread_news);
} else {
GM_xmlhttpRequest({
method: "get",
url: 'https://xueqiu.com/statuses/livenews/list.json?since_id=-1&max_id=-1&count=10',
headers: {
"Content-Type": "application/json"
},
onload: function(r) {
console.log(r);
GM_setValue("localNews",JSON.stringify(JSON.parse(r.response).items)); // .reverse()
// var intervalID = setInterval(myCallback, 500, 'Parameter 1', 'Parameter 2');
}
});
}
function notyfNews(news, index){
if(index == 0){
GM_deleteValue("localNews");
} else {
unread_news = unread_news.splice(index);
GM_setValue("localNews", JSON.stringify(unread_news));
}
notyf.open({
type: 'info',
message: `<span style="cursor: pointer;">${news.created_at} · ${news.title}</span>`,
dismissible: true,
icon: false
}).on('click', ({target, event}) => window.open(news.target));
}
function read(items){
items.map(item => {
let title = item.text.substring(item.text.indexOf("【") + 1, item.text.indexOf("】"));
title = title !== "" ? title : item.text;
return {
"target": item.target,
"created_at": new Date(item.created_at).toTimeString().substr(0, 5),
"title": title,
"origin": item.text
}
}).forEach((item, index) => {
setTimeout(() => notyfNews(item, index), index * notyf.options.duration)
});
}
document.addEventListener("visibilitychange",function(){
if(document.visibilityState == "visible"){
console.log("进入前台");
}
if(document.visibilityState == "hidden"){
console.log("切换到后台")
}
});
})();