// ==UserScript== // @name 哔哩哔哩番剧出差助手 // @namespace bilibili_abroad_assistant // @version 1.1.1 // @description 为动态页面增加显示哔哩哔哩番剧出差动态功能 // @author 溶酶菌 // @match *://t.bilibili.com* // @match *://t.bilibili.com/* // @icon https://www.bilibili.com/favicon.ico // @grant none // @downloadURL none // ==/UserScript== (function () { 'use strict'; let loaded = false // 是否已加载 let showBtn = () => document.querySelector('#show-abroad') let hideBtn = () => document.querySelector('#hide-abroad') let refreshBtn = () => document.querySelector('#refresh-abroad') let backtop = () => document.querySelector("#app > div > div.home-page.f-clear > div.back-top").click() let centerPanel = () => document.querySelector("#app > div > div.home-page.f-clear > div.home-container > div > div.center-panel") let cardList = () => document.querySelector("#app > div > div.home-page.f-clear > div.home-container > div > div.center-panel > div.card-list") let left = () => document.querySelector("#app > div > div.home-page.f-clear > div.home-container > div > div.left-panel > div.adaptive-scroll > div.scroll-content") let dynamicsPanel = () => document.querySelector('#dynamics-panel') let loadMoreBtn = () => document.querySelector('#load-more-btn') let loadingTips = () => document.querySelector('#loading-tips') let offset = '' let dateFormat = (fmt, date) => { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) }; }; return fmt; } let loadData = function () { loadingTips().style.display = 'inline' loadMoreBtn().style.display = 'none' fetch(`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_dyn_personal?host_uid=11783021&offset=${offset}`, { method: 'GET', credentials: 'include' }).then(res => res.json()) .then(res => { offset = res.data.offset loadingTips().style.display = 'none' loadMoreBtn().style.display = 'inline' res.data.cards.forEach(card => { let face = card.desc.user_profile.info.face let uname = card.desc.user_profile.info.uname let action = card.display.usr_action_txt let timestamp = new Date(card.desc.timestamp * 1e3) // s -> ms let vCard = JSON.parse(card.card) let { pic, redirect_url, title } = vCard let { coin, danmaku, dislike, favorite, his_rank, like, now_rank, reply, share, view } = vCard.stat let itemDom = `
` let cardWrap = document.createElement('div') cardWrap.innerHTML = itemDom dynamicsPanel().append(cardWrap) }); }); } let start = () => { if (!centerPanel()) { return } let panel = document.createElement('div') panel.id = 'dynamics-panel' panel.style.display = 'none' panel.style.marginTop = '8px' centerPanel().append(panel) let loadMorePanel = document.createElement('div') loadMorePanel.style.display = 'none' loadMorePanel.style.marginBottom = '8px' loadMorePanel.innerHTML = `