#!name = YouTube #!desc = YouTube 增强及双语字幕 #!category = 去广告 #!date = 2024-10-25 16:16:34 #!version = 1.5.4 #!arguments = Type:"Official",Types:"Translate",AutoCC:true,ShowOnly:false,Position:"Forward" #!arguments-desc = Type: [字幕]启用类型\n ├ Official: 官方字幕(合成器)\n └ Translate: 翻译字幕(翻译器)\n请选择要使用的字幕,双语字幕将使用您选择类型呈现。\n\nTypes: [歌词]启用类型\n └ Translate: 翻译歌词(翻译器)\n请选择要添加的歌词选项,如果为多选,则会自动决定提供的歌词类型。\n\nAutoCC: [字幕]自动显示\n是否总是自动开启字幕显示。\n\nShowOnly: [字幕]只显示“自动翻译”字幕\n是否仅显示“自动翻译”后的字幕,不显示源语言字幕。\n\nPosition: [字幕]主语言(源语言)字幕位置\n ├ Forward: 上面(第一行)\n └ Reverse: 下面(第二行)\n主语言(源语言)字幕的显示位置。\n [Rule] URL-REGEX,^https?:\/\/([\w-]+)\.googlevideo\.com\/initplayback(\?.*oad=.+)$,REJECT-TINYGIF AND, ((DOMAIN-SUFFIX, googlevideo.com,extended-matching), (PROTOCOL, QUIC)), REJECT AND, ((DOMAIN-SUFFIX, youtubei.googleapis.com,extended-matching), (PROTOCOL, QUIC)), REJECT [Map Local] # 使用reject-dict方法以减少开销 ^https?:\/\/[\w-]+\.googlevideo\.com\/initplayback.+&oad data-type=text data="{}" status-code=200 [Script] # YouTube YouTube.Player.request.json = type=http-request, pattern=^https?:\/\/(www|m|tv)\.youtube\.com\/youtubei\/v1\/player(\?.+)?$, requires-body=1, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/request.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.Player.response.json = type=http-response, pattern=^https?:\/\/(www|m|tv)\.youtube\.com\/youtubei\/v1\/player(\?.+)?$, requires-body=1, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/response.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.Player.request.proto = type=http-request, pattern=^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/player(\?.+)?$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/request.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.Player.response.proto = type=http-response, pattern=^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/player(\?.+)?$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/response.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.GetWatch.response.proto = type=http-response, pattern=^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/get_watch(\?.+)?$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/response.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.TimedText.request = type=http-request, pattern=^https?:\/\/(www|m)\.youtube\.com\/api\/timedtext(\?.+)?$, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/request.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.Composite.TimedText.response = type=http-response, pattern=^https?:\/\/(www|m)\.youtube\.com\/api\/timedtext\?(.*)subtype=(Official|External), requires-body=1, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/Composite.Subtitles.response.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.Translate.TimedText.response = type=http-response, pattern=^https?:\/\/(www|m)\.youtube\.com\/api\/timedtext\?(.*)subtype=Translate, requires-body=1, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/Translate.response.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.Remove.ads.request = type=http-request, pattern=^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|reel\/reel_watch_sequence|get_watch), script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/remove.request.js, requires-body=true, binary-body-mode=true YouTube.Remove.ads.response = type=http-response, pattern=^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|search|reel\/reel_watch_sequence|guide|account\/get_setting|get_watch), script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/remove.response.js, requires-body=true, binary-body-mode=true # YouTube Music YouTubeMusic.Browse.request.json = type=http-request, pattern=^https?:\/\/music\.youtube\.com\/youtubei\/v1\/browse(\?.+)?$, requires-body=1, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/request.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTube.Browse.request.proto = type=http-request, pattern=^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/browse(\?.+)?$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/request.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTubeMusic.Translate.Lyrics.response.json = type=http-response, pattern=^https?:\/\/music\.youtube\.com\/youtubei\/v1\/browse\?(.*)subtype=Translate, requires-body=1, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/Translate.response.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" YouTubeMusic.Translate.Lyrics.response.proto = type=http-response, pattern=^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/browse\?(.*)subtype=Translate, requires-body=1, binary-body-mode=1, script-path=https://raw.githubusercontent.com/myouhi/Surge/master/scripts/youtube/Translate.response.bundle.js, argument=Type="{{{Type}}}"&Types="{{{Types}}}"&AutoCC="{{{AutoCC}}}"&ShowOnly="{{{ShowOnly}}}"&Position="{{{Position}}}" [MITM] hostname = %APPEND% www.youtube.com, m.youtube.com, tv.youtube.com, music.youtube.com, youtubei.googleapis.com, -redirector*.googlevideo.com, *.googlevideo.com