mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Use aid in place of title
This commit is contained in:
parent
906c4c9507
commit
2580df59f8
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
<div class=download-video><a v-bind:href=blobUrl id=video-complete style="display: none"></a><div class=header><h1>下载视频</h1><i class="mdi mdi-close"v-on:click=close()></i></div><div v-if=batch class=tabs><div class="tab download-single"v-bind:class="{active: downloadSingle}"v-on:click="downloadSingle = true">单个视频</div><div class="tab download-batch"v-bind:class="{active: !downloadSingle}"v-on:click="downloadSingle = false">批量导出</div></div><div class=info><img v-show=downloadSingle v-bind:src=coverUrl class=cover><div class=title><span v-if=downloadSingle class=bold v-bind:title="title + epTitle">{{title}}{{epTitle}}</span><span v-else class=bold v-bind:title=title>{{title}}</span><span v-show=downloadSingle class=size><div v-if=sizeWarning class=size-warning><i class="mdi mdi-alert-circle"></i><div class=size-warning-tip>警告: 过大的视频大小会在直接下载时占用大量内存, 并可能导致浏览器标签页崩溃. 请考虑降低清晰度或使用导出选项.</div></div>{{displaySize}}</span><span v-show=!downloadSingle class=size>共{{episodeList.length}}P</span></div></div><div class=options><div class=option-item>清晰度<v-dropdown v-on:change=formatChange() v-bind:model=qualityModel></v-dropdown></div><div class=option-item>弹幕<v-dropdown v-on:change=danmakuOptionChange() v-bind:model=danmakuModel></v-dropdown></div></div><div class=separator></div><div v-show=downloadSingle class=direct-download><h2>直接下载</h2><button v-if=!downloading class="primary start-download"v-on:click=startDownload()>开始</button><button v-else class="primary cancel-download"v-on:click=cancelDownload()>取消</button><div class=progress><div class=background><div class=foreground v-bind:style="{width: progressPercent + '%'}"></div></div><span class=percent>{{progressPercent}}%</span></div></div><div v-show=!downloadSingle class=batch-download><div class=episode-header><h2>选集</h2><button class=list-tool title=全选 v-on:click=selectAllEpisodes()><i class="mdi mdi-checkbox-multiple-marked-circle"></i></button><button class=list-tool title=全不选 v-on:click=unselectAllEpisodes()><i class="mdi mdi-checkbox-multiple-blank-circle-outline"></i></button><button class=list-tool title=反选 v-on:click=inverseAllEpisodes()><i class="mdi mdi-circle-slice-4"></i></button><span class=selected-count>{{selectedEpisodeCount}}/{{episodeList.length}}</span></div><div class=episode-list><v-checkbox v-for="ep of episodeList"v-bind:key=ep.index v-bind:model=ep></v-checkbox></div></div><div class=separator></div><div class=exports><h2>导出</h2><div class=actions><button class=copy-link v-bind:disabled="downloadSingle ? null : 'disabled'"v-on:click="exportData('copyLink')">复制链接</button><button class=aria2-file v-on:click="exportData('aria2')">导出aria2</button><button class=vld-copy v-on:click="exportData('copyVLD')">复制vld数据</button><button class=vld-export v-on:click="exportData('exportVLD')">导出vld数据</button></div></div></div>
|
<div class=download-video><a v-bind:href=blobUrl id=video-complete style="display: none"></a><div class=header><h1>下载视频</h1><i class="mdi mdi-close"v-on:click=close()></i></div><div v-if=batch class=tabs><div class="tab download-single"v-bind:class="{active: downloadSingle}"v-on:click="downloadSingle = true">单个视频</div><div class="tab download-batch"v-bind:class="{active: !downloadSingle}"v-on:click="downloadSingle = false">批量导出</div></div><div class=info><img v-show=downloadSingle v-bind:src=coverUrl class=cover><div class=title><span class=bold v-bind:title=aid>av{{aid}}</span><span v-show=downloadSingle class=size><div v-if=sizeWarning class=size-warning><i class="mdi mdi-alert-circle"></i><div class=size-warning-tip>警告: 过大的视频大小会在直接下载时占用大量内存, 并可能导致浏览器标签页崩溃. 请考虑降低清晰度或使用导出选项.</div></div>{{displaySize}}</span><span v-show=!downloadSingle class=size>共{{episodeList.length}}P</span></div></div><div class=options><div class=option-item>清晰度<v-dropdown v-on:change=formatChange() v-bind:model=qualityModel></v-dropdown></div><div class=option-item>弹幕<v-dropdown v-on:change=danmakuOptionChange() v-bind:model=danmakuModel></v-dropdown></div></div><div class=separator></div><div v-show=downloadSingle class=direct-download><h2>直接下载</h2><button v-if=!downloading class="primary start-download"v-on:click=startDownload()>开始</button><button v-else class="primary cancel-download"v-on:click=cancelDownload()>取消</button><div class=progress><div class=background><div class=foreground v-bind:style="{width: progressPercent + '%'}"></div></div><span class=percent>{{progressPercent}}%</span></div></div><div v-show=!downloadSingle class=batch-download><div class=episode-header><h2>选集</h2><button class=list-tool title=全选 v-on:click=selectAllEpisodes()><i class="mdi mdi-checkbox-multiple-marked-circle"></i></button><button class=list-tool title=全不选 v-on:click=unselectAllEpisodes()><i class="mdi mdi-checkbox-multiple-blank-circle-outline"></i></button><button class=list-tool title=反选 v-on:click=inverseAllEpisodes()><i class="mdi mdi-circle-slice-4"></i></button><span class=selected-count>{{selectedEpisodeCount}}/{{episodeList.length}}</span></div><div class=episode-list><v-checkbox v-for="ep of episodeList"v-bind:key=ep.index v-bind:model=ep></v-checkbox></div></div><div class=separator></div><div class=exports><h2>导出</h2><div class=actions><button class=copy-link v-bind:disabled="downloadSingle ? null : 'disabled'"v-on:click="exportData('copyLink')">复制链接</button><button class=aria2-file v-on:click="exportData('aria2')">导出aria2</button><button class=vld-copy v-on:click="exportData('copyVLD')">复制vld数据</button><button class=vld-export v-on:click="exportData('exportVLD')">导出vld数据</button></div></div></div>
|
||||||
2
min/download-video.min.js
vendored
2
min/download-video.min.js
vendored
File diff suppressed because one or more lines are too long
2
min/gui-settings.min.css
vendored
2
min/gui-settings.min.css
vendored
File diff suppressed because one or more lines are too long
@ -48,7 +48,7 @@
|
|||||||
body.dark .gui-settings,
|
body.dark .gui-settings,
|
||||||
body.dark .gui-settings-widgets
|
body.dark .gui-settings-widgets
|
||||||
{
|
{
|
||||||
background-color: rgba(0,0,0,0.75);
|
background-color: rgba(0,0,0,0.3);
|
||||||
}
|
}
|
||||||
.gui-settings:hover,
|
.gui-settings:hover,
|
||||||
.gui-settings-widgets:hover
|
.gui-settings-widgets:hover
|
||||||
|
|||||||
@ -107,16 +107,13 @@ body.dark .download-video {
|
|||||||
}
|
}
|
||||||
.v-dropdown {
|
.v-dropdown {
|
||||||
position: relative;
|
position: relative;
|
||||||
background-color: #ededed;
|
background-color: #8884;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
min-width: 100px;
|
min-width: 100px;
|
||||||
}
|
}
|
||||||
body.dark .v-dropdown {
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
.v-dropdown .dropdown-menu {
|
.v-dropdown .dropdown-menu {
|
||||||
transform-origin: top;
|
transform-origin: top;
|
||||||
transform: scaleY(0) translateX(-50%);
|
transform: scaleY(0) translateX(-50%);
|
||||||
|
|||||||
@ -13,8 +13,7 @@
|
|||||||
<div class="info">
|
<div class="info">
|
||||||
<img v-show="downloadSingle" v-bind:src="coverUrl" class="cover">
|
<img v-show="downloadSingle" v-bind:src="coverUrl" class="cover">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span v-if="downloadSingle" class="bold" v-bind:title="title + epTitle">{{title}}{{epTitle}}</span>
|
<span class="bold" v-bind:title="aid">av{{aid}}</span>
|
||||||
<span v-else class="bold" v-bind:title="title">{{title}}</span>
|
|
||||||
<span v-show="downloadSingle" class="size">
|
<span v-show="downloadSingle" class="size">
|
||||||
<div v-if="sizeWarning" class="size-warning">
|
<div v-if="sizeWarning" class="size-warning">
|
||||||
<i class="mdi mdi-alert-circle"></i>
|
<i class="mdi mdi-alert-circle"></i>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { getFriendlyTitle, formatTitle } from '../title';
|
import { getFriendlyTitle } from '../title';
|
||||||
import { VideoInfo, DanmakuInfo } from '../video-info';
|
import { VideoInfo, DanmakuInfo } from '../video-info';
|
||||||
class Video {
|
class Video {
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -473,8 +473,7 @@ async function loadPanel() {
|
|||||||
data: {
|
data: {
|
||||||
downloadSingle: true,
|
downloadSingle: true,
|
||||||
coverUrl: '',
|
coverUrl: '',
|
||||||
title: '',
|
aid: pageData.aid,
|
||||||
epTitle: '',
|
|
||||||
qualityModel: {
|
qualityModel: {
|
||||||
value: selectedFormat.displayName,
|
value: selectedFormat.displayName,
|
||||||
items: formats.map(f => f.displayName)
|
items: formats.map(f => f.displayName)
|
||||||
@ -702,12 +701,15 @@ async function loadPanel() {
|
|||||||
});
|
});
|
||||||
Observer.videoChange(async () => {
|
Observer.videoChange(async () => {
|
||||||
panel.close();
|
panel.close();
|
||||||
|
panel.batch = false;
|
||||||
|
panel.downloadSingle = true;
|
||||||
const button = dq('#download-video');
|
const button = dq('#download-video');
|
||||||
const canDownload = await loadPageData();
|
const canDownload = await loadPageData();
|
||||||
button.style.display = canDownload ? 'flex' : 'none';
|
button.style.display = canDownload ? 'flex' : 'none';
|
||||||
if (!canDownload) {
|
if (!canDownload) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
panel.aid = pageData.aid;
|
||||||
const videoInfo = new VideoInfo(pageData.aid);
|
const videoInfo = new VideoInfo(pageData.aid);
|
||||||
await videoInfo.fetchInfo();
|
await videoInfo.fetchInfo();
|
||||||
panel.coverUrl = videoInfo.coverUrl.replace('http:', 'https:');
|
panel.coverUrl = videoInfo.coverUrl.replace('http:', 'https:');
|
||||||
@ -718,22 +720,6 @@ async function loadPanel() {
|
|||||||
items: formats.map(f => f.displayName)
|
items: formats.map(f => f.displayName)
|
||||||
};
|
};
|
||||||
panel.formatChange();
|
panel.formatChange();
|
||||||
(async () => {
|
|
||||||
await SpinQuery.condition(() => document.querySelector('.video-toolbar .ops .coin,.tool-bar .coin-info'), it => {
|
|
||||||
return it !== null && it.innerText !== '--';
|
|
||||||
});
|
|
||||||
panel.title = formatTitle('[title]', false);
|
|
||||||
SpinQuery.select('#eplist_module li.cursor').then(li => {
|
|
||||||
if (li !== null) {
|
|
||||||
panel.epTitle = ' - ' + li.innerText;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
SpinQuery.select('#multi_page .cur-list>ul li.on a').then(a => {
|
|
||||||
if (a !== null) {
|
|
||||||
panel.epTitle = ' - ' + a.getAttribute('title');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})();
|
|
||||||
await panel.checkBatch();
|
await panel.checkBatch();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -499,8 +499,7 @@ async function loadPanel() {
|
|||||||
data: {
|
data: {
|
||||||
downloadSingle: true,
|
downloadSingle: true,
|
||||||
coverUrl: '',
|
coverUrl: '',
|
||||||
title: '',
|
aid: pageData.aid,
|
||||||
epTitle: '',
|
|
||||||
qualityModel: {
|
qualityModel: {
|
||||||
value: selectedFormat!.displayName,
|
value: selectedFormat!.displayName,
|
||||||
items: formats.map(f => f.displayName)
|
items: formats.map(f => f.displayName)
|
||||||
@ -735,6 +734,8 @@ async function loadPanel() {
|
|||||||
if (!canDownload) {
|
if (!canDownload) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
panel.aid = pageData.aid
|
||||||
const videoInfo = new VideoInfo(pageData.aid)
|
const videoInfo = new VideoInfo(pageData.aid)
|
||||||
await videoInfo.fetchInfo()
|
await videoInfo.fetchInfo()
|
||||||
panel.coverUrl = videoInfo.coverUrl.replace('http:', 'https:')
|
panel.coverUrl = videoInfo.coverUrl.replace('http:', 'https:')
|
||||||
@ -745,27 +746,8 @@ async function loadPanel() {
|
|||||||
value: selectedFormat.displayName,
|
value: selectedFormat.displayName,
|
||||||
items: formats.map(f => f.displayName)
|
items: formats.map(f => f.displayName)
|
||||||
}
|
}
|
||||||
panel.formatChange();
|
panel.formatChange()
|
||||||
(async () => {
|
|
||||||
await SpinQuery.condition(
|
|
||||||
() => document.querySelector('.video-toolbar .ops .coin,.tool-bar .coin-info'),
|
|
||||||
it => {
|
|
||||||
return it !== null && (it as HTMLElement).innerText !== '--'
|
|
||||||
})
|
|
||||||
panel.title = formatTitle('[title]', false)
|
|
||||||
SpinQuery.select('#eplist_module li.cursor').then(li => {
|
|
||||||
if (li !== null) {
|
|
||||||
panel.epTitle = ' - ' + li.innerText
|
|
||||||
}
|
|
||||||
})
|
|
||||||
SpinQuery.select('#multi_page .cur-list>ul li.on a').then(a => {
|
|
||||||
if (a !== null) {
|
|
||||||
panel.epTitle = ' - ' + a.getAttribute('title')!
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})()
|
|
||||||
await panel.checkBatch()
|
await panel.checkBatch()
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user