Merge branch 'preview' of https://github.com/the1812/Bilibili-Evolved into preview

This commit is contained in:
Coulomb 2019-01-22 13:11:27 +08:00
commit 3110012544
13 changed files with 24 additions and 23 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
// ==UserScript==
// @name Bilibili Evolved
// @version 1.6.35
// @description 增强哔哩哔哩Web端体验: 修复界面瑕疵, 删除广告, 使用夜间模式浏览; 下载视频,封面,弹幕, 以及增加对触屏设备的支持等.
// @description 增强哔哩哔哩Web端体验: 下载视频, 封面, 弹幕; 自定义播放器的画质, 模式, 布局; 删除广告, 使用夜间模式, 修复界面瑕疵; 以及增加对触屏设备的支持等.
// @author Grant Howard, Coulomb-G
// @copyright 2019, Grant Howrad (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)
// @license MIT

View File

@ -8,7 +8,7 @@ namespace BilibiliEvolved.Build
{
static class Description
{
public static readonly string Master = "增强哔哩哔哩Web端体验: 修复界面瑕疵, 删除广告, 使用夜间模式浏览; 下载视频,封面,弹幕, 以及增加对触屏设备的支持等.";
public static readonly string Master = "增强哔哩哔哩Web端体验: 下载视频, 封面, 弹幕; 自定义播放器的画质, 模式, 布局; 删除广告, 使用夜间模式, 修复界面瑕疵; 以及增加对触屏设备的支持等.";
public static readonly string Preview = "Bilibili Evolved 的预览版, 可以抢先体验新功能.";
public static readonly string Offline = "Bilibili Evolved 的离线版, 所有功能都已内置于脚本中.";
public static readonly string PreviewOffline = "Bilibili Evolved 的预览离线版, 可以抢先体验新功能, 并且所有功能都已内置于脚本中.";

Binary file not shown.

View File

@ -1 +1 @@
.link-footer,.payment-active,.app-body .section-block,.bl-button--primary:disabled{background-color:#222!important;}.wrapper .elec-btn.disabled,.f-list-hover:hover,.status_box .status_btn.disabled,.game-groom-m .num,.container .pagination,.fjw-case-detail .ban-detail .content-box .video-model,.app-body .section-block.with-bottom-radius,.app-body .section-block.with-radius,.pagination-container li.pagination,.main-container .pay-bar .vip .btn-pay.active,.main-container .media-info .media-right .media-tool-bar .btn-follow.active,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled:hover{background-color:#444!important;}blockquote,blockquote *,blockquote .color-blue-01,blockquote .color-blue-02,blockquote .color-blue-03,blockquote .color-blue-04,blockquote .color-gray-01,blockquote .color-gray-02,blockquote .color-gray-03,blockquote .color-green-01,blockquote .color-green-02,blockquote .color-green-03,blockquote .color-green-04,blockquote .color-lblue-01,blockquote .color-lblue-02,blockquote .color-lblue-03,blockquote .color-lblue-04,blockquote .color-pink-01,blockquote .color-pink-02,blockquote .color-pink-03,blockquote .color-pink-04,blockquote .color-purple-01,blockquote .color-purple-02,blockquote .color-purple-03,blockquote .color-purple-04,blockquote .color-yellow-01,blockquote .color-yellow-02,blockquote .color-yellow-03,blockquote .color-yellow-04,.status_box .status_btn.disabled,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled:hover{color:#aaa!important;}.home-page .sticky-bar .bar-content .message,.cover .disabled-cover,.el-input__inner,.commnent-screen-wrap .el-input__inner,.tag-list li.tag-item.on,.bp-popup-panel .title-ctnr .popup-title,.s-paging > ul > a.current,.s-paging > ul > span.current,.score-info .go-movie,.invitation-record-warp .invtable .inputdone{color:#eee!important;}.link-footer,.el-input__inner,.commnent-screen-wrap .el-input__inner,.ui-input-textarea.focus,.user-setting-warp .el-radio-button__orig-radio:checked + .el-radio-button__inner,.tabs-bar,.score-info .go-movie{border-color:transparent!important;}.home-page .sticky-bar .bar-content .message:hover,.other a a:hover,.more-data a:hover,.rank-item .content .info .detail a a:hover,.rank-item .content .other a:hover,.rank-item .content .more-data:hover,.edit-button:hover > .icon-font,.edit-button:hover > span .left-nav-item-childed:hover,.left-nav-ul .active .left-nav-item-child,.left-nav-ul .active,.left-nav-ul .advice-btn:hover,.left-nav-ul .left-nav-item.active,.left-nav-ul .left-nav-item.active i.active,.left-nav-ul .left-nav-list.on .left-nav-item .icon,.left-nav-ul .left-nav-list.on .left-nav-item,.drop-list-v2-container .drop-list-v2-item-selected .drop-list-v2-item-cont p.item-cont-main,.voucher-ing .voucher-left-money,.voucher-ing .voucher-left-money:before,.voucher-no-used .voucher-left-money,.voucher-no-used .voucher-left-money:before,.detail-wrp .detail-content[data-v-00c9b213] p a span{color:var(--theme-color)!important;}.season-timeline .season-group.today,.season-timeline .season-group.today .group-time::before,.aside-ctnr .author-info .communicate-btn,.tag-list li.tag-item.on,.tag-list li.tag-item:hover{border-color:var(--theme-color)!important;}.season-timeline .season-group.today.is-published .group-time::before,.bg-blue,.security-list .child-list li a.bg-blue:hover,.face-g-tab li.current,.el-date-table td.current:not(.disabled),.el-date-table td.end-date,.el-date-table td.start-date,.tag-list li.tag-item.on,.face-g-list#my-g-list .face-g-block .my-mp-block .mp-info .btn-white,.user-setting-warp .el-radio-button__orig-radio:checked + .el-radio-button__inner,.user-my-btn .el-button--primary{background-color:var(--theme-color)!important;}.face-g-tab li.current,.current .tab-btn-link,.el-date-table td.current:not(.disabled),.el-date-table td.end-date,.el-date-table td.start-date{color:var(--foreground-color)!important;}
.link-footer,.payment-active,.app-body .section-block,.bl-button--primary:disabled{background-color:#222!important;}.wrapper .elec-btn.disabled,.f-list-hover:hover,.status_box .status_btn.disabled,.game-groom-m .num,.container .pagination,.fjw-case-detail .ban-detail .content-box .video-model,.app-body .section-block.with-bottom-radius,.app-body .section-block.with-radius,.pagination-container li.pagination,.main-container .pay-bar .vip .btn-pay.active,.main-container .media-info .media-right .media-tool-bar .btn-follow.active,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled:hover{background-color:#444!important;}blockquote,blockquote *,blockquote .color-blue-01,blockquote .color-blue-02,blockquote .color-blue-03,blockquote .color-blue-04,blockquote .color-gray-01,blockquote .color-gray-02,blockquote .color-gray-03,blockquote .color-green-01,blockquote .color-green-02,blockquote .color-green-03,blockquote .color-green-04,blockquote .color-lblue-01,blockquote .color-lblue-02,blockquote .color-lblue-03,blockquote .color-lblue-04,blockquote .color-pink-01,blockquote .color-pink-02,blockquote .color-pink-03,blockquote .color-pink-04,blockquote .color-purple-01,blockquote .color-purple-02,blockquote .color-purple-03,blockquote .color-purple-04,blockquote .color-yellow-01,blockquote .color-yellow-02,blockquote .color-yellow-03,blockquote .color-yellow-04,.status_box .status_btn.disabled,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled,.open-dialog-masker .open-dialog-content .open-footer .btn-normal.disabled:hover{color:#aaa!important;}.home-page .sticky-bar .bar-content .message,.cover .disabled-cover,.el-input__inner,.commnent-screen-wrap .el-input__inner,.tag-list li.tag-item.on,.bp-popup-panel .title-ctnr .popup-title,.s-paging > ul > a.current,.s-paging > ul > span.current,.score-info .go-movie,.invitation-record-warp .invtable .inputdone{color:#eee!important;}.link-footer,.el-input__inner,.commnent-screen-wrap .el-input__inner,.ui-input-textarea.focus,.user-setting-warp .el-radio-button__orig-radio:checked + .el-radio-button__inner,.tabs-bar,.score-info .go-movie{border-color:transparent!important;}.home-page .sticky-bar .bar-content .message:hover,.other a a:hover,.more-data a:hover,.rank-item .content .info .detail a a:hover,.rank-item .content .other a:hover,.rank-item .content .more-data:hover,.edit-button:hover > .icon-font,.edit-button:hover > span .left-nav-item-childed:hover,.left-nav-ul .active .left-nav-item-child,.left-nav-ul .active,.left-nav-ul .advice-btn:hover,.left-nav-ul .left-nav-item.active,.left-nav-ul .left-nav-item.active i.active,.left-nav-ul .left-nav-list.on .left-nav-item .icon,.left-nav-ul .left-nav-list.on .left-nav-item,.drop-list-v2-container .drop-list-v2-item-selected .drop-list-v2-item-cont p.item-cont-main,.voucher-ing .voucher-left-money,.voucher-ing .voucher-left-money:before,.voucher-no-used .voucher-left-money,.voucher-no-used .voucher-left-money:before,.detail-wrp .detail-content[data-v-00c9b213] p a span,.icon-label.hover-text-blue:hover .label,.room-introduction .edit-button:hover>.icon-font,.room-introduction .edit-button:hover>span{color:var(--theme-color)!important;}.season-timeline .season-group.today,.season-timeline .season-group.today .group-time::before,.aside-ctnr .author-info .communicate-btn,.tag-list li.tag-item.on,.tag-list li.tag-item:hover{border-color:var(--theme-color)!important;}.season-timeline .season-group.today.is-published .group-time::before,.bg-blue,.security-list .child-list li a.bg-blue:hover,.face-g-tab li.current,.el-date-table td.current:not(.disabled),.el-date-table td.end-date,.el-date-table td.start-date,.tag-list li.tag-item.on,.face-g-list#my-g-list .face-g-block .my-mp-block .mp-info .btn-white,.user-setting-warp .el-radio-button__orig-radio:checked + .el-radio-button__inner,.user-my-btn .el-button--primary{background-color:var(--theme-color)!important;}.face-g-tab li.current,.current .tab-btn-link,.el-date-table td.current:not(.disabled),.el-date-table td.end-date,.el-date-table td.start-date{color:var(--foreground-color)!important;}

2
min/dark.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.download-video-panel.opened{transform:scaleY(1) translateX(-50%);}.download-video-panel{position:absolute;top:calc(100% + 2px);transition:all .16s ease-out;transform-origin:top;transform:scaleY(0) translateX(-50%);background:white;box-shadow:0px 3px 20px 2px #0004;z-index:100;left:50%;}ol.video-quality li,.video-action>div{cursor:pointer;align-items:center;margin:0;padding:8px 16px;transition:all .2s ease-out;text-align:center;}.video-action>div{padding:12px 24px;}ol.video-quality li:hover,.video-action>div:hover{background:rgba(0,0,0,0.16);}.video-quality,.video-progress,.video-action,.video-error{display:none;}.download-video-panel.quality:not(.error) .video-quality,.download-video-panel.progress:not(.error) .video-progress,.download-video-panel.action:not(.error) .video-action,.download-video-panel.error .video-error{display:block;}.download-progress-text{display:flex;}.download-progress-background{background-color:#8884;height:4px;width:100%;margin-top:4px;}.download-progress-foreground{background-color:var(--theme-color);transform-origin:left;transition:all .2s ease-out;transform:scaleX(0);height:100%;width:100%;}.download-progress-cancel{margin-top:8px;display:flex;justify-content:center;}.download-progress-cancel>span{background-color:#8884;padding:4px 8px;cursor:pointer;}.download-progress-cancel>span:hover{opacity:.9;}.download-progress-cancel>span:active{opacity:.8;}.video-error,.video-progress{padding:12px;}.video-progress{min-width:120px;}#video-complete{display:none;}
.download-video-panel.opened{transform:scaleY(1) translateX(-50%);}.download-video-panel{position:absolute;top:calc(100% + 2px);transition:all .16s ease-out;transform-origin:top;transform:scaleY(0) translateX(-50%);background:white;box-shadow:0px 3px 20px 2px #0004;z-index:100;left:50%;}ol.video-quality li,.video-action>div{cursor:pointer;align-items:center;margin:0;padding:8px 16px;transition:all .2s ease-out;text-align:center;white-space:nowrap;}.video-action>div{padding:12px 24px;}ol.video-quality li:hover,.video-action>div:hover{background:rgba(0,0,0,0.16);}.video-quality,.video-progress,.video-action,.video-error{display:none;}.download-video-panel.quality:not(.error) .video-quality,.download-video-panel.progress:not(.error) .video-progress,.download-video-panel.action:not(.error) .video-action,.download-video-panel.error .video-error{display:block;}.download-progress-text{display:flex;}.download-progress-background{background-color:#8884;height:4px;width:100%;margin-top:4px;}.download-progress-foreground{background-color:var(--theme-color);transform-origin:left;transition:all .2s ease-out;transform:scaleX(0);height:100%;width:100%;}.download-progress-cancel{margin-top:8px;display:flex;justify-content:center;}.download-progress-cancel>span{background-color:#8884;padding:4px 8px;cursor:pointer;}.download-progress-cancel>span:hover{opacity:.9;}.download-progress-cancel>span:active{opacity:.8;}.video-error,.video-progress{padding:12px;}.video-progress{min-width:120px;}#video-complete{display:none;}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(()=>{return(e,t)=>{class i{constructor(e,t){this.isActive=e;this.id=t}static parseJson(e,{successAction:t,errorMessage:i,errorAction:a}){const s=JSON.parse(e);if(s.code!==0){logError(`${i} 错误码:${s.code} ${s.message||""}`);return a(s)}return t(s)}}class a extends i{constructor({medal_id:e,status:t,level:i,medalName:a,uname:s}){super(t===1,e);this.level=i;this.name=a;this.upName=s}static async getList(){return i.parseJson(await Ajax.getTextWithCredentials("https://api.live.bilibili.com/i/api/medal?page=1&pageSize=256"),{successAction:e=>e.data.fansMedalList.map(e=>new a(e)),errorAction:()=>[],errorMessage:"无法获取勋章列表."})}static getContainer(){return $("#medal-helper .popup ul")}static getItemTemplate(e){return`<li data-id='${e.id}' ${e.isActive?"class='active'":""}>\n <label title='${e.upName}'>\n <input name='medal' type='radio' ${e.isActive?"checked":""}>\n <div class='fans-medal-item level-${e.level}'>\n <span class='label'>${e.name}</span>\n <span class='level'>${e.level}</span>\n </div>\n </label>\n </li>`}async activate(){return i.parseJson(await Ajax.getTextWithCredentials(`https://api.live.bilibili.com/i/ajaxWearFansMedal?medal_id=${this.id}`),{successAction:()=>{this.isActive=true;return true},errorAction:()=>false,errorMessage:"佩戴勋章失败."})}async deactivate(){return i.parseJson(await Ajax.getTextWithCredentials(`https://api.live.bilibili.com/i/ajaxCancelWear`),{successAction:()=>{this.isActive=false;return true},errorAction:()=>false,errorMessage:"卸下勋章失败."})}}class s extends i{constructor({id:e,cid:t,wear:i,css:a,name:r,source:n}){super(i,a);this.tid=e;this.cid=t;this.name=r;this.source=n;s.getImageMap().then(e=>{this.imageUrl=e[this.id]})}static async getImageMap(){if(s.imageMap===undefined){return i.parseJson(await Ajax.getTextWithCredentials("https://api.live.bilibili.com/rc/v1/Title/webTitles"),{successAction(e){s.imageMap={};e.data.forEach(e=>{s.imageMap[e.identification]=e.web_pic_url});return s.imageMap},errorAction:()=>{return{}},errorMessage:"获取头衔图片失败."})}else{return s.imageMap}}static async getList(){return i.parseJson(await Ajax.getTextWithCredentials("https://api.live.bilibili.com/i/api/ajaxTitleInfo?page=1&pageSize=256&had=1"),{successAction:e=>e.data.list.map(e=>new s(e)),errorAction:()=>[],errorMessage:"无法获取头衔列表."})}static getContainer(){return $("#title-helper .popup ul")}static getItemTemplate(e){return`<li data-id='${e.id}' ${e.isActive?"class='active'":""}>\n <label title='${e.name}'>\n <input name='medal' type='radio' ${e.isActive?"checked":""}>\n <img src='${e.imageUrl}' class="title-image">\n </label>\n </li>`}async activate(){return i.parseJson(await Ajax.postTextWithCredentials(`https://api.live.bilibili.com/i/ajaxWearTitle`,`id=${this.tid}&cid=${this.cid}`),{successAction:()=>{this.isActive=true;return true},errorAction:()=>false,errorMessage:"佩戴头衔失败."})}async deactivate(){return i.parseJson(await Ajax.postTextWithCredentials(`https://api.live.bilibili.com/i/ajaxCancelWearTitle`,""),{successAction:()=>{this.isActive=false;return true},errorAction:()=>false,errorMessage:"卸下头衔失败."})}}async function r(e){const t=e.getContainer();const i=await e.getList();const a=async()=>{const i=await e.getList();i.forEach(e=>{const i=t.find(`li[data-id=${e.id}]`);if(e.isActive){i.addClass("active")}else{i.removeClass("active")}i.find(`input`).prop("checked",e.isActive)})};i.forEach(s=>{const r=$(e.getItemTemplate(s));t.append(r);const n=r.find("input")[0];r.on("click",e=>{if(e.target===n){return}if(s.isActive){s.deactivate().then(a)}else{const e=i.find(e=>e.isActive);if(e){e.isActive=false}s.activate().then(a)}})})}return{export:{Badge:i,Medal:a,Title:s},widget:{condition:()=>document.domain==="live.bilibili.com",content:t.data.medalHelperDom.text,success:()=>{$(".medal-helper").each((e,t)=>{const i=$(t);const a=i.find(".popup")[0];i.on("click",e=>{if(!a.contains(e.target)){a.classList.toggle("opened")}})});r(a);s.getImageMap().then(()=>r(s))}}}}})();
(()=>{return(e,t)=>{class i{constructor(e,t){this.isActive=e;this.id=t}static parseJson(e,{successAction:t,errorMessage:i,errorAction:a}){const s=JSON.parse(e);if(s.code!==0){logError(`${i} 错误码:${s.code} ${s.message||""}`);return a(s)}return t(s)}}class a extends i{constructor({medal_id:e,status:t,level:i,medalName:a,uname:s}){super(t===1,e);this.level=i;this.name=a;this.upName=s}static async getList(){return i.parseJson(await Ajax.getTextWithCredentials("https://api.live.bilibili.com/i/api/medal?page=1&pageSize=256"),{successAction:e=>e.data.fansMedalList.map(e=>new a(e)),errorAction:()=>[],errorMessage:"无法获取勋章列表."})}static getContainer(){return $("#medal-helper .medal-popup ul")}static getItemTemplate(e){return`<li data-id='${e.id}' ${e.isActive?"class='active'":""}>\n <label title='${e.upName}'>\n <input name='medal' type='radio' ${e.isActive?"checked":""}>\n <div class='fans-medal-item level-${e.level}'>\n <span class='label'>${e.name}</span>\n <span class='level'>${e.level}</span>\n </div>\n </label>\n </li>`}async activate(){return i.parseJson(await Ajax.getTextWithCredentials(`https://api.live.bilibili.com/i/ajaxWearFansMedal?medal_id=${this.id}`),{successAction:()=>{this.isActive=true;return true},errorAction:()=>false,errorMessage:"佩戴勋章失败."})}async deactivate(){return i.parseJson(await Ajax.getTextWithCredentials(`https://api.live.bilibili.com/i/ajaxCancelWear`),{successAction:()=>{this.isActive=false;return true},errorAction:()=>false,errorMessage:"卸下勋章失败."})}}class s extends i{constructor({id:e,cid:t,wear:i,css:a,name:r,source:n}){super(i,a);this.tid=e;this.cid=t;this.name=r;this.source=n;s.getImageMap().then(e=>{this.imageUrl=e[this.id]})}static async getImageMap(){if(s.imageMap===undefined){return i.parseJson(await Ajax.getTextWithCredentials("https://api.live.bilibili.com/rc/v1/Title/webTitles"),{successAction(e){s.imageMap={};e.data.forEach(e=>{s.imageMap[e.identification]=e.web_pic_url});return s.imageMap},errorAction:()=>{return{}},errorMessage:"获取头衔图片失败."})}else{return s.imageMap}}static async getList(){return i.parseJson(await Ajax.getTextWithCredentials("https://api.live.bilibili.com/i/api/ajaxTitleInfo?page=1&pageSize=256&had=1"),{successAction:e=>e.data.list.map(e=>new s(e)),errorAction:()=>[],errorMessage:"无法获取头衔列表."})}static getContainer(){return $("#title-helper .medal-popup ul")}static getItemTemplate(e){return`<li data-id='${e.id}' ${e.isActive?"class='active'":""}>\n <label title='${e.name}'>\n <input name='medal' type='radio' ${e.isActive?"checked":""}>\n <img src='${e.imageUrl}' class="title-image">\n </label>\n </li>`}async activate(){return i.parseJson(await Ajax.postTextWithCredentials(`https://api.live.bilibili.com/i/ajaxWearTitle`,`id=${this.tid}&cid=${this.cid}`),{successAction:()=>{this.isActive=true;return true},errorAction:()=>false,errorMessage:"佩戴头衔失败."})}async deactivate(){return i.parseJson(await Ajax.postTextWithCredentials(`https://api.live.bilibili.com/i/ajaxCancelWearTitle`,""),{successAction:()=>{this.isActive=false;return true},errorAction:()=>false,errorMessage:"卸下头衔失败."})}}async function r(e){const t=e.getContainer();const i=await e.getList();const a=async()=>{const i=await e.getList();i.forEach(e=>{const i=t.find(`li[data-id=${e.id}]`);if(e.isActive){i.addClass("active")}else{i.removeClass("active")}i.find(`input`).prop("checked",e.isActive)})};i.forEach(s=>{const r=$(e.getItemTemplate(s));t.append(r);const n=r.find("input")[0];r.on("click",e=>{if(e.target===n){return}if(s.isActive){s.deactivate().then(a)}else{const e=i.find(e=>e.isActive);if(e){e.isActive=false}s.activate().then(a)}})})}return{export:{Badge:i,Medal:a,Title:s},widget:{condition:()=>document.domain==="live.bilibili.com",content:t.data.medalHelperDom.text,success:()=>{$(".medal-helper").each((e,t)=>{const i=$(t);const a=i.find(".medal-popup")[0];i.on("click",e=>{if(!a.contains(e.target)){a.classList.toggle("opened")}})});r(a);s.getImageMap().then(()=>r(s))}}}}})();

View File

@ -500,7 +500,7 @@ li.category.folded i.icon-arrow
cursor: pointer;
transition: all .2s ease-out;
font-size: 10pt;
border-bottom: 2px solid var(--theme-color-70);
border-bottom: 2px solid var(--theme-color-50);
flex: 0 0 auto;
margin: 4px;
}

View File

@ -41,7 +41,7 @@
}
static getContainer()
{
return $("#medal-helper .popup ul");
return $("#medal-helper .medal-popup ul");
}
static getItemTemplate(medal)
{
@ -135,7 +135,7 @@
}
static getContainer()
{
return $("#title-helper .popup ul");
return $("#title-helper .medal-popup ul");
}
static getItemTemplate(title)
{
@ -237,7 +237,7 @@
$(".medal-helper").each((_, it) =>
{
const $it = $(it);
const popup = $it.find(".popup")[0];
const popup = $it.find(".medal-popup")[0];
$it.on("click", e =>
{
if (!popup.contains(e.target))

View File

@ -23,6 +23,7 @@ ol.video-quality li,
padding: 8px 16px;
transition: all .2s ease-out;
text-align: center;
white-space: nowrap;
}
.video-action>div
{