Omit resource path

This commit is contained in:
the1812 2021-02-06 16:04:02 +08:00
parent a931e69c4a
commit 90b8efdfe2
17 changed files with 1090 additions and 300 deletions

View File

@ -55,10 +55,15 @@ yarn
// 早期组件可能还会有一些这里没列出来的已弃用属性, 不建议使用
interface ResourceDefinition {
[key: string]: {
/** 代码文件的 js 文件名, 中间要插入一个 `.min.` 例如 abc.ts -> abc.min.js */
path: string
/** 在设置面板中的展示名称, 包括子选项 */
displayNames: {
/** 代码文件的 js 文件名, 中间要插入一个 `.min.` 例如 abc.ts -> abc.min.js
* v1.11.17 的版本后, 如果功能 key 转为短横线分割正好就是文件名, 则可以省略这一项
* 比如 fooBar 功能使用 foo-bar.ts 作为文件名就不需要填写 path 了
*/
path?: string
/** 在设置面板中的展示名称, 包括子选项
* 如果不需要在设置面板中展示可以省略 (就变成隐藏的功能了, 只能浏览器 Console 里开启)
*/
displayNames?: {
[key: string]: string
},
/** 样式定义

911
manifest.js Normal file
View File

@ -0,0 +1,911 @@
(() => {
const m = {
darkStyle: {
path: 'dark.min.css',
alwaysPreview: true
},
darkStyleImportant: {
path: 'dark-important.min.css',
alwaysPreview: true
},
darkStyleNavBar: {
path: 'dark-navbar.min.css',
alwaysPreview: true
},
touchPlayerStyle: {
path: 'touch-player.min.css'
},
noBannerStyle: {
path: 'no-banner.min.css'
},
imageViewerStyle: {
path: 'image-viewer.min.css'
},
imageViewerHtml: {
path: 'image-viewer.min.html'
},
iconsStyle: {
path: 'icons.min.css'
},
settingsSideBar: {
path: 'settings-side-bar.min.js'
},
textValidate: {
path: 'text-validate.min.js'
},
themeColors: {
path: 'theme-colors.min.js'
},
settingsTooltipStyle: {
path: 'settings-tooltip.min.css'
},
settingsTooltipJapanese: {
path: 'settings-tooltip.ja-JP.min.js'
},
settingsTooltipChinese: {
path: 'settings-tooltip.zh-CN.min.js'
},
settingsTooltipEnglish: {
path: 'settings-tooltip.en-US.min.js'
},
settingsTooltip: {
path: 'settings-tooltip.loader.min.js',
dependencies: [
'settingsTooltipStyle'
]
},
settingsSearch: {
path: 'settings-search.min.js'
},
guiSettings: {
path: 'gui-settings.min.js',
html: true,
style: 'instant',
dependencies: [
'textValidate',
'settingsSideBar',
'themeColors',
'settingsTooltip',
'settingsSearch',
],
styles: [
{
key: 'iconsStyle',
important: true,
},
],
displayNames: {
guiSettings: '设置',
blurSettingsPanel: '模糊设置面板背景',
clearCache: '清除缓存',
settingsTooltip: '设置项帮助',
settingsSearch: '搜索设置',
sideBarOffset: '侧栏垂直偏移量',
ajaxHook: '启用 Ajax Hook API',
scriptLoadingMode: '加载模式',
guiSettingsDockSide: '设置面板停靠位置',
foregroundColorMode: '文本颜色',
updateCdn: '更新源',
autoHideSideBar: '自动隐藏侧栏',
elegantScrollbar: '使用细滚动条',
downloadPackageEmitMode: '多文件下载模式',
alwaysShowDuration: '总是显示视频时长',
},
dropdown: [
{
key: 'guiSettingsDockSide',
items: ['左侧', '右侧']
},
{
key: 'foregroundColorMode',
items: ['自动', '黑色', '白色'],
},
{
key: 'scriptLoadingMode',
items: ['同时', '延后', '同时(自动)', '延后(自动)']
},
{
key: 'updateCdn',
items: ['jsDelivr', 'GitHub'],
},
{
key: 'downloadPackageEmitMode',
items: ['打包下载', '分别下载'],
},
],
},
useDarkStyle: {
path: 'dark-styles.min.js',
reloadable: true,
alwaysPreview: true,
styles: [
'darkStyle',
{
key: 'darkStyleNavBar',
important: true,
condition: () => Boolean(document.querySelector('#banner_link')),
},
{
key: 'darkStyleImportant',
important: true,
}
],
displayNames: {
useDarkStyle: '夜间模式',
useDarkStyleAsUserStyle: 'UserStyle 模式',
}
},
hideBanner: {
path: 'hide-banner.min.js',
reloadable: true,
style: 'instant',
displayNames: {
hideBanner: '隐藏顶部横幅'
}
},
touchNavBar: {
path: 'touch-navbar.min.js',
displayNames: {
touchNavBar: '顶栏触摸优化'
}
},
touchVideoPlayer: {
path: 'touch-player.min.js',
styles: [
'touchPlayerStyle'
],
displayNames: {
touchVideoPlayer: '播放器触摸支持',
touchVideoPlayerDoubleTapControl: '启用双击控制'
}
},
expandDanmakuList: {
path: 'expand-danmaku.min.js',
displayNames: {
expandDanmakuList: '自动展开弹幕列表',
expandDanmakuListIgnoreMediaList: '合集类页面不展开',
}
},
removeAds: {
path: 'remove-promotions.min.js',
style: 'instant',
displayNames: {
removeAds: '删除广告',
showBlockedAdsTip: '显示占位文本',
removeGameMatchModule: '删除电竞赛事',
preserveEventBanner: '保留活动横幅',
}
},
watchLaterRedirect: {
path: 'watchlater.min.js',
displayNames: {
watchLaterRedirect: '稍后再看重定向',
watchLaterRedirectPage: '重定向稍后再看页面',
watchLaterRedirectNavbar: '重定向顶栏',
}
},
hideTopSearch: {
path: 'hide-top-search.min.js',
displayNames: {
hideTopSearch: '隐藏搜索推荐'
}
},
harunaScale: {
path: 'haruna-scale.min.js',
reloadable: true,
displayNames: {
harunaScale: '缩放直播看板娘'
}
},
removeLiveWatermark: {
path: 'remove-watermark.min.js',
reloadable: true,
displayNames: {
removeLiveWatermark: '删除直播水印'
}
},
fullTweetsTitle: {
path: 'full-tweets-title.min.js',
reloadable: true,
style: 'instant',
displayNames: {
fullTweetsTitle: '展开动态标题'
}
},
fullPageTitle: {
path: 'full-page-title.min.js',
style: 'instant',
reloadable: true,
displayNames: {
fullPageTitle: '展开选集列表'
}
},
viewCover: {
path: 'view-cover.min.js',
dependencies: [
'imageViewerHtml',
'videoInfo',
'title'
],
styles: [
'imageViewerStyle'
],
displayNames: {
viewCover: '查看封面'
}
},
notifyNewVersion: {
path: 'notify-new-version.min.js',
displayNames: {
notifyNewVersion: '检查更新'
}
},
toast: {
path: 'toast.min.js',
style: 'instant',
displayNames: {
toast: '显示消息',
toastInternalError: '显示内部错误消息'
}
},
removeVideoTopMask: {
path: 'remove-top-mask.min.js',
reloadable: true,
displayNames: {
removeVideoTopMask: '删除视频标题层'
}
},
darkSchedule: {
path: 'dark-schedule.min.js',
displayNames: {
darkSchedule: '夜间模式计划时段',
darkScheduleStart: '起始时间',
darkScheduleEnd: '结束时间'
}
},
clearCache: {
path: 'clear-cache.min.js',
displayNames: {
useCache: '启用缓存'
}
},
videoPackage: {
path: 'download-package.min.js',
},
downloadVideo: {
path: 'download-video.min.js',
html: true,
style: 'instant',
dependencies: ['title', 'videoInfo', 'videoPackage'],
displayNames: {
'downloadVideo': '下载视频',
'videoPackage': '下载视频打包器',
'batchDownload': '批量下载',
'aria2Rpc': 'aria2 RPC',
}
},
downloadDanmaku: {
path: 'download-danmaku.min.js',
dependencies: [
'title',
'videoInfo',
'danmakuConverter'
],
displayNames: {
'downloadDanmaku': '下载弹幕'
}
},
danmakuConverter: {
path: 'danmaku-converter.min.js'
},
videoInfo: {
path: 'video-info.min.js'
},
videoStory: {
path: 'video-story.min.js'
},
about: {
path: 'about.min.js',
alwaysPreview: true,
html: true,
style: 'important',
displayNames: {
'about': '关于'
}
},
customControlBackground: {
path: 'custom-control-background.min.js',
reloadable: true,
style: {
key: 'customControlBackgroundStyle',
condition: () => settings.customControlBackgroundOpacity > 0
},
displayNames: {
customControlBackground: '控制栏着色',
customControlBackgroundOpacity: '不透明度'
}
},
useDefaultPlayerMode: {
path: 'default-player-mode.min.js',
displayNames: {
useDefaultPlayerMode: '使用默认播放器模式',
defaultPlayerMode: '默认播放器模式',
autoLightOff: '播放时自动关灯',
applyPlayerModeOnPlay: '播放时应用模式'
},
dropdown: {
key: 'defaultPlayerMode',
items: ['常规', '宽屏', '网页全屏', '全屏']
}
},
useDefaultVideoQuality: {
path: 'default-video-quality.min.js',
displayNames: {
useDefaultVideoQuality: '使用默认视频画质',
defaultVideoQuality: '画质设定'
},
dropdown: {
key: 'defaultVideoQuality',
items: ['4K', '1080P60', '1080P+', '1080P', '720P60', '720P', '480P', '360P', '自动']
}
},
comboLike: {
path: 'combo-like.min.js',
displayNames: {
comboLike: '素质三连触摸支持'
}
},
autoContinue: {
path: 'auto-continue.min.js',
displayNames: {
autoContinue: '自动从历史记录点播放',
allowJumpContinue: '允许跨集跳转'
}
},
airborne: {
path: 'airborne.min.js',
reloadable: true,
style: true,
displayNames: {
airborne: '启用空降'
}
},
expandDescription: {
path: 'expand-description.min.js',
style: 'instant',
displayNames: {
expandDescription: '自动展开视频简介'
}
},
skipChargeList: {
path: 'skip-charge-list.min.js',
style: 'instant',
displayNames: {
skipChargeList: '跳过充电鸣谢'
}
},
medalHelper: {
path: 'medal-helper.min.js',
html: true,
style: true,
displayNames: {
medalHelper: '直播勋章快速更换',
autoMatchMedal: '自动选择当前直播间勋章',
}
},
showDeadVideoTitle: {
path: 'show-dead-video-title.min.js',
displayNames: {
showDeadVideoTitle: '显示失效视频信息',
useBiliplusRedirect: '失效视频重定向',
deadVideoTitleProvider: '信息来源',
},
// dropdown: {
// key: 'deadVideoTitleProvider',
// items: ['稍后再看'],
// },
},
autoPlay: {
path: 'auto-play.min.js',
displayNames: {
autoPlay: '自动播放视频'
}
},
useCommentStyle: {
path: 'comment.min.js',
reloadable: true,
style: 'important',
displayNames: {
useCommentStyle: '简化评论区'
}
},
title: {
path: 'title.min.js',
displayNames: {
filenameFormat: '文件命名格式',
batchFilenameFormat: '批量命名格式',
}
},
imageResolution: {
path: 'image-resolution.min.js',
displayNames: {
imageResolution: '高分辨率图片'
}
},
biliplusRedirect: {
path: 'biliplus-redirect.min.js',
displayNames: {
biliplusRedirect: 'BiliPlus跳转支持'
}
},
framePlayback: {
path: 'frame-playback.min.js',
reloadable: true,
style: 'instant',
html: true,
displayNames: {
framePlayback: '启用逐帧调整'
}
},
downloadAudio: {
path: 'download-audio.min.js',
displayNames: {
downloadAudio: '下载音频'
}
},
i18n: {
path: 'i18n.min.js',
alwaysPreview: true,
style: 'important',
displayNames: {
i18n: '界面翻译',
i18nLanguage: '语言',
},
dropdown: {
key: 'i18nLanguage',
// items: Object.keys(languageCodeMap),
items: [`日本語`, `English`]
}
},
i18nEnglish: {
path: 'i18n.en-US.min.js',
alwaysPreview: true
},
i18nJapanese: {
path: 'i18n.ja-JP.min.js',
alwaysPreview: true
},
i18nTraditionalChinese: {
path: 'i18n.zh-TW.min.js',
alwaysPreview: true
},
i18nGerman: {
path: 'i18n.de-DE.min.js',
alwaysPreview: true
},
playerFocus: {
path: 'player-focus.min.js',
displayNames: {
playerFocus: '自动定位到播放器',
playerFocusOffset: '定位偏移量'
}
},
simplifyLiveroom: {
path: 'simplify-liveroom.min.js',
style: 'important',
displayNames: {
simplifyLiveroom: '简化直播间'
}
},
customNavbarComponent: {
path: 'custom-navbar-component.min.js',
},
customNavbar: {
path: 'custom-navbar.min.js',
reloadable: true,
style: 'instant',
html: true,
dependencies: ['customNavbarComponent'],
displayNames: {
customNavbar: '使用自定义顶栏',
customNavbarComponent: '顶栏组件',
customNavbarSeasonLogo: '使用季节Logo',
customNavbarFill: '主题色填充',
customNavbarTransparent: '透明填充',
customNavbarShadow: '投影',
customNavbarCompact: '紧凑布局',
customNavbarBlur: '背景模糊',
customNavbarBlurOpacity: '模糊层不透明度',
customNavbarGlobalFixed: '全局固定',
}
},
outerWatchlater: {
path: 'outer-watchlater.min.js',
reloadable: true,
style: true,
displayNames: {
outerWatchlater: '外置稍后再看'
}
},
playerShadow: {
path: 'player-shadow.min.js',
reloadable: true,
displayNames: {
playerShadow: '播放器投影'
}
},
narrowDanmaku: {
path: 'narrow-danmaku.min.js',
reloadable: true,
displayNames: {
narrowDanmaku: '强制保留弹幕栏'
}
},
videoScreenshot: {
path: 'screenshot.min.js',
reloadable: true,
style: true,
displayNames: {
videoScreenshot: '启用视频截图'
},
dependencies: [
'title'
]
},
hideBangumiReviews: {
path: 'hide-bangumi-reviews.min.js',
reloadable: true,
displayNames: {
hideBangumiReviews: '隐藏番剧点评'
}
},
noLiveAutoplay: {
path: 'no-live-autoplay.min.js',
displayNames: {
noLiveAutoplay: '禁止直播首页自动播放',
hideHomeLive: '隐藏首页推荐直播',
}
},
noMiniVideoAutoplay: {
path: 'no-mini-video-autoplay.min.js',
displayNames: {
noMiniVideoAutoplay: '禁止小视频自动播放',
}
},
foldComment: {
path: 'fold-comment.min.js',
style: true,
displayNames: {
foldComment: '快速收起动态评论区',
},
},
useDefaultVideoSpeed: {
path: 'remember-video-speed.min.js',
displayNames: {
useDefaultVideoSpeed: '记忆上次播放速度',
}
},
seedsToCoins: {
path: 'seeds-to-coins.min.js',
displayNames: {
seedsToCoins: '瓜子换硬币',
autoSeedsToCoins: '自动运行',
},
},
autoDraw: {
path: 'auto-draw.min.js',
displayNames: {
autoDraw: '直播间自动领奖',
},
},
keymap: {
path: 'keymap.min.js',
reloadable: true,
style: true,
displayNames: {
keymap: '快捷键扩展',
},
},
doubleClickFullscreen: {
path: 'double-click-fullscreen.min.js',
displayNames: {
doubleClickFullscreen: '双击全屏',
},
},
simplifyHome: {
path: 'simplify-home.min.js',
style: 'instant',
displayNames: {
simplifyHome: '简化首页',
simplifyHomeStyle: '首页风格',
simpleHomeWheelScroll: '允许横向滚动',
},
dropdown: {
key: 'simplifyHomeStyle',
items: ['清爽', '极简'],
},
},
fullActivityContent: {
path: 'full-activity-content.min.js',
reloadable: true,
displayNames: {
fullActivityContent: '展开动态内容',
},
},
activityImageSaver: {
path: 'activity-image-saver.min.js',
displayNames: {
activityImageSaver: '解除动态存图限制',
},
},
selectableColumnText: {
path: 'selectable-column-text.min.js',
reloadable: true,
displayNames: {
selectableColumnText: '专栏文字选择',
},
},
miniPlayerTouchMove: {
path: 'mini-player-touch-move.min.js',
style: true,
reloadable: true,
displayNames: {
miniPlayerTouchMove: '迷你播放器触摸拖动',
},
},
feedsFilter: {
path: 'feeds-filter.min.js',
reloadable: true,
displayNames: {
feedsFilter: '动态过滤器',
},
},
hideBangumiSponsors: {
path: 'hide-bangumi-sponsors.min.js',
reloadable: true,
displayNames: {
hideBangumiSponsors: '隐藏番剧承包',
},
},
hideRecommendLive: {
path: 'hide-recommend-live.min.js',
reloadable: true,
displayNames: {
hideRecommendLive: '隐藏推荐直播',
},
},
hideRelatedVideos: {
path: 'hide-related-videos.min.js',
reloadable: true,
displayNames: {
hideRelatedVideos: '隐藏视频推荐',
},
},
urlParamsClean: {
path: 'url-params-clean.min.js',
displayNames: {
urlParamsClean: '网址参数清理',
},
},
collapseLiveSideBar: {
path: 'collapse-live-side-bar.min.js',
style: 'instant',
reloadable: true,
displayNames: {
collapseLiveSideBar: '收起直播间侧栏',
},
},
downloadSubtitle: {
path: 'download-subtitle.min.js',
displayNames: {
downloadSubtitle: '下载字幕',
},
},
feedsTranslate: {
path: 'feeds-translate.min.js',
style: true,
displayNames: {
feedsTranslate: '动态翻译',
feedsTranslateProvider: '翻译器',
},
dropdown: {
key: 'feedsTranslateProvider',
items: ['Bing', 'Google', 'GoogleCN'],
},
},
recordLiveDanmaku: {
path: 'record-live-danmaku.min.js',
displayNames: {
recordLiveDanmaku: '直播弹幕记录器',
},
},
useDefaultLiveQuality: {
path: 'default-live-quality.min.js',
displayNames: {
useDefaultLiveQuality: '使用默认直播画质',
defaultLiveQuality: '默认直播画质',
},
dropdown: {
key: 'defaultLiveQuality',
items: ['原画', '4K', '蓝光', '超清', '高清', '流畅'],
},
},
downloadLiveRecords: {
path: 'download-live-records.min.js',
displayNames: {
downloadLiveRecords: '下载直播录像',
},
},
bvidConvert: {
path: 'bvid-convert.min.js',
style: true,
displayNames: {
bvidConvert: 'BV号转换',
preferAvUrl: '网址AV号转换',
},
},
fixedSidebars: {
path: 'fixed-sidebars.min.js',
reloadable: true,
displayNames: {
fixedSidebars: '强制固定顶栏与侧栏',
},
},
livePip: {
path: 'live-pip.min.js',
displayNames: {
livePip: '直播画中画',
},
},
extendFeedsLive: {
path: 'extend-feeds-live.min.js',
style: true,
displayNames: {
extendFeedsLive: '直播信息扩充',
},
},
playerOnTop: {
path: 'player-on-top.min.js',
reloadable: true,
displayNames: {
playerOnTop: '播放器置顶',
},
},
darkColorScheme: {
path: 'dark-color-scheme.min.js',
displayNames: {
darkColorScheme: '夜间模式跟随系统',
},
},
restoreFloors: {
path: 'restore-floors.min.js',
displayNames: {
restoreFloors: '评论楼层显示',
},
},
quickFavorite: {
path: 'quick-favorite.min.js',
style: true,
reloadable: true,
displayNames: {
quickFavorite: '启用快速收藏',
},
},
disableFeedsDetails: {
path: 'disable-feeds-details.min.js',
reloadable: true,
displayNames: {
disableFeedsDetails: '禁止跳转动态详情',
},
},
danmakuSendBar: {
path: 'danmaku-send-bar.min.js',
reloadable: true,
style: true,
displayNames: {
danmakuSendBar: '直播全屏弹幕栏',
}
},
showCoverBeforePlay: {
path: 'show-cover-before-play.min.js',
reloadable: true,
style: true,
displayNames: {
showCoverBeforePlay: '播放前显示封面',
},
},
volumeOverdrive: {
path: 'volume-overdrive.min.js',
displayNames: {
volumeOverdrive: '音量增幅',
},
},
seoJump: {
path: 'seo-jump.min.js',
displayNames: {
seoJump: 'SEO页面重定向',
},
},
commentsTranslate: {
path: 'comments-translate.min.js',
displayNames: {
commentsTranslate: '评论翻译',
},
},
copyFeedsLink: {
path: 'copy-feeds-link.min.js',
displayNames: {
copyFeedsLink: '动态链接复制',
},
},
copyCommentLink: {
path: 'copy-comment-link.min.js',
displayNames: {
copyCommentLink: '评论链接复制',
},
},
unfoldFeeds: {
path: 'unfold-feeds.min.js',
displayNames: {
unfoldFeeds: '动态反折叠',
},
},
feedsImageExporter: {
path: 'feeds-image-exporter.min.js',
displayNames: {
feedsImageExporter: '动态图片导出',
},
},
columnImageExporter: {
path: 'column-image-exporter.min.js',
displayNames: {
columnImageExporter: '专栏图片导出',
},
},
homeHidden: {
path: 'home-hidden.min.js',
style: true,
displayNames: {
homeHidden: '首页过滤',
}
},
extendVideoSpeed: {
path: 'extend-video-speed.min.js',
displayNames: {
extendVideoSpeed: '扩展视频倍数菜单'
}
},
menuRepeatVideo: {
path: 'menu-repeat-video.min.js',
displayNames: {
menuRepeatVideo: '视频右键菜单循环播放',
},
},
removeGuidePopup: {
path: 'remove-guide-popup.min.js',
displayNames: {
removeGuidePopup: '删除视频弹窗',
},
reloadable: true,
},
liveSpeedBoost: {
path: 'live-speed-boost.min.js',
displayNames: {
liveSpeedBoost: '直播自动追帧',
},
},
checkInCenter: {
path: 'check-in-center.min.js',
displayNames: {
checkInCenter: '签到助手',
}
},
}
const trim = Object.entries(m).map(([key, config]) => {
if (config.path === `${_.kebabCase(key)}.min.js`) {
delete config.path
}
return [key, config]
})
copy(Object.fromEntries(trim))
})()

1
min/check-in-center.min.js vendored Normal file
View File

@ -0,0 +1 @@
(()=>(e,o)=>{console.log("not implemented")})();

View File

@ -1 +1 @@
(()=>(e,t)=>{(async()=>{const e=document.URL.includes("//t.bilibili.com")&&document.URL.replace(window.location.search,"")!=="https://t.bilibili.com/";const n=document.URL.startsWith("https://t.bilibili.com/topic/");if(e&&!n){return}const{forEachFeedsCard:o,supportedUrls:l}=await t.importAsync("feeds-apis");if(l.every((e=>!document.URL.includes(e)))){return}t.applyImportantStyle("foldCommentStyle");const c=e=>{console.log("inject",e);const t=t=>{const n=document.createElement("div");n.classList.add("fold-comment");n.innerHTML="收起评论";const o=t.querySelector(".bb-comment");if(o===null){console.error("未找到评论区");return}else if(o.querySelector(".fold-comment")!==null){return}else{n.addEventListener("click",(()=>{const t=e.querySelector(".button-bar").children[1];if(t!==null){t.click();e.scrollIntoView()}}));o.insertAdjacentElement("beforeend",n)}};const n=e.querySelector(".panel-area");if(n===null){console.log(e)}if(n.childElementCount===0){const e=Observer.childList(n,(o=>{if(o.length>0){t(n);e.forEach((e=>e.stop()))}}))}else{t(n)}};o({added:e=>c(e.element)})})()})();
(()=>(e,t)=>{(async()=>{const e=document.URL.includes("//t.bilibili.com")&&document.URL.replace(window.location.search,"")!=="https://t.bilibili.com/";const n=document.URL.startsWith("https://t.bilibili.com/topic/");if(e&&!n){return}const{forEachFeedsCard:o,supportedUrls:l}=await t.importAsync("feeds-apis");if(l.every((e=>!document.URL.includes(e)))){return}t.applyImportantStyle("foldCommentStyle");const c=e=>{const t=t=>{const n=document.createElement("div");n.classList.add("fold-comment");n.innerHTML="收起评论";const o=t.querySelector(".bb-comment");if(o===null){console.error("未找到评论区");return}else if(o.querySelector(".fold-comment")!==null){return}else{n.addEventListener("click",(()=>{const t=e.querySelector(".button-bar").children[1];if(t!==null){t.click();e.scrollIntoView()}}));o.insertAdjacentElement("beforeend",n)}};const n=e.querySelector(".panel-area");if(n===null){console.log(e)}if(n.childElementCount===0){const e=Observer.childList(n,(o=>{if(o.length>0){t(n);e.forEach((e=>e.stop()))}}))}else{t(n)}};o({added:e=>c(e.element)})})()})();

1
min/live-speed-boost.min.js vendored Normal file
View File

@ -0,0 +1 @@
(()=>(e,o)=>{console.log("not implemented")})();

View File

@ -1 +0,0 @@
(()=>(t,i)=>{const n=[`a.read-more[href*='t.bilibili.com']`,`.link-navbar a[href*='t.bilibili.com']`,`.bili-header-m .nav-menu .nav-con .nav-item [href*='t.bilibili.com']`];const o=`https://www.bilibili.com/account/dynamic`;const e=`https://t.bilibili.com/`;const c=()=>{for(const t of n){SpinQuery.any((()=>document.querySelectorAll(t)),(t=>t.forEach((t=>t.setAttribute("href",o)))))}};SpinQuery.select(".dynamic-m .wnd_bottom .r-l").then((t=>{if(t!==null){Observer.childList(".dynamic-m .wnd_bottom .r-l",c)}}));c();const s=location.host==="t.bilibili.com";return{widget:{condition:()=>document.URL.startsWith(e)||document.URL.startsWith(o),content:`\n<button class="gui-settings-flat-button" id="old-tweets">\n<i class="mdi mdi-24px mdi-swap-horizontal-variant"></i>\n<span>${s?"回到旧版":"转到新版"}</span>\n</button>`,success:()=>{const t=document.querySelector("#old-tweets");t.addEventListener("click",(()=>{location.assign(s?o:e)}))}}}})();

1
min/old.min.css vendored
View File

@ -1 +0,0 @@
.b-header-mask-wrp .b-header-mask,.bili-header-m>.nav-menu{background:var(--theme-color)!important;box-shadow:var(--theme-color-70) 0 2px 10px 1px!important}.b-header-mask-wrp,.z_top,body .bili-header-m .nav-menu div.nav-mask{background-color:transparent!important;box-shadow:none!important}.b-header-mask-wrp{overflow:unset!important}.bili-header-m .nav-menu .nav-con .nav-item .t,.z_top.b-header-blur .z_top_nav li:not(.home) a.i-link{color:var(--foreground-color-d)!important}.uns_box ul.menu li:not(.b-post):hover,.z_top .z_top_nav ul li:hover,li.nav-item:not(.profile-info):hover{background-color:hsla(0,0%,var(--brightness),.2)!important}.vip-m{background:#fff!important}a.t>i.bili-icon{filter:brightness(0) var(--invert-filter)!important;background-image:url(https://www.bilibili.com/favicon.ico)!important;background-size:cover!important;background-position:inherit!important;width:16px!important;height:16px!important;opacity:.81!important}.header-icon-bilibili-tv{filter:brightness(0) var(--invert-filter)!important;opacity:.81;transform:scale(.9)}.z_top .z_top_nav ul li.home{filter:brightness(0) invert(1)!important;background:url(https://www.bilibili.com/favicon.ico) left center/16px no-repeat!important;opacity:.81!important;background-position-x:16%!important}#entryOld,.b-icon-app,.nav-search-submit,.title-icon,.uns_box li.u-i.b-post .up-new,.z_top .z_top_nav li .beta,.z_top .z_top_nav li .new,body>#Header{display:none!important}.i-face>.face,.uns_box li.u-i .i_face{box-shadow:0 0 2px 1.5px #0002!important}div.up-load{margin:5px 0 0 5px!important;height:32px!important}.u-link,.uns_box li.u-i.b-post a.i-link{background:0 0!important;color:var(--foreground-color-d)!important;border-radius:4px!important;line-height:30px!important;height:30px!important;border:1px solid!important;transition:background-color .2s!important}.u-link:hover,.uns_box li.u-i.b-post a.i-link:hover{opacity:1!important;background-color:hsla(0,0%,var(--brightness),.2)!important}.uns_box li.u-i.b-post{margin-left:8px!important}.nav-search{width:140px!important}.nav-search-keyword{width:130px!important;margin-right:32px!important}#nav_searchform{border-radius:4px!important;background:#fffb!important;border:none!important;transition:background-color .2s!important;box-shadow:0 2px 10px 1px #0002}#nav_searchform:hover{background-color:#fff!important}.nav-search-submit{top:2px!important}.showSearch .nav-search-submit{top:4px!important}#bilibiliPlayer{box-shadow:0 4px 16px 0 var(--theme-color-40)!important}.blur-bg{opacity:var(--blur-background-opacity)!important;filter:blur(20px)!important}.suggest-item .cancel{width:28px!important}ul.bilibili-suggest{margin-left:-30px!important;width:200px!important}li.suggest-item>a{max-width:155px!important}.nav-item div.num{box-shadow:0 .5px 4px 0 #0004!important}#primary_menu,#primary_menu>ul.nav-menu,.uns_box li.u-i.b-post{display:flex!important;align-items:center!important}#primary_menu,div.nav-gif{padding:0!important}.up-nav{top:37px!important}.filter-item.search,body{margin:0!important}.input-box textarea{padding:8px!important}.bili-header-m .nav-search .nav-search-keyword{color:#222!important}.tag-container .tag-item .tag-border .tag-border-inner{width:100%!important}.search-module .search-block input::placeholder,input.nav-search-keyword::placeholder{color:#888!important}#home_noob.guide-box{display:flex!important}@media only screen and (min-width:1291px){.bilibili-suggest.nav,.nav-search{width:250px!important}.nav-search-keyword{width:240px!important}ul.bilibili-suggest{margin-left:0!important;width:250px!important}li.suggest-item>a{max-width:205px!important}}

View File

@ -1 +1 @@
(()=>(s,e)=>{const n=`https://api.live.bilibili.com/pay/v1/Exchange/silver2coin`;return{widget:{content:`\n<button\n class="gui-settings-flat-button"\n id="seeds-to-coins">\n<i class="mdi mdi-24px mdi-seed-outline"></i>\n<span>瓜子换硬币</span>\n</button>`,condition:()=>Boolean(getUID()),success:()=>{const s=async()=>{const s=await Ajax.getJsonWithCredentials(n);if(s.code!==0){Toast.info(s.message,"瓜子换硬币",3e3)}else{Toast.success(`${s.message}\n剩余银瓜子:${s.data.silver}`,"瓜子换硬币",3e3)}};const e=dq("#seeds-to-coins");e.addEventListener("click",(async()=>{try{e.disabled=true;await s()}finally{e.disabled=false}}))}}}})();
(()=>(s,e)=>{const n=`https://api.live.bilibili.com/pay/v1/Exchange/silver2coin`;return{widget:{content:`\n<button\n class="gui-settings-flat-button"\n id="seeds-to-coins">\n<i class="mdi mdi-24px mdi-seed-outline"></i>\n<span>瓜子换硬币</span>\n</button>\n`,condition:()=>Boolean(getUID()),success:()=>{const s=async()=>{const s=await Ajax.getJsonWithCredentials(n);if(s.code!==0){Toast.info(s.message,"瓜子换硬币",3e3)}else{Toast.success(`${s.message}\n剩余银瓜子:${s.data.silver}`,"瓜子换硬币",3e3)}};const e=dq("#seeds-to-coins");e.addEventListener("click",(async()=>{try{e.disabled=true;await s()}finally{e.disabled=false}}))}}}})();

1
min/style.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,6 @@
}
resources.applyImportantStyle('foldCommentStyle')
const injectButton = (card: HTMLElement) => {
console.log('inject', card)
const injectToComment = (panelArea: HTMLDivElement) => {
const button = document.createElement('div')
button.classList.add('fold-comment')

View File

@ -13,6 +13,9 @@ export async function loadResources () {
Resource.displayNames = {}
Resource.reloadables = []
for (const [key, data] of Object.entries(Resource.manifest)) {
if (!data.path) {
data.path = `${_.kebabCase(key)}.min.js`
}
const resource = new Resource(data.path, { styles: data.styles, alwaysPreview: data.alwaysPreview })
resource.key = key
resource.dropdown = data.dropdown

View File

@ -1,69 +1,52 @@
Resource.manifest = {
style: {
path: 'style.min.css'
},
oldStyle: {
path: 'old.min.css'
},
darkStyle: {
path: 'dark.min.css',
alwaysPreview: true
alwaysPreview: true,
},
darkStyleImportant: {
path: 'dark-important.min.css',
alwaysPreview: true
alwaysPreview: true,
},
darkStyleNavBar: {
path: 'dark-navbar.min.css',
alwaysPreview: true
alwaysPreview: true,
},
touchPlayerStyle: {
path: 'touch-player.min.css'
path: 'touch-player.min.css',
},
noBannerStyle: {
path: 'no-banner.min.css'
path: 'no-banner.min.css',
},
imageViewerStyle: {
path: 'image-viewer.min.css'
path: 'image-viewer.min.css',
},
imageViewerHtml: {
path: 'image-viewer.min.html'
path: 'image-viewer.min.html',
},
iconsStyle: {
path: 'icons.min.css'
},
settingsSideBar: {
path: 'settings-side-bar.min.js'
},
textValidate: {
path: 'text-validate.min.js'
},
themeColors: {
path: 'theme-colors.min.js'
path: 'icons.min.css',
},
settingsSideBar: {},
textValidate: {},
themeColors: {},
settingsTooltipStyle: {
path: 'settings-tooltip.min.css'
path: 'settings-tooltip.min.css',
},
settingsTooltipJapanese: {
path: 'settings-tooltip.ja-JP.min.js'
path: 'settings-tooltip.ja-JP.min.js',
},
settingsTooltipChinese: {
path: 'settings-tooltip.zh-CN.min.js'
path: 'settings-tooltip.zh-CN.min.js',
},
settingsTooltipEnglish: {
path: 'settings-tooltip.en-US.min.js'
path: 'settings-tooltip.en-US.min.js',
},
settingsTooltip: {
path: 'settings-tooltip.loader.min.js',
dependencies: [
'settingsTooltipStyle'
]
},
settingsSearch: {
path: 'settings-search.min.js'
dependencies: ['settingsTooltipStyle'],
},
settingsSearch: {},
guiSettings: {
path: 'gui-settings.min.js',
html: true,
style: 'instant',
dependencies: [
@ -99,7 +82,7 @@ Resource.manifest = {
dropdown: [
{
key: 'guiSettingsDockSide',
items: ['左侧', '右侧']
items: ['左侧', '右侧'],
},
{
key: 'foregroundColorMode',
@ -107,14 +90,14 @@ Resource.manifest = {
},
{
key: 'scriptLoadingMode',
items: ['同时', '延后', '同时(自动)', '延后(自动)']
items: ['同时', '延后', '同时(自动)', '延后(自动)'],
},
{
key: 'updateCdn',
items: ['jsDelivr', 'GitHub'],
},
{
key:'downloadPackageEmitMode',
key: 'downloadPackageEmitMode',
items: ['打包下载', '分别下载'],
},
],
@ -128,48 +111,44 @@ Resource.manifest = {
{
key: 'darkStyleNavBar',
important: true,
condition: () => Boolean(document.querySelector('#banner_link')),
},
{
key: 'darkStyleImportant',
important: true,
}
},
],
displayNames: {
useDarkStyle: '夜间模式',
useDarkStyleAsUserStyle: 'UserStyle 模式',
}
},
},
hideBanner: {
path: 'hide-banner.min.js',
reloadable: true,
style: 'instant',
displayNames: {
hideBanner: '隐藏顶部横幅'
}
hideBanner: '隐藏顶部横幅',
},
},
touchNavBar: {
path: 'touch-navbar.min.js',
displayNames: {
touchNavBar: '顶栏触摸优化'
}
touchNavBar: '顶栏触摸优化',
},
},
touchVideoPlayer: {
path: 'touch-player.min.js',
styles: [
'touchPlayerStyle'
],
styles: ['touchPlayerStyle'],
displayNames: {
touchVideoPlayer: '播放器触摸支持',
touchVideoPlayerDoubleTapControl: '启用双击控制'
}
touchVideoPlayerDoubleTapControl: '启用双击控制',
},
},
expandDanmakuList: {
path: 'expand-danmaku.min.js',
displayNames: {
expandDanmakuList: '自动展开弹幕列表',
expandDanmakuListIgnoreMediaList: '合集类页面不展开',
}
},
},
removeAds: {
path: 'remove-promotions.min.js',
@ -179,7 +158,7 @@ Resource.manifest = {
showBlockedAdsTip: '显示占位文本',
removeGameMatchModule: '删除电竞赛事',
preserveEventBanner: '保留活动横幅',
}
},
},
watchLaterRedirect: {
path: 'watchlater.min.js',
@ -187,148 +166,118 @@ Resource.manifest = {
watchLaterRedirect: '稍后再看重定向',
watchLaterRedirectPage: '重定向稍后再看页面',
watchLaterRedirectNavbar: '重定向顶栏',
}
},
},
hideTopSearch: {
path: 'hide-top-search.min.js',
displayNames: {
hideTopSearch: '隐藏搜索推荐'
}
hideTopSearch: '隐藏搜索推荐',
},
},
harunaScale: {
path: 'haruna-scale.min.js',
reloadable: true,
displayNames: {
harunaScale: '缩放直播看板娘'
}
harunaScale: '缩放直播看板娘',
},
},
removeLiveWatermark: {
path: 'remove-watermark.min.js',
reloadable: true,
displayNames: {
removeLiveWatermark: '删除直播水印'
}
removeLiveWatermark: '删除直播水印',
},
},
fullTweetsTitle: {
path: 'full-tweets-title.min.js',
reloadable: true,
style: 'instant',
displayNames: {
fullTweetsTitle: '展开动态标题'
}
fullTweetsTitle: '展开动态标题',
},
},
fullPageTitle: {
path: 'full-page-title.min.js',
style: 'instant',
reloadable: true,
displayNames: {
fullPageTitle: '展开选集列表'
}
fullPageTitle: '展开选集列表',
},
},
viewCover: {
path: 'view-cover.min.js',
dependencies: [
'imageViewerHtml',
'videoInfo',
'title'
],
styles: [
'imageViewerStyle'
],
dependencies: ['imageViewerHtml', 'videoInfo', 'title'],
styles: ['imageViewerStyle'],
displayNames: {
viewCover: '查看封面'
}
viewCover: '查看封面',
},
},
notifyNewVersion: {
path: 'notify-new-version.min.js',
displayNames: {
notifyNewVersion: '检查更新'
}
notifyNewVersion: '检查更新',
},
},
toast: {
path: 'toast.min.js',
style: 'instant',
displayNames: {
toast: '显示消息',
toastInternalError: '显示内部错误消息'
}
toastInternalError: '显示内部错误消息',
},
},
removeVideoTopMask: {
path: 'remove-top-mask.min.js',
reloadable: true,
displayNames: {
removeVideoTopMask: '删除视频标题层'
}
removeVideoTopMask: '删除视频标题层',
},
},
darkSchedule: {
path: 'dark-schedule.min.js',
displayNames: {
darkSchedule: '夜间模式计划时段',
darkScheduleStart: '起始时间',
darkScheduleEnd: '结束时间'
}
darkScheduleEnd: '结束时间',
},
},
clearCache: {
path: 'clear-cache.min.js',
displayNames: {
useCache: '启用缓存'
}
useCache: '启用缓存',
},
},
videoPackage: {
path: 'download-package.min.js',
},
downloadVideo: {
path: 'download-video.min.js',
html: true,
style: 'instant',
dependencies: ['title', 'videoInfo', 'videoPackage'],
displayNames: {
'downloadVideo': '下载视频',
'videoPackage': '下载视频打包器',
'batchDownload': '批量下载',
'aria2Rpc': 'aria2 RPC',
}
downloadVideo: '下载视频',
videoPackage: '下载视频打包器',
batchDownload: '批量下载',
aria2Rpc: 'aria2 RPC',
},
},
downloadDanmaku: {
path: 'download-danmaku.min.js',
dependencies: [
'title',
'videoInfo',
'danmakuConverter'
],
dependencies: ['title', 'videoInfo', 'danmakuConverter'],
displayNames: {
'downloadDanmaku': '下载弹幕'
}
},
danmakuConverter: {
path: 'danmaku-converter.min.js'
},
videoInfo: {
path: 'video-info.min.js'
},
videoStory: {
path: 'video-story.min.js'
downloadDanmaku: '下载弹幕',
},
},
danmakuConverter: {},
videoInfo: {},
videoStory: {},
about: {
path: 'about.min.js',
alwaysPreview: true,
html: true,
style: 'important',
displayNames: {
'about': '关于'
}
about: '关于',
},
},
customControlBackground: {
path: 'custom-control-background.min.js',
reloadable: true,
style: {
key: 'customControlBackgroundStyle',
condition: () => settings.customControlBackgroundOpacity > 0
},
displayNames: {
customControlBackground: '控制栏着色',
customControlBackgroundOpacity: '不透明度'
}
customControlBackgroundOpacity: '不透明度',
},
},
useDefaultPlayerMode: {
path: 'default-player-mode.min.js',
@ -336,127 +285,120 @@ Resource.manifest = {
useDefaultPlayerMode: '使用默认播放器模式',
defaultPlayerMode: '默认播放器模式',
autoLightOff: '播放时自动关灯',
applyPlayerModeOnPlay: '播放时应用模式'
applyPlayerModeOnPlay: '播放时应用模式',
},
dropdown: {
key: 'defaultPlayerMode',
items: ['常规', '宽屏', '网页全屏', '全屏']
}
items: ['常规', '宽屏', '网页全屏', '全屏'],
},
},
useDefaultVideoQuality: {
path: 'default-video-quality.min.js',
displayNames: {
useDefaultVideoQuality: '使用默认视频画质',
defaultVideoQuality: '画质设定'
defaultVideoQuality: '画质设定',
},
dropdown: {
key: 'defaultVideoQuality',
items: ['4K', '1080P60', '1080P+', '1080P', '720P60', '720P', '480P', '360P', '自动']
}
items: [
'4K',
'1080P60',
'1080P+',
'1080P',
'720P60',
'720P',
'480P',
'360P',
'自动',
],
},
},
comboLike: {
path: 'combo-like.min.js',
displayNames: {
comboLike: '素质三连触摸支持'
}
comboLike: '素质三连触摸支持',
},
},
autoContinue: {
path: 'auto-continue.min.js',
displayNames: {
autoContinue: '自动从历史记录点播放',
allowJumpContinue: '允许跨集跳转'
}
allowJumpContinue: '允许跨集跳转',
},
},
airborne: {
path: 'airborne.min.js',
reloadable: true,
style: true,
displayNames: {
airborne: '启用空降'
}
airborne: '启用空降',
},
},
expandDescription: {
path: 'expand-description.min.js',
style: 'instant',
displayNames: {
expandDescription: '自动展开视频简介'
}
expandDescription: '自动展开视频简介',
},
},
skipChargeList: {
path: 'skip-charge-list.min.js',
style: 'instant',
displayNames: {
skipChargeList: '跳过充电鸣谢'
}
skipChargeList: '跳过充电鸣谢',
},
},
medalHelper: {
path: 'medal-helper.min.js',
html: true,
style: true,
displayNames: {
medalHelper: '直播勋章快速更换',
autoMatchMedal: '自动选择当前直播间勋章',
}
},
},
showDeadVideoTitle: {
path: 'show-dead-video-title.min.js',
displayNames: {
showDeadVideoTitle: '显示失效视频信息',
useBiliplusRedirect: '失效视频重定向',
deadVideoTitleProvider: '信息来源',
},
// dropdown: {
// key: 'deadVideoTitleProvider',
// items: ['稍后再看'],
// },
},
autoPlay: {
path: 'auto-play.min.js',
displayNames: {
autoPlay: '自动播放视频'
}
autoPlay: '自动播放视频',
},
},
useCommentStyle: {
path: 'comment.min.js',
reloadable: true,
style: 'important',
displayNames: {
useCommentStyle: '简化评论区'
}
useCommentStyle: '简化评论区',
},
},
title: {
path: 'title.min.js',
displayNames: {
filenameFormat: '文件命名格式',
batchFilenameFormat: '批量命名格式',
}
},
},
imageResolution: {
path: 'image-resolution.min.js',
displayNames: {
imageResolution: '高分辨率图片'
}
imageResolution: '高分辨率图片',
},
},
biliplusRedirect: {
path: 'biliplus-redirect.min.js',
displayNames: {
biliplusRedirect: 'BiliPlus跳转支持'
}
biliplusRedirect: 'BiliPlus跳转支持',
},
},
framePlayback: {
path: 'frame-playback.min.js',
reloadable: true,
style: 'instant',
html: true,
displayNames: {
framePlayback: '启用逐帧调整'
}
framePlayback: '启用逐帧调整',
},
},
downloadAudio: {
path: 'download-audio.min.js',
displayNames: {
downloadAudio: '下载音频'
}
downloadAudio: '下载音频',
},
},
i18n: {
path: 'i18n.min.js',
@ -468,45 +410,39 @@ Resource.manifest = {
},
dropdown: {
key: 'i18nLanguage',
// items: Object.keys(languageCodeMap),
items: [`日本語`, `English`]
}
items: ['日本語', 'English'],
},
},
i18nEnglish: {
path: 'i18n.en-US.min.js',
alwaysPreview: true
alwaysPreview: true,
},
i18nJapanese: {
path: 'i18n.ja-JP.min.js',
alwaysPreview: true
alwaysPreview: true,
},
i18nTraditionalChinese: {
path: 'i18n.zh-TW.min.js',
alwaysPreview: true
alwaysPreview: true,
},
i18nGerman: {
path: 'i18n.de-DE.min.js',
alwaysPreview: true
alwaysPreview: true,
},
playerFocus: {
path: 'player-focus.min.js',
displayNames: {
playerFocus: '自动定位到播放器',
playerFocusOffset: '定位偏移量'
}
playerFocusOffset: '定位偏移量',
},
},
simplifyLiveroom: {
path: 'simplify-liveroom.min.js',
style: 'important',
displayNames: {
simplifyLiveroom: '简化直播间'
}
},
customNavbarComponent: {
path: 'custom-navbar-component.min.js',
simplifyLiveroom: '简化直播间',
},
},
customNavbarComponent: {},
customNavbar: {
path: 'custom-navbar.min.js',
reloadable: true,
style: 'instant',
html: true,
@ -522,63 +458,54 @@ Resource.manifest = {
customNavbarBlur: '背景模糊',
customNavbarBlurOpacity: '模糊层不透明度',
customNavbarGlobalFixed: '全局固定',
}
},
},
outerWatchlater: {
path: 'outer-watchlater.min.js',
reloadable: true,
style: true,
displayNames: {
outerWatchlater: '外置稍后再看'
}
outerWatchlater: '外置稍后再看',
},
},
playerShadow: {
path: 'player-shadow.min.js',
reloadable: true,
displayNames: {
playerShadow: '播放器投影'
}
playerShadow: '播放器投影',
},
},
narrowDanmaku: {
path: 'narrow-danmaku.min.js',
reloadable: true,
displayNames: {
narrowDanmaku: '强制保留弹幕栏'
}
narrowDanmaku: '强制保留弹幕栏',
},
},
videoScreenshot: {
path: 'screenshot.min.js',
reloadable: true,
style: true,
displayNames: {
videoScreenshot: '启用视频截图'
videoScreenshot: '启用视频截图',
},
dependencies: [
'title'
]
dependencies: ['title'],
},
hideBangumiReviews: {
path: 'hide-bangumi-reviews.min.js',
reloadable: true,
displayNames: {
hideBangumiReviews: '隐藏番剧点评'
}
hideBangumiReviews: '隐藏番剧点评',
},
},
noLiveAutoplay: {
path: 'no-live-autoplay.min.js',
displayNames: {
noLiveAutoplay: '禁止直播首页自动播放',
hideHomeLive: '隐藏首页推荐直播',
}
},
},
noMiniVideoAutoplay: {
path: 'no-mini-video-autoplay.min.js',
displayNames: {
noMiniVideoAutoplay: '禁止小视频自动播放',
}
},
},
foldComment: {
path: 'fold-comment.min.js',
style: true,
displayNames: {
foldComment: '快速收起动态评论区',
@ -588,23 +515,20 @@ Resource.manifest = {
path: 'remember-video-speed.min.js',
displayNames: {
useDefaultVideoSpeed: '记忆上次播放速度',
}
},
},
seedsToCoins: {
path: 'seeds-to-coins.min.js',
displayNames: {
seedsToCoins: '瓜子换硬币',
autoSeedsToCoins: '自动运行',
},
},
autoDraw: {
path: 'auto-draw.min.js',
displayNames: {
autoDraw: '直播间自动领奖',
},
},
keymap: {
path: 'keymap.min.js',
reloadable: true,
style: true,
displayNames: {
@ -612,13 +536,11 @@ Resource.manifest = {
},
},
doubleClickFullscreen: {
path: 'double-click-fullscreen.min.js',
displayNames: {
doubleClickFullscreen: '双击全屏',
},
},
simplifyHome: {
path: 'simplify-home.min.js',
style: 'instant',
displayNames: {
simplifyHome: '简化首页',
@ -631,27 +553,23 @@ Resource.manifest = {
},
},
fullActivityContent: {
path: 'full-activity-content.min.js',
reloadable: true,
displayNames: {
fullActivityContent: '展开动态内容',
},
},
activityImageSaver: {
path: 'activity-image-saver.min.js',
displayNames: {
activityImageSaver: '解除动态存图限制',
},
},
selectableColumnText: {
path: 'selectable-column-text.min.js',
reloadable: true,
displayNames: {
selectableColumnText: '专栏文字选择',
},
},
miniPlayerTouchMove: {
path: 'mini-player-touch-move.min.js',
style: true,
reloadable: true,
displayNames: {
@ -659,41 +577,35 @@ Resource.manifest = {
},
},
feedsFilter: {
path: 'feeds-filter.min.js',
reloadable: true,
displayNames: {
feedsFilter: '动态过滤器',
},
},
hideBangumiSponsors: {
path: 'hide-bangumi-sponsors.min.js',
reloadable: true,
displayNames: {
hideBangumiSponsors: '隐藏番剧承包',
},
},
hideRecommendLive: {
path: 'hide-recommend-live.min.js',
reloadable: true,
displayNames: {
hideRecommendLive: '隐藏推荐直播',
},
},
hideRelatedVideos: {
path: 'hide-related-videos.min.js',
reloadable: true,
displayNames: {
hideRelatedVideos: '隐藏视频推荐',
},
},
urlParamsClean: {
path: 'url-params-clean.min.js',
displayNames: {
urlParamsClean: '网址参数清理',
},
},
collapseLiveSideBar: {
path: 'collapse-live-side-bar.min.js',
style: 'instant',
reloadable: true,
displayNames: {
@ -701,13 +613,11 @@ Resource.manifest = {
},
},
downloadSubtitle: {
path: 'download-subtitle.min.js',
displayNames: {
downloadSubtitle: '下载字幕',
},
},
feedsTranslate: {
path: 'feeds-translate.min.js',
style: true,
displayNames: {
feedsTranslate: '动态翻译',
@ -719,7 +629,6 @@ Resource.manifest = {
},
},
recordLiveDanmaku: {
path: 'record-live-danmaku.min.js',
displayNames: {
recordLiveDanmaku: '直播弹幕记录器',
},
@ -736,13 +645,11 @@ Resource.manifest = {
},
},
downloadLiveRecords: {
path: 'download-live-records.min.js',
displayNames: {
downloadLiveRecords: '下载直播录像',
},
},
bvidConvert: {
path: 'bvid-convert.min.js',
style: true,
displayNames: {
bvidConvert: 'BV号转换',
@ -750,46 +657,39 @@ Resource.manifest = {
},
},
fixedSidebars: {
path: 'fixed-sidebars.min.js',
reloadable: true,
displayNames: {
fixedSidebars: '强制固定顶栏与侧栏',
},
},
livePip: {
path: 'live-pip.min.js',
displayNames: {
livePip: '直播画中画',
},
},
extendFeedsLive: {
path: 'extend-feeds-live.min.js',
style: true,
displayNames: {
extendFeedsLive: '直播信息扩充',
},
},
playerOnTop: {
path: 'player-on-top.min.js',
reloadable: true,
displayNames: {
playerOnTop: '播放器置顶',
},
},
darkColorScheme: {
path: 'dark-color-scheme.min.js',
displayNames: {
darkColorScheme: '夜间模式跟随系统',
},
},
restoreFloors: {
path: 'restore-floors.min.js',
displayNames: {
restoreFloors: '评论楼层显示',
},
},
quickFavorite: {
path: 'quick-favorite.min.js',
style: true,
reloadable: true,
displayNames: {
@ -797,22 +697,19 @@ Resource.manifest = {
},
},
disableFeedsDetails: {
path: 'disable-feeds-details.min.js',
reloadable: true,
displayNames: {
disableFeedsDetails: '禁止跳转动态详情',
},
},
danmakuSendBar: {
path: 'danmaku-send-bar.min.js',
reloadable: true,
style: true,
displayNames: {
danmakuSendBar: '直播全屏弹幕栏',
}
},
},
showCoverBeforePlay: {
path: 'show-cover-before-play.min.js',
reloadable: true,
style: true,
displayNames: {
@ -820,78 +717,76 @@ Resource.manifest = {
},
},
volumeOverdrive: {
path: 'volume-overdrive.min.js',
displayNames: {
volumeOverdrive: '音量增幅',
},
},
seoJump: {
path: 'seo-jump.min.js',
displayNames: {
seoJump: 'SEO页面重定向',
},
},
commentsTranslate: {
path: 'comments-translate.min.js',
displayNames: {
commentsTranslate: '评论翻译',
},
},
copyFeedsLink: {
path: 'copy-feeds-link.min.js',
displayNames: {
copyFeedsLink: '动态链接复制',
},
},
copyCommentLink: {
path: 'copy-comment-link.min.js',
displayNames: {
copyCommentLink: '评论链接复制',
},
},
unfoldFeeds: {
path: 'unfold-feeds.min.js',
displayNames: {
unfoldFeeds: '动态反折叠',
},
},
feedsImageExporter: {
path: 'feeds-image-exporter.min.js',
displayNames: {
feedsImageExporter: '动态图片导出',
},
},
columnImageExporter: {
path: 'column-image-exporter.min.js',
displayNames: {
columnImageExporter: '专栏图片导出',
},
},
homeHidden: {
path: 'home-hidden.min.js',
style: true,
displayNames: {
homeHidden: '首页过滤',
}
},
},
extendVideoSpeed: {
path: 'extend-video-speed.min.js',
displayNames: {
extendVideoSpeed: '扩展视频倍数菜单'
}
extendVideoSpeed: '扩展视频倍数菜单',
},
},
menuRepeatVideo: {
path: 'menu-repeat-video.min.js',
displayNames: {
menuRepeatVideo: '视频右键菜单循环播放',
},
},
removeGuidePopup: {
path: 'remove-guide-popup.min.js',
displayNames: {
removeGuidePopup: '删除视频弹窗',
},
reloadable: true,
},
liveSpeedBoost: {
displayNames: {
liveSpeedBoost: '直播自动追帧',
},
},
checkInCenter: {
displayNames: {
checkInCenter: '签到助手',
},
},
}
export const resourceManifest = Resource.manifest

View File

@ -253,6 +253,8 @@ export const settings = {
alwaysShowDuration: false,
menuRepeatVideo: false,
removeGuidePopup: true,
liveSpeedBoost: false,
checkInCenter: false,
cache: {},
}
const fixedSettings = {

2
src/global.d.ts vendored
View File

@ -513,6 +513,8 @@ declare global {
alwaysShowDuration: boolean,
menuRepeatVideo: boolean,
removeGuidePopup: boolean,
liveSpeedBoost: boolean,
checkInCenter: boolean,
}
const GM_info: MonkeyInfo
function GM_xmlhttpRequest(details: MonkeyXhrDetails): { abort: () => void }

View File

@ -0,0 +1 @@
console.log('not implemented')

View File

@ -0,0 +1 @@
console.log('not implemented')

View File

@ -1,42 +1,14 @@
const seedsToCoinsApi = `https://api.live.bilibili.com/pay/v1/Exchange/silver2coin`
// const [bCoins, coupons] = (() => {
// const csrf = getCsrf()
// const vipReceive = (type: number) => {
// return async (): Promise<{ code: number, message: string }> => {
// return await (await fetch('https://api.bilibili.com/x/vip/privilege/receive',
// {
// credentials: 'include',
// headers: { 'content-type': 'application/x-www-form-urlencoded' },
// body: `type=${type}&csrf=${csrf}`,
// method: 'POST'
// })).json()
// }
// }
// return [vipReceive(1), vipReceive(2)]
// })()
/*
<button
class="gui-settings-flat-button"
id="receive-b-coins">
<i class="mdi mdi-24px mdi-seed-outline"></i>
<span>B币券</span>
</button>
<button
class="gui-settings-flat-button"
id="receive-coupons">
<i class="mdi mdi-24px mdi-seed-outline"></i>
<span></span>
</button>
*/
export default {
widget: {
content: /*html*/`
<button
class="gui-settings-flat-button"
id="seeds-to-coins">
<i class="mdi mdi-24px mdi-seed-outline"></i>
<span></span>
</button>`,
<button
class="gui-settings-flat-button"
id="seeds-to-coins">
<i class="mdi mdi-24px mdi-seed-outline"></i>
<span></span>
</button>
`,
condition: () => Boolean(getUID()),
success: () => {
const exchange = async () => {