import { DOMUtils, log, SCRIPT_NAME } from "@/env"; import { DouYinVideoFilter } from "@/main/video/filter/DouYinVideoFilter"; import { DouYinVideoPlayerShortCut } from "@/main/video/player/DouYinVideoPlayerShortCut"; import { UIButton } from "@components/setting/components/ui-button"; import { UIButtonShortCut } from "@components/setting/components/ui-button-shortcut"; import { UIInput } from "@components/setting/components/ui-input"; import { UIOwn } from "@components/setting/components/ui-own"; import { UISelect } from "@components/setting/components/ui-select"; import { UISlider } from "@components/setting/components/ui-slider"; import { UISwitch } from "@components/setting/components/ui-switch"; import { Panel } from "@components/setting/panel"; import type { PopsPanelContentConfig } from "@whitesev/pops/dist/types/src/components/panel/types/index.js"; import { AutoOpenOrClose } from "../all-open-or-close"; export const PanelVideoConfig: PopsPanelContentConfig = { id: "panel-config-video", title: "视频", views: [ { text: "", type: "container", views: [ { text: "功能", type: "deepMenu", views: [ { text: "功能", type: "container", views: [ UISelect( "清晰度", "chooseVideoDefinition", -2, [ { text: "超清 4K", // ↓gearType value: -2, }, { text: "超清 2K", value: -1, }, { text: "高清 1080P", value: 1, }, { text: "高清 720P", value: 2, }, { text: "标清 540P", value: 3, }, { text: "极速", value: 4, }, { text: "智能", value: 0, }, ], void 0, "自行选择清晰度" ), UISelect( "沉浸模式", "fullScreen", false as string | boolean, [ { text: "无", value: false, }, { text: "隐藏底部信息区域和右侧工具栏", value: "bottomInfoWrap-rightToolBar", }, { text: "全部", value: true, }, { text: "鼠标进入显示", value: "mouseEnterShow", }, ], void 0, "隐藏右侧工具栏、底部信息栏等" ), UISwitch("手机模式", "mobileMode", false, void 0, "放大文字和图标"), UISwitch("评论区移到中间", "changeCommentToBottom", true, void 0, "修改评论区为中间弹出而非右侧区域"), UISwitch( "修复进度条", "repairProgressBar", false, void 0, "修复移动端不能点击拖拽和定位进度的问题(仅移动端使用)" ), UISwitch( "手势返回关闭评论区", "dy-video-gestureBackCloseComment", false, void 0, "浏览器手势返回时关闭评论区" ), UISwitch( "监听并关闭【长时间无操作,已暂停播放】弹窗", "dy-video-waitToRemovePauseDialog", true, void 0, "自动监听并检测弹窗" ), UISwitch( "修改复制链接内容", "dy-video-hookCopyLinkButton", true, void 0, "分享->复制链接,复制的内容仅为链接,不包含其它" ), UISwitch( "自动进入网页全屏", "autoEnterElementFullScreen", false, void 0, "网页加载完毕后自动点击网页全屏按钮进入全屏" ), UISelect("双击video动作", "dy-video-doubleClickAction", "", [ { text: "点赞", value: "", }, { text: "网页全屏", value: "website-fullscreen", }, { text: "全屏", value: "fullscreen", }, ]), UISwitch("移除video的bottom偏移", "dy-video-removeStyle-bottom", false), UISwitch("禁用右侧工具栏的transform", "dy-video-disableRightToolbarTransform", false), UISelect( "object-fit", "dy-video-object-fit", "", [ { text: "默认", value: "", }, { text: "fill(拉伸填满容器)", value: "fill", }, { text: "contain(等比缩放至容器内(可能有留白)", value: "contain", }, { text: "cover(等比填充并裁剪超出部分)", value: "cover", }, { text: "none(原始尺寸)", value: "none", }, { text: "scale-down(根据容器大小选择填充或拉伸)", value: "scale-down", }, ], void 0, "对video的object-fit属性进行覆盖" ), UISwitch("解除视频文案复制限制", "dy-video-allowSelectTitleText", false), UISwitch("收藏夹显示滚动条", "dy-video-playerCollectShowScroll", false), UISwitch("评论区时间可跳转", "dy-video-commentTimeJump", false, undefined), ], }, { type: "container", text: "", views: [ { type: "deepMenu", text: "解析下载", views: [ { type: "container", text: "", views: [ UISwitch( "视频解析", "parseVideo", true, void 0, "点击视频右侧工具栏的分享按钮-下载(无视该视频不支持下载的提示)" ), UISwitch( "添加下载按钮", "dy-video-downloader-addDownloadButton", true, void 0, "在视频底部组件的最右边添加下载按钮" ), UISwitch( "弹出下载重命名文件名弹窗", "dy-video-popupDownloadRenameFileName", false, void 0, "当点击下载时,如果启用该功能,则弹出下载重命名文件名弹窗,可自定义文件名" ), UIInput( "自定义视频/图片下载文件名", "dy-video-parseVideo-downloadFileName", "{uid}-{nickname}-{desc}-{quality}-{downloadTime}", /*html*/ `
{uid}

:作者id

{nickname}

:作者名

{awemeId}

:视频id

{desc}

:视频描述

{originDesc}

:视频描述(不包含 #话题)

{quality}

:视频清晰度,例如:3840x2160 @60

{downloadTime}

:下载时间,格式为:YYYY-MM-DD_HH_mm_ss

` ), UIInput( "自定义音乐下载文件名", "dy-video-parseVideoMusic-downloadFileName", "{author}-{title}-{duration}-{downloadTime}", /*html*/ `
{album}

:专辑名

{author}

:音乐人

{title}

:音乐名称

{duration}

:播放时长

{downloadTime}

:下载时间,格式为:YYYY-MM-DD_HH_mm_ss

` ), ], }, ], }, { type: "deepMenu", text: "自动隐藏控件", views: [ { type: "container", text: "视频信息", views: [ UISwitch( "自动隐藏视频信息", "dy-video-titleInfoAutoHide", false, void 0, "鼠标移入时自动显示,鼠标移除时自动隐藏" ), UISlider( "延迟自动隐藏的时间", "dy-video-titleInfoAutoHide-delayTime", 3000, 0, 8000, void 0, (value) => { return `${value}ms`; }, "设置首次延迟自动隐藏视频信息的时间,单位(ms)", 100 ), ], }, { type: "container", text: "底部的视频控件", views: [ UISwitch( "自动隐藏视频控件", "dy-video-videoControlsAutoHide", false, void 0, "鼠标移入时自动显示,鼠标移除时自动隐藏" ), UISlider( "延迟自动隐藏的时间", "dy-video-videoControlsAutoHide-delayTime", 3000, 0, 8000, void 0, (value) => { return `${value}ms`; }, "设置首次延迟自动隐藏视频标题的时间,单位(ms)", 100 ), ], }, { type: "container", text: "右侧工具栏", views: [ UISwitch( "自动隐藏右侧工具栏", "dy-video-rightToolBarAutoHide", false, void 0, "鼠标移入时自动显示,鼠标移除时自动隐藏" ), UISlider( "延迟自动隐藏的时间", "dy-video-rightToolBarAutoHide-delayTime", 3000, 0, 8000, void 0, (value) => { return `${value}ms`; }, "设置首次延迟自动隐藏视频标题的时间,单位(ms)", 100 ), ], }, ], }, { text: "视频区域背景色", type: "deepMenu", views: [ { type: "container", text: "", views: [ UISwitch("启用", "dy-video-bgColor-enable", false, void 0, "自定义视频背景色"), UIOwn( ($li) => { const $left = DOMUtils.createElement("div", { className: "pops-panel-item-left-text", innerHTML: /*html*/ `

视频背景颜色

自定义视频背景颜色,包括评论区

`, }); const $right = DOMUtils.createElement("div", { className: "pops-panel-item-right", innerHTML: /*html*/ ` `, }); const $color = $right.querySelector(".pops-color-choose")!; $color.value = Panel.getValue("dy-video-changeBackgroundColor"); const $style = DOMUtils.createElement("style"); DOMUtils.append(document.head, $style); DOMUtils.on($color, ["input", "propertychange"], () => { log.info("选择颜色:" + $color.value); $style.innerHTML = /*css*/ ` #sliderVideo > div{ background: ${$color.value}; } `; Panel.setValue("dy-video-changeBackgroundColor", $color.value); }); $li.appendChild($left); $li.appendChild($right); return $li; }, { "dy-video-changeBackgroundColor": "#000000", }, { text: "视频背景颜色", desc: "自定义视频背景颜色,包括评论区", } ), ], }, ], }, { type: "deepMenu", text: "倍速播放", views: [ { type: "container", text: "", views: [ UISwitch("启用", "dy-video-playbackrate", false, void 0, "快捷键请到功能中设置"), UISelect( "倍速", "dy-video-playbackrate-select-value", 1, [ 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ].map((it) => { return { text: String(it), value: Number(String(it)), }; }), void 0, "选择视频播放的速度" ), ], }, ], }, ], }, ], }, { text: "自定义功能快捷键", type: "deepMenu", views: [ { text: "", type: "container", views: [ UIButtonShortCut( "倍速 -> 小", "视频倍速变小", "dy-video-rate-low", void 0, "点击录入快捷键", void 0, DouYinVideoPlayerShortCut.shortCut ), UIButtonShortCut( "倍速 -> 大", "视频倍速变大", "dy-video-rate-up", void 0, "点击录入快捷键", void 0, DouYinVideoPlayerShortCut.shortCut ), UIButtonShortCut( "沉浸模式(全部)", "可隐藏右侧工具栏、底部信息栏、左上角搜索悬浮栏等", "dy-video-shortcut-immersionMode", void 0, "点击录入快捷键", void 0, DouYinVideoPlayerShortCut.shortCut ), UIButtonShortCut( "沉浸模式(隐藏底部信息区域和右侧工具栏)", "", "dy-video-shortcut-immersionMode-bottomInfoWrap-rightToolBar", void 0, "点击录入快捷键", void 0, DouYinVideoPlayerShortCut.shortCut ), UIButtonShortCut( "切换静音状态", "切换video标签的muted属性", "dy-video-shortcut-changeVideoMuted", void 0, "点击录入快捷键", void 0, DouYinVideoPlayerShortCut.shortCut ), UIButtonShortCut( "视频解析", "解析视频链接", "dy-video-shortcut-parseVideo", void 0, "点击录入快捷键", void 0, DouYinVideoPlayerShortCut.shortCut ), UIButtonShortCut( "倍速播放", "开启/关闭倍速播放功能", "dy-video-shortcut-playbackRate", void 0, "点击录入快捷键", void 0, DouYinVideoPlayerShortCut.shortCut ), ], }, ], }, { type: "deepMenu", text: "禁用快捷键", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { type: "container", text: AutoOpenOrClose.text, views: [ UISwitch("上翻页", "dy-keyboard-hook-arrowUp-w", false, void 0, "W"), UISwitch("下翻页", "dy-keyboard-hook-arrowDown-s", false, void 0, "S"), UISwitch("快退", "dy-keyboard-hook-videoRewind", false, void 0, "A"), UISwitch("快进", "dy-keyboard-hook-videoFastForward", false, void 0, "D"), ], }, ], }, { text: "过滤器", type: "deepMenu", views: [ { text: '点击查看规则', type: "container", views: [ UISwitch("启用", "shieldVideo-exec-network-enable", true, void 0, "开启后以下功能才会生效"), UISwitch( "仅显示被过滤的视频", "shieldVideo-only-show-filtered-video", false, void 0, "只会显示过滤规则命中的视频" ), UISwitch( "新增 {...} 按钮", "shieldVideo-add-parseVideoInfoButton", true, void 0, "在视频的底部的工具栏中显示 {...} 按钮,用于查看视频信息以便于进行添加过滤规则" ), UIButton("视频过滤规则", "可过滤视频", "自定义", void 0, false, false, "primary", () => { DouYinVideoFilter.showView(); }), ], }, { type: "container", text: "", views: [ UIButton("规则导入", "导入自定义的规则", "导入", void 0, false, false, "primary", () => { DouYinVideoFilter.$data.videoFilterRuleStorage.importRules(); }), UIButton("规则导出", "导出自定义的规则", "导出", void 0, false, false, "primary", () => { DouYinVideoFilter.$data.videoFilterRuleStorage.exportRules(SCRIPT_NAME + "-视频过滤规则.json"); }), ], }, ], }, ], }, { text: "", type: "container", views: [ { text: "布局屏蔽-播放器-右侧工具栏", type: "deepMenu", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { text: AutoOpenOrClose.text, type: "container", views: [ UISwitch( "【屏蔽】切换播放", "shieldPlaySwitchButton", false, void 0, "在右侧作者头像上方或者是在右侧区域" ), UISwitch("【屏蔽】AI抖音", "blockAIDouYin"), UISwitch("【屏蔽】作者头像", "shieldAuthorAvatar"), UISwitch( "【屏蔽】直播小窗", "blockUserLiveSmallWindow", false, void 0, "当用户直播时出现在头像左边的小窗口" ), UISwitch("【屏蔽】右侧直播时闪烁的头像", "dy-video-blockUserLiveFlashingAvatar", false), UISwitch("【屏蔽】点赞", "shieldLikeButton"), UISwitch("【屏蔽】评论", "shieldCommentButton"), UISwitch("【屏蔽】收藏", "shieldCollectionButton"), UISwitch("【屏蔽】分享", "shieldSharenButton"), UISwitch("【屏蔽】听抖音", "shieldListenDouYinButton"), UISwitch("【屏蔽】看相关", "shieldRelatedRecommendationsButton"), UISwitch("【屏蔽】更多", "shieldMoreButton", false, void 0, "...按钮"), ], }, ], }, { type: "deepMenu", text: "布局屏蔽-播放器-底部-视频信息", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { type: "container", text: AutoOpenOrClose.text, views: [ UISwitch("【屏蔽】视频信息", "dy-video-bottom-shieldVideoInfoWrap", false), UISwitch( "【屏蔽】点击推荐共xx人推荐", "dy-video-blockClickRecommend", false ), UISwitch( "【屏蔽】视频标题上面的标签", "dy-video-blockTitleTopTag", false, void 0, "例如:每周精选抖音精选游戏评分" ), UISwitch( "【屏蔽】视频标题下面的标签", "dy-video-bottom-shieldVideoUnderTitleTag", false, void 0, "例如:相关搜索AI搜索合集汽水音乐...等" ), UISwitch("【屏蔽】及时接收作品更新提醒", "dy-video-blockClickUpdateReminder", false), UISwitch( "【屏蔽】作者声明", "dy-video-blockAuthorDeclaration", false, void 0, "例如:作者声明:虚构演绎,仅供娱乐" ), UISwitch("【屏蔽】识别画面", "dy-video-blockAIIdentifyTheScreen", false), ], }, ], }, { type: "deepMenu", text: "布局屏蔽-播放器-底部-播放器组件", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { type: "container", text: AutoOpenOrClose.text, views: [ UISwitch("【屏蔽】播放器组件", "shieldBottomVideoToolBar", false, void 0, "整个播放器组件"), UISwitch("【屏蔽】播放", "shieldBottomVideoToolBar-play", false, void 0, "播放|暂停按钮"), UISwitch("【屏蔽】刷新", "shieldBottomVideoToolBar-refresh", false, void 0, "在直播画面时会存在该控件"), UISwitch("【屏蔽】播放时长", "shieldBottomVideoToolBar-time"), UISwitch("【屏蔽】章节要点", "shieldBottomVideoToolbar-blockChapterContainer", false), UISwitch("【屏蔽】弹幕容器", "shieldBottomVideoToolbarDanmuContainer"), UISwitch("【屏蔽】AI笔记", "shieldBottomVideoToolbar-aiNotes"), UISwitch("【屏蔽】连播", "shieldBottomVideoToolbar-autoPlay"), UISwitch("【屏蔽】清屏", "shieldBottomVideoToolbar-clearScreen"), UISwitch("【屏蔽】清晰度", "shieldBottomVideoToolbar-playclarity"), UISwitch("【屏蔽】倍速", "shieldBottomVideoToolbar-playback"), UISwitch("【屏蔽】稍后再看", "shieldBottomVideoToolbar-watchLater"), UISwitch("【屏蔽】小窗模式", "shieldBottomVideoToolbar-miniMode"), UISwitch("【屏蔽】音量", "shieldBottomVideoToolbar-volume"), UISwitch("【屏蔽】网页全屏", "shieldBottomVideoToolbar-pageFullScreen"), UISwitch("【屏蔽】进入全屏", "shieldBottomVideoToolbar-fullScreen"), ], }, ], }, { type: "deepMenu", text: "布局屏蔽-播放器-右键菜单", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { type: "container", text: AutoOpenOrClose.text, views: [ UISwitch("【屏蔽】清屏", "dy-video-player-block-right-menu-clearScreen"), UISwitch("【屏蔽】评论", "dy-video-player-block-right-menu-comment"), UISwitch("【屏蔽】赞", "dy-video-player-block-right-menu-like"), UISwitch("【屏蔽】进入作者主页", "dy-video-player-block-right-menu-enterAuthorHomePage"), UISwitch("【屏蔽】推荐给朋友", "dy-video-player-block-right-menu-recommendToFriends"), UISwitch("【屏蔽】分享", "dy-video-player-block-right-menu-share"), UISwitch("【屏蔽】不感兴趣", "dy-video-player-block-right-menu-notInterested"), UISwitch("【屏蔽】意见反馈", "dy-video-player-block-right-menu-feedback"), UISwitch("【屏蔽】举报", "dy-video-player-block-right-menu-report"), UISwitch("【屏蔽】进入详情页", "dy-video-player-block-right-menu-enterDetailsPage"), ], }, { type: "container", text: "直播视频", views: [ UISwitch("【屏蔽】不感兴趣", "dy-video-player-block-right-menu-live-not-interested"), UISwitch("【屏蔽】举报", "dy-video-player-block-right-menu-live-report"), UISwitch("【屏蔽】在新标签页打开直播间", "dy-video-player-block-right-menu-live-open-blank-room"), ], }, ], }, { type: "deepMenu", text: "布局屏蔽-播放器-其它", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { type: "container", text: AutoOpenOrClose.text, views: [ UISwitch("【屏蔽】右侧的展开评论按钮", "shieldRightExpandCommentButton"), UISwitch("【屏蔽】搜索悬浮栏", "shieldSearchFloatingBar", false, void 0, "一般出现在左上角"), UISwitch( "【屏蔽】网页全屏关闭按钮", "shieldCloseFullScreenButton", false, void 0, "一般开启网页全屏后出现在左上角" ), UISwitch( "【屏蔽】购物信息", "dy-video-blockShopInfo", true, void 0, "该元素出现在视频底部的用户名、标题信息的上面" ), UISwitch("【屏蔽】弹幕", "dy-video-blockDanmaku"), UISwitch( "【屏蔽】中间的播放图标", "dy-video-blockStartPlayIcon", false, void 0, "该图标暂停视频时显示在视频中间" ), UISwitch("【屏蔽】ESC或Y可退出网页全屏", "dy-video-watchAndRemoveFullScreenTip", false), ], }, ], }, { text: "布局屏蔽-评论区", type: "deepMenu", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { type: "container", text: AutoOpenOrClose.text, views: [ UISwitch("【屏蔽】详情", "dy-video-comment-blockDetails"), UISwitch("【屏蔽】TA的作品", "dy-video-comment-blockTAWork"), UISwitch("【屏蔽】评论", "dy-video-comment-blockComment"), UISwitch("【屏蔽】合集", "dy-video-comment-blockCollection"), UISwitch("【屏蔽】问AI", "dy-video-comment-blockAskAI"), UISwitch("【屏蔽】相关推荐", "dy-video-comment-blockRelatedRecommend"), ], }, { type: "container", text: "", views: [ UISwitch("【屏蔽】回复", "dy-video-comment-blockReply"), UISwitch("【屏蔽】分享", "dy-video-comment-blockShare"), UISwitch("【屏蔽】点赞", "dy-video-comment-blockLike"), UISwitch("【屏蔽】不喜欢", "dy-video-comment-blockDislike"), ], }, { type: "container", text: "", views: [ UISwitch("【屏蔽】底部的评论工具栏", "dy-video-shieldUserCommentToolBar"), UISwitch( "【屏蔽】大家都在搜", "dy-video-shieldUserCommentEveryOneAllSearch", false, void 0, "在评论区的顶部出现" ), ], }, ], }, { type: "deepMenu", text: "布局屏蔽-直播", afterEnterDeepMenuCallBack: AutoOpenOrClose.afterEnterDeepMenuCallBack, views: [ { type: "container", text: AutoOpenOrClose.text, views: [ UISwitch( "【屏蔽】点击或按F进入直播间", "dy-video-live-block-tipClickOrKeyboardFEnterLiveRoom" ), UISwitch("【屏蔽】小黄车", "dy-video-live-block-yellowCar"), UISwitch("【屏蔽】本场高光", "dy-video-live-block-highlight"), ], }, { type: "container", text: "播放器组件", views: [UISwitch("【屏蔽】刷新", "dy-video-live-block-playComponents-refresh")], }, ], }, ], }, ], };