スクリプトをインストールするには、Stylus のような拡張機能のインストールが必要です。
スクリプトをインストールするには、Stylus のような拡張機能のインストールが必要です。
スクリプトをインストールするには、Stylus のような拡張機能のインストールが必要です。
このスクリプトをインストールするには、ユーザースタイル管理ツールの拡張機能をインストール必要があります。
このスクリプトをインストールするには、ユーザースタイル管理ツールの拡張機能をインストール必要があります。
(ユーザースタイル管理ツールは設定済みなのでインストール!)
// ==UserScript==
// @name B站首页添加A-Soul分区
// @namespace https://space.bilibili.com/449968879
// @version 1.2
// @description B站首页看A-Soul
// @author mjtlyzbsy
// @match https://www.bilibili.com/
// @match https://www.bilibili.com/?spm_id_from=*
// @icon data:image/jpeg;base64,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
// @grant GM_addStyle
// @license MIT
// ==/UserScript==
;(function () {
'use strict'
GM_addStyle(`
#bili_asoul .popover-video-card {
display: none;
}
#bili_asoul a:hover+.popover-video-card {
display: block;
}
@media (max-width: 1099.9px)
#newbili_asoul {
grid-template-columns: repeat(4,1fr);
position: relative;
margin-bottom: 56px;
width: 100%;
display: grid;
grid-gap: 20px 12px;
}
.svg-icon {
margin-right: 6px;
overflow: hidden;
width: 36px;
height: 36px;
vertical-align: middle;
fill: currentColor;
}
img {
vertical-align: middle;
border-style: none;
}
.bili-rank-list-video .bili-rank-list-video__item--wrap {
display: -webkit-flex;
display: flex;
align-items: center;
justify-content: flex-start;
width: 100%;
height: 100%;
}
.bili-rank-list-video__grid>.bili-rank-list-video__list .rank-video-card {
padding-top: var(--rank-cover, 15px);
padding-bottom: var(--rank-cover, 15px);
}
.bili-rank-list-video .rank-video-card {
display: -webkit-flex;
display: flex;
align-items: center;
justify-content: flex-start;
align-items: stretch;
min-width: 0;
flex: 1;
padding: 15px 0;
width: 100%;
color: var(--text1);
}
.bili-rank-list-video a {
text-decoration: none;
color: inherit;
transition: color .2s linear;
}
.bili-rank-list-video .rank-video-card__info {
display: -webkit-flex;
display: flex;
align-items: flex-start;
justify-content: space-between;
flex-direction: column;
min-width: 0;
flex: 1;
}
`)
const TITLE = 'A-SOUL'
const KEY_WORDS = ['ASOUL', '向晚', '贝拉', '珈乐', '乃琳', '嘉然']
const CHANNEL_ID = 4429874
const ICON =
'data:image/png;base64,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'
const ICON_DARK =
'data:image/png;base64,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'
let currentPage = 1
let page = 0
let videoList = []
let knd
async function getDetail(bvid) {
let res = await fetch(
`https://api.bilibili.com/x/web-interface/view?bvid=${bvid}`,
)
return (await res.json()).data
}
function getBv(str) {
str = str.slice(31,43);
return str;
}
async function getNewVideo() {
let res = await fetch(
`https://api.bilibili.com/x/web-interface/search/type?context=&order=pubdate&keyword=${KEY_WORDS}&search_type=video&page=${currentPage++}`,
)
videoList = videoList.concat((await res.json()).data.result)
}
async function getHotVideo() {
let res = await fetch(
`https://api.bilibili.com/x/web-interface/web/channel/multiple/list?channel_id=${CHANNEL_ID}&sort_type=hot&offset=&page_size=10`,
)
return (await res.json()).data.list[0].items
}
function bigNumber(num) {
return num > 10000 ? `${(num / 10000).toFixed(2)}万` : num
}
function s2d(string) {
return new DOMParser().parseFromString(string, 'text/html').body
.childNodes[0]
}
async function refresh() {
page++
if (videoList.length < page * 10 + 10) {
await getNewVideo()
}
if(knd){
drawVideosNew()
} else {
drawVideos()
}
}
function timeFormat(time) {
let res = []
let [s = 0, m = 0, h = 0] = time.split(':').reverse()
res.unshift(String(s).padStart(2, '0'))
res.unshift(String(m % 60).padStart(2, '0'))
res.unshift(String(h % 60).padStart(2, '0'))
return res.join(':')
}
function drawVideos() {
const VIDEO_DOM = document.querySelector('#bili_asoul .zone-list-box')
VIDEO_DOM.innerHTML = ''
videoList.slice(page * 10, page * 10 + 10).forEach((item) => {
let title = item.title.replace(/<em class="keyword">(.*?)<\/em>/g, '$1')
let DOM = s2d(`
<div class="video-card-common">
<div class="card-pic card-pic-hover"><a href="//www.bilibili.com/video/${item.bvid}" target="_blank"><img src="${item.pic}" alt="">
<div class="count">
<div class="left"><span><i class="bilifont bili-icon_shipin_bofangshu"></i>${bigNumber(item.play)}</span>
<span><i class="bilifont bili-icon_shipin_dianzanshu"></i>${bigNumber(item.favorites)}</span>
</div>
<div class="right"><span>${timeFormat(item.duration)}</span></div>
</div><i class="crown"></i>
</a>
<div class="watch-later-video van-watchlater black">
<span class="wl-tips" style="display: none;"></span>
</div>
</div>
<a href="//www.bilibili.com/video/${item.bvid}" target="_blank" title="${title}" class="title">${title}</a><a href="//space.bilibili.com/${item.mid}/" target="_blank" class="up"><i class="bilifont bili-icon_xinxi_UPzhu"></i>${item.author}</a>
</div>
`)
VIDEO_DOM.append(DOM)
})
}
function drawVideosNew() {
const VIDEO_DOM = document.getElementById('newbili_asoul').getElementsByClassName('video-card-body')[0]
VIDEO_DOM.innerHTML = ''
videoList.slice(page * 10, page * 10 + 10).forEach((item) => {
let title = item.title.replace(/<em class="keyword">(.*?)<\/em>/g, '$1')
let DOM = s2d(`
<div class="bili-video-card" data-report="partition_recommend.content">
<div class="bili-video-card__skeleton hide">
<div class="bili-video-card__skeleton--cover"></div>
<div class="bili-video-card__skeleton--info">
<div class="bili-video-card__skeleton--face"></div>
<div class="bili-video-card__skeleton--right">
<p class="bili-video-card__skeleton--text"></p>
<p class="bili-video-card__skeleton--text short"></p>
<p class="bili-video-card__skeleton--light"></p>
</div>
</div>
</div>
<div class="bili-video-card__wrap __scale-wrap">
<a href="//www.bilibili.com/video/${item.bvid}" target="_blank" data-mod="partition_recommend" data-idx="content" data-ext="click">
<div class="bili-video-card__image __scale-player-wrap">
<div class="bili-video-card__image--wrap">
<div class="bili-watch-later" style="display: none;"><svg class="bili-watch-later__icon">
<use xlink:href="#widget-watch-later"></use>
</svg><span class="bili-watch-later__tip" style="display: none;"></span>
</div>
<picture class="v-img bili-video-card__cover">
<!---->
<source srcset="${item.pic}" type="image/webp"><img src="${item.pic}" alt=${title} loading="lazy" onload="">
</picture>
<div class="v-inline-player"></div>
</div>
<div class="bili-video-card__mask">
<div class="bili-video-card__stats">
<div class="bili-video-card__stats--left"><span class="bili-video-card__stats--item"><svg
class="bili-video-card__stats--icon">
<use xlink:href="#widget-play-count"></use>
</svg><span class="bili-video-card__stats--text">${bigNumber(item.play)}</span></span><span
class="bili-video-card__stats--item"><svg class="bili-video-card__stats--icon">
<use xlink:href="#widget-agree"></use>
</svg><span class="bili-video-card__stats--text">${bigNumber(item.favorites)}</span></span></div><span
class="bili-video-card__stats__duration">${timeFormat(item.duration)}</span>
</div>
</div>
</div>
</a>
<div class="bili-video-card__info __scale-disable">
<!---->
<div class="bili-video-card__info--right">
<a href="//www.bilibili.com/video/${item.bvid}" target="_blank" data-mod="partition_recommend" data-idx="content" data-ext="click">
<h3 class="bili-video-card__info--tit" title=${title}>${item.title}</h3>
</a>
<p class="bili-video-card__info--bottom">
<!---->
<a class="bili-video-card__info--owner" href="//space.bilibili.com/${item.mid}/" target="_blank"
data-mod="partition_recommend" data-idx="content" data-ext="click"><svg
class="bili-video-card__info--owner__up">
<use xlink:href="#widget-up"></use>
</svg>
<span class="bili-video-card__info--author">${item.author}</span>
<span class="bili-video-card__info--date">· ${timeFormat(item.duration)}</span>
</a>
</p>
</div>
</div>
</div>
</div>
`)
VIDEO_DOM.append(DOM)
})
}
async function drawFirst(item) {
const RANK_DOM = document.querySelector('#bili_asoul .rank-list')
let firstDetail = await getDetail(item.bvid)
let firstTitle = item.name.replace(/<em class="keyword">(.*?)<\/em>/g, '$1')
let first = s2d(`
<div class="rank-wrap"><span class="number on">1</span>
<div class="preview">
<div class="pic">
<a href="//www.bilibili.com/video/${item.bvid}" target="_blank" class="link">
<img src="${item.cover}" alt="${firstTitle}">
</a>
<div class="watch-later-video van-watchlater black"><span class="wl-tips" style="display: none;"></span>
</div>
</div>
<div class="txt">
<a href="//www.bilibili.com/video/${item.bvid}" target="_blank" class="link">
<p title="${firstTitle}">${firstTitle}</p>
</a><span>播放次数:${bigNumber(firstDetail.stat.view)}</span></div>
</div>
<div class="popover-video-card pvc" style="display: none;">
<div class="content"><img src="${item.cover}" alt="">
<div class="info">
<p class="f-title">${firstTitle}</p>
<p class="subtitle"><span class="name">${item.author_name}</span>
<span class="point">·</span><span class="time">2021-11-22</span></p>
</div>
</div>
<div class="count">
<ul>
<li><i class="bilifont bili-icon_shipin_bofangshu"></i><span>${bigNumber(
firstDetail.stat.view,
)}</span></li>
<li><i class="bilifont bili-icon_shipin_danmushu"></i><span>${bigNumber(
firstDetail.stat.danmaku,
)}</span></li>
<li><i class="bilifont bili-icon_shipin_shoucangshu"></i><span>${bigNumber(
firstDetail.stat.favorite,
)}</span></li>
<li><i class="bilifont bili-icon_shipin_yingbishu"></i><span>${bigNumber(
firstDetail.stat.coin,
)}</span></li>
</ul>
</div>
</div>
</div>
`)
RANK_DOM.append(first)
}
function removeUrlPrefix(str) {
return str.slice(5,str.length);
}
async function drawFirstNew(item) {
const RANK_DOM = document.querySelector('#newbili_asoul .asoul-rank-list')
let firstTitle = item.name.replace(/<em class="keyword">(.*?)<\/em>/g, '$1')
let first = s2d(`
<li class="asoul_rank" class="bili-rank-list-video__item">
<div class="bili-rank-list-video__item--wrap">
<span class="bili-rank-list-video__item--index" data-index="1">1</span>
<a href="//www.bilibili.com/video/${item.bvid}" class="rank-video-card" target="_blank" data-mod="partition_rank" data-idx="content" data-ext="click">
<div class="rank-video-card__image">
<picture class="v-img rank-video-card__cover">
<!---->
<source srcset="${removeUrlPrefix(item.cover+"@.webp")}" type="image/jpg">
<img src="${removeUrlPrefix(item.cover+"@.webp")}" alt=${firstTitle} loading="lazy" onload="">
</picture>
</div>
<div class="rank-video-card__info">
<h3 class="rank-video-card__info--tit" title=${firstTitle}> ${firstTitle}</h3>
</div>
</a>
</div>
</li>
`)
RANK_DOM.append(first)
}
async function drawHot() {
const RANK_DOM = document.querySelector('#bili_asoul .rank-list')
let rankList = await getHotVideo()
await drawFirst(rankList.shift())
let index = 1
for(let index = 0 ; index < rankList.length ; index++){
let title = rankList[index].name.replace(/<em class="keyword">(.*?)<\/em>/g, '$1')
let item = await getDetail(rankList[index].bvid)
let DOM = s2d(`
<div class="rank-wrap"><span class="number ${index < 2 && 'on'}">${index + 2}</span>
<a href="//www.bilibili.com/video/${
item.bvid
}" target="_blank" class="link">
<p title="${title}" class="title">${title}</p>
</a>
<div class="popover-video-card pvc">
<div class="content"><img
src="${item.pic}" alt="">
<div class="info">
<p class="f-title">${title}</p>
<p class="subtitle"><span class="name">${item.owner.name}</span><span class="point">·</span><span
class="time">${timeFormat(rankList[index].duration)}</span></p>
</div>
</div>
<div class="count">
<ul>
<li><i class="bilifont bili-icon_shipin_bofangshu"></i><span>${bigNumber(item.stat.view)}</span></li>
<li><i class="bilifont bili-icon_shipin_danmushu"></i><span>${bigNumber(item.stat.danmaku)}</span></li>
<li><i class="bilifont bili-icon_shipin_shoucangshu"></i><span>${bigNumber(item.stat.favorite)}</span></li>
<li><i class="bilifont bili-icon_shipin_yingbishu"></i><span>${bigNumber(item.stat.coin)}</span></li>
</ul>
</div>
</div>
</div>
`)
RANK_DOM.append(DOM)
}
}
async function drawFlex() {
let lst = document.querySelectorAll('.win .ASoul_flex')
for(let i of lst){
i.remove()
}
const RANK_DOM = document.querySelector('.win')
let item =await getDetail(getBv(this.querySelector('.rank-video-card').href))
let posl = 117
let post = 0
let y = this
while(y != document){
posl = posl + y.offsetLeft + y.clientLeft;
post = post + y.offsetTop + y.clientTop;
y = y.parentNode;
}
let firstTitle = item.title.replace(/<em class="keyword">(.*?)<\/em>/g, '$1')
let first = s2d(`
<div class="ASoul_flex" style="position: absolute; z-index: 2000; top: ${post}px; left: ${posl}px;">
<div class="v-popover is-top" style="padding-bottom: 0px; margin-left: 0px; pointer-events: none;">
<div class="v-popover-content bili-rank-list-video">
<div class="rank-video-card__popover">
<div class="rank-video-card__popover--top">
<div class="rank-video-card__image rank-video-card__popover--image">
<picture class="v-img rank-video-card__cover rank-video-card__popover--cover">
<source srcset="${removeUrlPrefix(item.pic+"@.webp")}" type="image/webp"><img src="${removeUrlPrefix(item.pic+"@.webp")}" alt=${firstTitle} loading="lazy" onload="">
</picture>
</div>
<div class="rank-video-card__info rank-video-card__popover--info">
<h3 class="rank-video-card__popover--tit" title="${firstTitle}">${firstTitle}</h3>
<p class="rank-video-card__popover--author">
<span>${item.owner.name}</span>
<span></span></p>
</div>
</div>
<ul class="rank-video-card__popover--stats">
<li class="rank-video-card__popover--stats__item"><svg class="rank-video-card__popover--icon">
<use xlink:href="#widget-play-count"></use>
</svg><span>${bigNumber(item.stat.view)}</span></li>
<li class="rank-video-card__popover--stats__item"><svg class="rank-video-card__popover--icon">
<use xlink:href="#widget-danmaku"></use>
</svg><span>${bigNumber(item.stat.danmaku)}</span></li>
<li class="rank-video-card__popover--stats__item"><svg class="rank-video-card__popover--icon">
<use xlink:href="#widget-favorite"></use>
</svg><span>${bigNumber(item.stat.favorite)}</span></li>
<li class="rank-video-card__popover--stats__item"><svg class="rank-video-card__popover--icon">
<use xlink:href="#widget-coin"></use>
</svg><span>${bigNumber(item.stat.coin)}</span></li>
</ul>
</div>
</div>
</div>
</div>
`)
RANK_DOM.append(first)
}
function delFlex() {
let lst = document.querySelectorAll('.win .ASoul_flex')
for(let i of lst){
i.remove()
}
}
async function drawHotNew() {
const RANK_DOM = document.querySelector('#newbili_asoul .asoul-rank-list')
let rankList = await getHotVideo()
await drawFirstNew(rankList.shift())
rankList.forEach((item, index) => {
let title = item.name.replace(/<em class="keyword">(.*?)<\/em>/g, '$1')
let DOM = s2d(`
<li class="asoul_rank" class="bili-rank-list-video__item">
<div class="bili-rank-list-video__item--wrap">
<span class="bili-rank-list-video__item--index" data-index="${index + 2}">${index + 2}</span>
<a href="//www.bilibili.com/video/${item.bvid}" class="rank-video-card rank-video-card__concise" target="_blank" data-mod="partition_rank" data-idx="content" data-ext="click">
<!---->
<div class="rank-video-card__info">
<h3 class="rank-video-card__info--tit" title=${title}>${item.name}</h3>
</div>
</a>
</div>
</li>
`)
RANK_DOM.append(DOM)
})
let lst = document.getElementsByClassName('asoul_rank')
for(let i of lst){
i.onmouseenter = drawFlex
i.onmouseleave = delFlex
}
}
const ASOULDOM = `
<div id="bili_asoul">
<div class="space-between report-wrap-module report-scroll-module" id="bili_report_douga" scrollshow="true">
<div class="card-list">
<header class="storey-title">
<div class="l-con">
<img class="svg-icon" src="${ICON}" />
<a href="https://search.bilibili.com/all?keyword=${KEY_WORDS}" target="_blank" class="name">${TITLE}</a>
</div>
<div class="exchange-btn">
<div class="btn btn-change A-Soul-refresh">
<i class="bilifont bili-icon_caozuo_huanyihuan"></i>
换一换
</div>
<a href="https://search.bilibili.com/all?keyword=${KEY_WORDS}&order=totalrank" target="_blank" class="btn more">更多
<i class="bilifont bili-icon_caozuo_qianwang"></i>
</a>
</div>
</header>
<div class="zone-list-box"> </div>
</div>
<div class="rank-list">
<header class="rank-header"><span class="name">排行榜</span><a
href="https://www.bilibili.com/v/channel/${CHANNEL_ID}?tab=multiple" target="_blank"
class="more">更多<i class="bilifont bili-icon_caozuo_qianwang"></i></a></header>
</div>
</div>
</div>
`
const ASOULNEWDOM = `
<section id="newbili_asoul" class="bili-grid">
<div class="video-card-list is-main">
<div class="area-header">
<div class="left">
<a id="${TITLE}" class="the-world area-anchor" data-id="0"></a>
<img class="svg-icon" src="${ICON}" />
<a class="title" href="https://search.bilibili.com/all?keyword=${KEY_WORDS}" target="_blank"><span>${TITLE}</span></a>
</div>
<div class="right"><button class="primary-btn roll-btn A-Soul-refresh">
<svg style="transform: rotate(0deg);"><use xlink:href="#widget-roll"></use></svg><span>换一换</span></button>
<a class="primary-btn see-more" href="https://search.bilibili.com/all?keyword=${KEY_WORDS}" target="_blank"><span>查看更多</span><svg><use xlink:href="#widget-arrow"></use></svg></a>
</div>
</div>
<div class="video-card-body"></div>
</div>
<aside>
<div class="aside-wrap">
<div class="aside-head">
<div class="area-header">
<div class="left">
<!---->
<!---->
<a class="title rank-title" href="https://www.bilibili.com/v/channel/${CHANNEL_ID}?tab=multiple" target="_blank"><span>排行榜</span></a></div>
<div class="right">
<a class="primary-btn see-more" href="https://www.bilibili.com/v/channel/${CHANNEL_ID}?tab=multiple" target="_blank">
<span>更多</span>
<svg><use xlink:href="#widget-arrow"></use></svg>
</a>
</div>
</div>
</div>
<div class="aside-body">
<div class="aside-core">
<div class="bili-rank-list-video bili-rank-list-video__grid" data-report="partition_rank.content">
<ul class="bili-rank-list-video__list video-rank-list asoul-rank-list">
</ul>
</div>
<!---->
<!---->
</div>
</div>
</div>
</aside>
</section>
`
window.addEventListener(
'load',
async function () {
let bdy = document.querySelector('.win')
if(bdy === null){
knd = false
let content = document.querySelector('.first-screen')
let anchor = document.querySelector('#reportFirst3')
let init = s2d(ASOULDOM)
// 插入初始模版
content.insertBefore(init, anchor)
//点击事件
document
.querySelector('.A-Soul-refresh')
.addEventListener('click', refresh)
// 插入最新视频
await getNewVideo()
drawVideos()
// 插入热门视频
drawHot()
//删掉叔叔的广告分区
document.querySelector('#reportFirst2').remove()
let lst = document.querySelectorAll('.banner-card')
for(let i of lst){
i.remove()
}
let bdy_ = document.querySelector('.dark')
if(bdy_ != null) {
let drk = document.querySelector('#bili_asoul .svg-icon')
drk.src = ICON_DARK
}
} else {
knd = true
let content = document.getElementsByClassName('bili-layout')[0]
let anchor = document.getElementsByClassName('bili-grid')[1]
let init = s2d(ASOULNEWDOM)
// 插入初始模版
content.insertBefore(init, anchor)
//点击事件
document
.querySelector('.A-Soul-refresh')
.addEventListener('click', refresh)
// 插入最新视频
await getNewVideo()
drawVideosNew()
// 插入热门视频
drawHotNew()
//删掉叔叔的广告分区
document.getElementsByClassName('bili-grid')[3].remove()
let lst = document.querySelectorAll('.win .eva-banner')
for(let i of lst){
i.remove()
}
let bdy_ = document.querySelector('.dark')
if(bdy_ != null) {
let drk = document.querySelector('#newbili_asoul .svg-icon')
drk.src = ICON_DARK
}
}
},
false,
)
})()