Skip to content

Commit

Permalink
Merge pull request #4449 from xfoxfu/preview-features
Browse files Browse the repository at this point in the history
feat: 允许配置视频下载文件拓展名
  • Loading branch information
the1812 authored Sep 23, 2023
2 parents fa5863e + 7989b6e commit 6777f62
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 11 deletions.
21 changes: 18 additions & 3 deletions registry/lib/components/video/download/apis/dash.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@ import {
DownloadVideoInputItem,
} from '../types'
import { bangumiApi, videoApi } from './url'
import { Options } from '..'
import { getComponentSettings } from '@/core/settings'

/** dash 格式更明确的扩展名 */
export const DashExtensions = {
export const DefaultDashExtensions = {
video: '.mp4',
audio: '.m4a',
flacAudio: '.flac',
Expand All @@ -27,7 +29,7 @@ export enum DashCodec {
Av1 = 'AV1',
}
export interface Dash {
type: keyof typeof DashExtensions
type: keyof typeof DefaultDashExtensions
bandWidth: number
codecs: string
codecId: number
Expand All @@ -50,12 +52,25 @@ export interface DashFilters {
video?: (dash: VideoDash) => boolean
audio?: (dash: AudioDash) => boolean
}
const getDashExtensions = (type: keyof typeof DefaultDashExtensions): string => {
const { options } = getComponentSettings<Options>('downloadVideo')
if (type === 'video') {
return options.dashVideoExtension
}
if (type === 'audio') {
return options.dashAudioExtension
}
if (type === 'flacAudio') {
return options.dashFlacAudioExtension
}
return DefaultDashExtensions[type] ?? DashFragmentExtension
}
const dashToFragment = (dash: Dash): DownloadVideoFragment => ({
url: dash.downloadUrl,
backupUrls: dash.backupUrls,
length: dash.duration,
size: Math.trunc((dash.bandWidth * dash.duration) / 8),
extension: DashExtensions[dash.type] ?? DashFragmentExtension,
extension: getDashExtensions(dash.type),
})
export const dashToFragments = (info: {
videoDashes: VideoDash[]
Expand Down
35 changes: 27 additions & 8 deletions registry/lib/components/video/download/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
import { defineComponentMetadata } from '@/components/define'
import {
OptionsOfMetadata,
defineComponentMetadata,
defineOptionsMetadata,
} from '@/components/define'
import { hasVideo } from '@/core/spin-query'
import { DefaultDashExtensions } from './apis/dash'

const options = defineOptionsMetadata({
basicConfig: {
defaultValue: {},
displayName: '基础配置',
hidden: true,
},
dashVideoExtension: {
defaultValue: DefaultDashExtensions.video,
displayName: 'DASH 视频扩展名',
},
dashAudioExtension: {
defaultValue: DefaultDashExtensions.audio,
displayName: 'DASH 普通音频扩展名',
},
dashFlacAudioExtension: {
defaultValue: DefaultDashExtensions.flacAudio,
displayName: 'DASH FLAC 音频扩展名',
},
})
export type Options = OptionsOfMetadata<typeof options>
export const component = defineComponentMetadata({
name: 'downloadVideo',
displayName: '下载视频',
Expand All @@ -12,12 +37,6 @@ export const component = defineComponentMetadata({
condition: () => hasVideo(),
},
tags: [componentsTags.video],
options: {
basicConfig: {
defaultValue: {},
displayName: '基础配置',
hidden: true,
},
},
options,
// plugin,
})

0 comments on commit 6777f62

Please sign in to comment.