BiliPlus UI

修改BiliPlus界面

Verzia zo dňa 25.01.2018. Pozri najnovšiu verziu.

// ==UserScript==
// @name         BiliPlus UI
// @namespace    https://www.biliplus.com/
// @version      1.03
// @description  修改BiliPlus界面
// @author       SettingDust

// @include      http*://www.biliplus.com/*
// @exclude      http*://www.biliplus.com/tucao/*

// @require      https://code.jquery.com/jquery-latest.js
// @require      https://cdn.bootcss.com/Ripple.js/1.2.1/ripple.min.js
// @grant        none
// ==/UserScript==

$(function() {
    if($('.sidebar').length>0){
        var css = "";
        //修改顶部
        css += [
            "html {",
            "  -webkit-font-smoothing: antialiased;",
            "}",
            ".biliplus-ui-header {",
            "  width: calc(100% - 250px);",
            "  transition: width 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;",
            "  color: rgba(255, 255, 255, 1);",
            "  background-color: #0092f8;",
            "  top: 0;",
            "  left: auto;",
            "  right: 0;",
            "  position: fixed;",
            "  display: flex;",
            "  z-index: 1100;",
            "  box-sizing: border-box;",
            "  flex-shrink: 0;",
            "  flex-direction: column;",
            "  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);",
            "}",
            ".biliplus-ui-bar {",
            "  padding: 0 24px;",
            "  height: 64px;",
            "  display: flex;",
            "  position: relative;",
            "  align-items: center;",
            "}",
            ".biliplus-ui-title {",
            "  flex: 0 1 auto;",
            "  margin-left: 24px;",
            "}",
            ".biliplus-ui-whitespace {",
            "  flex: 1 1 auto;",
            "}",
            ".biliplus-ui-bar-item {",
            "  display: inline;",
            "  flex-direction: inherit;",
            "}",
            ".biliplus-ui-font {",
            "  font-family: Verdana, 'Roboto', 'Helvetica', 'Arial', sans-serif;",
            "  font-size: 1.3125rem;",
            "  line-height: 1.16667em;",
            "  font-weight: 500;",
            "}",
            ".biliplus-ui-button,.biliplus-ui-button:hover,.biliplus-ui-button:link,.biliplus-ui-button:active,.biliplus-ui-button:focus{",
            "  color: inherit;",
            "  flex: 0 0 auto;",
            "  width: 48px;",
            "  height: 48px;",
            "  font-size: 1.5rem;",
            "  text-align: center;",
            "  border-radius: 50%;",
            "  cursor: pointer;",
            "  border: 0;",
            "  display: inline-flex;",
            "  outline: none;",
            "  position: relative;",
            "  user-select: none;",
            "  align-items: center;",
            "  vertical-align: middle;",
            "  text-decoration: none;",
            "  justify-content: center;",
            "  background-color: transparent;",
            "  -webkit-appearance: none;",
            "  -webkit-tap-highlight-color: transparent;",
            "  padding: 0;",
            "}",
            ".biliplus-ui-button-icon {",
            "  width: 100%;",
            "  display: flex;",
            "  align-items: inherit;",
            "  justify-content: inherit;",
            "}",
            "*, *::before, *::after {",
            "  box-sizing: inherit;",
            "}",
            ".biliplus-ui-element {",
            "  width: 1.5em;",
            "  height: 1.5em;",
            "}",
            ".biliplus-ui-avatar {",
            "  border-radius: 50%;",
            "}",
            ".biliplus-ui-svg {",
            "  fill: currentColor;",
            "  width: 24px;",
            "  height: 24px;",
            "  display: inline-block;",
            "  transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;",
            "  user-select: none;",
            "  flex-shrink: 0;",
            "}"
        ].join("\n");
        $('body').prepend('<header class="biliplus-ui-header"></header>');
        $('.biliplus-ui-header').append('<div class="biliplus-ui-bar"></div>');
        $('.biliplus-ui-bar').append('<div class="biliplus-ui-whitespace"></div>');
        $('.userbar').removeClass('userbar');
        var avatar=$('.userbarcontent span img').attr('src');
        var name=$('.userbarcontent span b').text();
        $('.userbarcontent').hide();
        $('.biliplus-ui-bar').append('<div class="biliplus-ui-bar-item"><a tabindex="0" class="biliplus-ui-button"><span class="biliplus-ui-button-icon"><img src="'+avatar+'" class="biliplus-ui-avatar biliplus-ui-element"></span></a></div>');
        if(avatar=='https://static.hdslb.com/images/member/noface.gif'){
            name='点击头像登陆';
        }
        //个人信息栏
        css += [
            ".biliplus-ui-sidebar {",
            "  width: 250px;",
            "  position: absolute;",
            "  background-color: #fff;",
            "  height: 100%;",
            "  z-index: 2;",
            "  position: fixed;",
            "}",
            ".biliplus-ui-sidebar-user {",
            "  right: -250px;",
            "  border-left: 1px solid rgba(0, 0, 0, 0.12);",
            "  transition: .3s;",
            "}",
            ".biliplus-ui-sidebar-user-content {",
            "  margin-top: 14.68em;",
            "}",
            ".biliplus-ui-sidebar-user-name {",
            "  text-align: center;",
            "  padding-bottom: 16px;",
            "  border-bottom: 1px solid rgba(0, 0, 0, 0.12);",
            "  margin-bottom: 0;",
            "}",
            ".biliplus-ui-sidebar-user-on {",
            "  right: 0;",
            "}",
            ".biliplus-ui-avatar-button-big {",
            "  cursor: default;",
            "  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);",
            "}",
            ".biliplus-ui-avatar-big {",
            "  cursor: pointer;",
            "  border: 4px solid white;",
            "}",
            ".biliplus-ui-sidebar-ul {",
            "  padding: 0;",
            "  padding-top: 8px;",
            "  padding-bottom: 8px;",
            "  flex: 1 1 auto;",
            "  margin: 0;",
            "  position: relative;",
            "  list-style: none;",
            "}",
            ".biliplus-ui-sidebar-li {",
            "  color: rgba(0, 0, 0, 0.87);",
            "  display: block;",
            "  font-size: 0.875rem;",
            "  font-weight: 500;",
            "  font-family: Verdana, 'Roboto', 'Helvetica', 'Arial', sans-serif;",
            "  line-height: 1.71429em;",
            "  padding-top: 0;",
            "  padding-bottom: 0;",
            "  position: relative;",
            "  align-items: center;",
            "  justify-content: flex-start;",
            "  text-decoration: none;",
            "}",
            ".biliplus-ui-sidebar-li-a {",
            "  padding-left: 24px;",
            "  padding-right: 24px;",
            "  border-radius: 0;",
            "  text-transform: none;",
            "  justify-content: flex-start;",
            "  width: 100%;",
            "  transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;",
            "  color: rgba(0, 0, 0, 0.87) !important;",
            "  padding: 8px 16px;",
            "  min-width: 88px;",
            "  font-size: 1rem;",
            "  box-sizing: border-box;",
            "  min-height: 36px;",
            "  line-height: 1.4em;",
            "  font-family: Verdana, 'Roboto', 'Helvetica', 'Arial', sans-serif;",
            "  font-weight: 500;",
            "  cursor: pointer;",
            "  border: 0;",
            "  display: inline-flex;",
            "  outline: none;",
            "  position: relative;",
            "  user-select: none;",
            "  align-items: center;",
            "  vertical-align: middle;",
            "  text-decoration: none;",
            "  background-color: transparent;",
            "  -webkit-appearance: none;",
            "  -webkit-tap-highlight-color: transparent;",
            "}",
            ".biliplus-ui-sidebarli-a:hover {",
            "  background-color: rgba(0, 0, 0, 0.12);",
            "}"
        ].join("\n");
        $('.biliplus-ui-header').after('<div class="biliplus-ui-sidebar biliplus-ui-sidebar-user"></div>');
        $('.biliplus-ui-sidebar-user').append('<div class="biliplus-ui-sidebar-user-content"></div>');
        $('.biliplus-ui-sidebar-user-content').append('<h2 class="biliplus-ui-font biliplus-ui-sidebar-user-name">'+name+'</h2>');
        var space=$('.usersidebar a:eq(0)').attr('href');
        var dynamic=$('.usersidebar a:eq(1)').attr('href');
        var bangumi=$('.usersidebar a:eq(2)').attr('href');
        var favouite=$('.usersidebar a:eq(3)').attr('href');
        var history=$('.usersidebar a:eq(4)').attr('href');
        var attention=$('.usersidebar a:eq(5)').attr('href');
        $('body').on('click','.biliplus-ui-avatar-button-big',function(){
            window.location.href=space;
        });
        //头像转换
        $('.biliplus-ui-button').click(function(){
            if($(this).find('.biliplus-ui-button-icon .biliplus-ui-avatar').length>0
               & !$(this).hasClass('.biliplus-ui-avatar-button-big')){
                $('.biliplus-ui-avatar').animate({
                    top: '3.8em',
                    width: '8em',
                    height: '8em',
                },300);
                $(this).animate({
                    top: '3.8em',
                    width: '8em',
                    height: '8em',
                },300,function(){
                    $(this).addClass('biliplus-ui-avatar-button-big');
                });
                $('.biliplus-ui-avatar').addClass('biliplus-ui-avatar-big');
                $('.biliplus-ui-sidebar-user').addClass('biliplus-ui-sidebar-user-on');
            }
        });
        //列表
        $('.biliplus-ui-sidebar-user-content').append('<ul class="biliplus-ui-sidebar-ul"></ul>');
        $('.biliplus-ui-sidebar-user-content .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+dynamic+'">动态</a></li>');
        $('.biliplus-ui-sidebar-user-content .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+bangumi+'">追番</a></li>');
        $('.biliplus-ui-sidebar-user-content .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+favouite+'">收藏夹</a></li>');
        $('.biliplus-ui-sidebar-user-content .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+history+'">历史记录</a></li>');
        $('.biliplus-ui-sidebar-user-content .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+attention+'">我的关注</a></li>');
        //侧边栏
        css += [
            ".biliplus-ui-sidebar-menu {",
            "  left: 0;",
            "  border-right: 1px solid rgba(0, 0, 0, 0.12);",
            "  z-index: 1200;",
            "}",
            ".biliplus-ui-sidebar-menu-title-content {",
            "  flex-grow: 1;",
            "  align-items: flex-start;",
            "  flex-direction: column;",
            "  justify-content: center;",
            "  padding-left: 24px;",
            "  padding-right: 24px;",
            "  min-height: 64px;",
            "}",
            ".biliplus-ui-sidebar-menu-title {",
            "  display: flex;",
            "  border-bottom: 1px solid rgba(0, 0, 0, 0.12);",
            "  color: #0092f8 !important;",
            "}",
            ".biliplus-ui-sidebar-menu-title-main {",
            "  font-size: 2.3em;",
            "  font-weight: 700;",
            "  line-height: 54px;",
            "}",
            ".biliplus-ui-sidebar-menu-foot {",
            "  bottom: 24px;",
            "  position: fixed;",
            "}",
            ".sidebar-about {",
            "  color: #000;",
            "  margin: 0 50px !important;",
            "}",
            ".sidebar-about>a {",
            "  color: #cdcdcd;",
            "}",
            ".sidebar-about>a:hover {",
            "  color: #000;",
            "}",
            ".biliplus-ui-about {",
            "  padding: 0px;",
            "  white-space: pre;",
            "  font-size: 9px;",
            "  line-height: 20px;",
            "  color: #cdcdcd;",
            "}",
        ].join("\n");
        $('.biliplus-ui-sidebar-user').after('<div class="biliplus-ui-sidebar-menu biliplus-ui-sidebar"></div>');
        $('.sidebar').hide();
        //列表
        $('.biliplus-ui-sidebar-menu').append('<a class="biliplus-ui-sidebar-menu-title" href="https://www.biliplus.com/"></a>');
        $('.biliplus-ui-sidebar-menu-title').append('<div class="biliplus-ui-sidebar-menu-title-content biliplus-ui-font"></div>');
        $('.biliplus-ui-sidebar-menu-title-content').append('<div style="padding: 5px 0;"><span class="biliplus-ui-sidebar-menu-title-main">BiliPlus</span></br></div>');
        $('.biliplus-ui-sidebar-menu').append('<ul class="biliplus-ui-sidebar-ul"></ul>');
        var bangumilist=$('.sidebar a:eq(1)').attr('href');
        var about=$('.sidebar a:eq(2)').attr('href');
        var lyb=$('.sidebar a:eq(3)').attr('href');
        var tuocao=$('.sidebar a:eq(4)').attr('href');
        $('.biliplus-ui-sidebar-menu .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+bangumilist+'">番剧更新</a></li>');
        $('.biliplus-ui-sidebar-menu .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+lyb+'">留言板</a></li>');
        $('.biliplus-ui-sidebar-menu .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+tuocao+'">TuCaoHelper</a></li>');
        $('.biliplus-ui-sidebar-menu .biliplus-ui-sidebar-ul').append('<li class="biliplus-ui-sidebar-li"><a class="biliplus-ui-sidebar-li-a" href="'+about+'">关于</a></li>');
        $('.biliplus-ui-sidebar-menu').append('<div class="biliplus-ui-sidebar-menu-foot"></div>');
        //版权信息
        $('.sidebar-about').each(function(){
            $('.biliplus-ui-sidebar-menu-foot').append($(this));
        });
        $('.biliplus-ui-sidebar-menu-foot').append('<div class="sidebar-about biliplus-ui-about"><a target="_blank" href="https://material-ui-next.com/">Material-UI</a></div>');
        //水波效果
        window.rippler = $.ripple('.biliplus-ui-button:not(.biliplus-ui-avatar-button-big)', {
            multi: true
        });
        window.rippler = $.ripple('.biliplus-ui-sidebar-li', {
            multi: true
        });
        //主体内容
        css += [
            ".biliplus-ui-content {",
            "  margin-bottom: 100px;",
            "  max-width: 900px;",
            "  padding-left: 24px;",
            "  padding-right: 24px;",
            "  padding-top: 80px;",
            "  margin: 0 auto;",
            "  flex: 1 1 100%;",
            "}"
        ].join("\n");
        $('.biliplus-ui-sidebar-menu').after('<div class="biliplus-ui-content"></div>');
        $('.biliplus-ui-content').append($('.content'));
        $('.content').removeClass('content');
        $('body').on('click','.biliplus-ui-content',function(){
            avatarToSmall();
        });
        //搜索
        if(window.location.href!='https://www.biliplus.com/'){
            $('.biliplus-ui-bar-item').before('<div class="biliplus-ui-bar-item"><a tabindex="0" class="biliplus-ui-button"><span class="biliplus-ui-button-icon"><svg class="biliplus-ui-svg" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></svg></span></a></div>');
        }
        //提示修改
        css += [
            ".Biliplus-Notice {",
            "  z-index: 1111 !important;",
            "}"
        ].join("\n");
        //背景LOGO
        css += [
            ".logo {",
            "  font-family: Verdana;",
            "  font-size: 16em;",
            "  opacity: 0.01;",
            "  position: absolute;",
            "  bottom: 0;",
            "  right: 0;",
            "  font-weight: 700;",
            "  user-select: none;",
            "  pointer-events: none;",
            "}"
        ].join("\n");

        $('body').append('<div class="logo">Bili<sup>+</sup></div>');
        $("head").append ('<link href="https://cdn.bootcss.com/Ripple.js/1.2.1/ripple.min.css" rel="stylesheet">');
        $("<style></style>").text(css).appendTo($("head"));
    }
});
function avatarToSmall(){
    if($('.biliplus-ui-avatar-button-big').length>0){
        $('.biliplus-ui-avatar').animate({
            top: '0',
            width: '1.5em',
            height: '1.5em',
        },300);
        $('.biliplus-ui-avatar-button-big').animate({
            top: '0',
            width: '48px',
            height: '48px',
        },300,function(){
            $('.biliplus-ui-avatar-button-big').removeClass('biliplus-ui-avatar-button-big');
        });
        $('head').append('<link href="stylesheet" type="text/css" href="ripple.min.css">');
        $('.biliplus-ui-avatar').removeClass('biliplus-ui-avatar-big');
        $('.biliplus-ui-sidebar-user').removeClass('biliplus-ui-sidebar-user-on');
    }
}