mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Merge pull request #3798 from Seaward233/preview-features
新增下载视频时选择是否使用备用下载地址的功能
This commit is contained in:
commit
df8899123a
@ -45,6 +45,10 @@
|
|||||||
正在计算大小
|
正在计算大小
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<div class="download-video-config-item">
|
||||||
|
<div class="download-video-config-title">使用备用下载地址:</div>
|
||||||
|
<SwitchBox v-model="useBackupUrls" />
|
||||||
|
</div>
|
||||||
<component
|
<component
|
||||||
:is="a.component"
|
:is="a.component"
|
||||||
v-for="a of assetsWithOptions"
|
v-for="a of assetsWithOptions"
|
||||||
@ -86,7 +90,7 @@ import { getComponentSettings } from '@/core/settings'
|
|||||||
import { matchUrlPattern } from '@/core/utils'
|
import { matchUrlPattern } from '@/core/utils'
|
||||||
import { logError } from '@/core/utils/log'
|
import { logError } from '@/core/utils/log'
|
||||||
import { formatFileSize } from '@/core/utils/formatters'
|
import { formatFileSize } from '@/core/utils/formatters'
|
||||||
import { VPopup, VButton, VDropdown, VIcon } from '@/ui'
|
import { VPopup, VButton, VDropdown, VIcon, SwitchBox } from '@/ui'
|
||||||
import { registerAndGetData } from '@/plugins/data'
|
import { registerAndGetData } from '@/plugins/data'
|
||||||
import { allQualities, VideoQuality } from '@/components/video/video-quality'
|
import { allQualities, VideoQuality } from '@/components/video/video-quality'
|
||||||
import { Toast } from '@/core/toast'
|
import { Toast } from '@/core/toast'
|
||||||
@ -127,6 +131,7 @@ const { basicConfig } = getComponentSettings('downloadVideo').options as {
|
|||||||
api: string
|
api: string
|
||||||
quality: number
|
quality: number
|
||||||
output: string
|
output: string
|
||||||
|
useBackupUrls: boolean
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const filterData = <T extends { match?: TestPattern }>(items: T[]) => {
|
const filterData = <T extends { match?: TestPattern }>(items: T[]) => {
|
||||||
@ -146,6 +151,7 @@ export default Vue.extend({
|
|||||||
VButton,
|
VButton,
|
||||||
VDropdown,
|
VDropdown,
|
||||||
VIcon,
|
VIcon,
|
||||||
|
SwitchBox,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
triggerElement: {
|
triggerElement: {
|
||||||
@ -154,6 +160,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
const lastOutput = basicConfig.output
|
const lastOutput = basicConfig.output
|
||||||
|
const lastUseBackupUrls = basicConfig.useBackupUrls
|
||||||
return {
|
return {
|
||||||
open: false,
|
open: false,
|
||||||
busy: false,
|
busy: false,
|
||||||
@ -173,6 +180,7 @@ export default Vue.extend({
|
|||||||
selectedApi: undefined,
|
selectedApi: undefined,
|
||||||
outputs,
|
outputs,
|
||||||
selectedOutput: outputs.find(it => it.name === lastOutput) || outputs[0],
|
selectedOutput: outputs.find(it => it.name === lastOutput) || outputs[0],
|
||||||
|
useBackupUrls: lastUseBackupUrls || false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -218,6 +226,12 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
basicConfig.output = output.name
|
basicConfig.output = output.name
|
||||||
},
|
},
|
||||||
|
useBackupUrls(useBackupUrls: boolean) {
|
||||||
|
if (useBackupUrls === undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
basicConfig.useBackupUrls = useBackupUrls
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
coreApis.observer.videoChange(() => {
|
coreApis.observer.videoChange(() => {
|
||||||
@ -304,6 +318,16 @@ export default Vue.extend({
|
|||||||
Toast.info('未接收到可下载数据, 请检查输入源和格式是否适用于当前视频.', '下载视频', 3000)
|
Toast.info('未接收到可下载数据, 请检查输入源和格式是否适用于当前视频.', '下载视频', 3000)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (this.useBackupUrls) {
|
||||||
|
videoInfos.forEach(videoInfo => {
|
||||||
|
videoInfo.fragments.forEach(fragment => {
|
||||||
|
fragment.url =
|
||||||
|
fragment.backupUrls && fragment.backupUrls.length !== 0
|
||||||
|
? fragment.backupUrls.at(0)
|
||||||
|
: fragment.url
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
const action = new DownloadVideoAction(videoInfos)
|
const action = new DownloadVideoAction(videoInfos)
|
||||||
const extraAssets = (
|
const extraAssets = (
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user