mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Use mp4/m4a for dash extensions
This commit is contained in:
parent
ec35b9f160
commit
d2acf71d01
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -47,7 +47,7 @@
|
||||
"download-video-package.min.js": "B10FF11DE7DFBACEC38F195B8E836511E527215B5E177CB1D223D14F30EB1435",
|
||||
"download-video.min.css": "95FF9DA3C1FFF1C1134D70AE3BB609049B7D5D3FBB71CAAAE84C8742C51AD841",
|
||||
"download-video.min.html": "2727789E8423E8DBC8801FF6AC0D8181AC684A643A83CD446A5D69318DDBF9F6",
|
||||
"download-video.min.js": "2485F8AB5A4A4E5E7F40388ACD1657C9ABD1B2279C62BEA4AA3728E80F706C0F",
|
||||
"download-video.min.js": "4013A2F8DB6B2859DF83EFEC32274158ABA1769536D8656537E2FCDF96560AD8",
|
||||
"dpi-img.vue.min.js": "3D9D93079365DCABA8DC8970F051AD1A7F25C3EFFF850CD1000C4312E9B910DD",
|
||||
"expand-danmaku.min.js": "B21658C40085AEA8DC49652AE62EB8610BB2EBEAF7A9C9AF69EF3B11E08EEC8D",
|
||||
"expand-description.min.css": "58C7710A50521B80F7D872BDC4C652610D84C4FABC6874BA66DA37B4F8759224",
|
||||
@ -56,7 +56,7 @@
|
||||
"feeds-apis.min.js": "ED1FFDEBC22680C5089F9D30CF667535FB99881C96A969DB47BC70BF095A99E8",
|
||||
"feeds-filter-card.vue.min.js": "3A7F8F402EA46E43B718506329814953C9E358A8AF94088D4E5745D48296D80B",
|
||||
"feeds-filter.min.js": "10557E498B8BADA3C1C03E8C1DCD6FB24DBA2DA27A5A03BD861054F7E2989D46",
|
||||
"ffmpeg-support.min.js": "E3D90A111457F7093BE2DBBC011B268B497351CCFF987394A34171F77146A9B2",
|
||||
"ffmpeg-support.min.js": "CB33E150098394ABCACE6FC45CC1C6DA1B71012C77265D93F23C555A532016A1",
|
||||
"fill-with-comments.min.js": "5D52ACB5057267C2EEBA5AA74EEE5D4086215645623560825C25AAA133536F2F",
|
||||
"filter-type-switch.vue.min.js": "E06B00EF48F3CCFACC82B858A266CE0DF48F8332C5900B3AD579330D4C6D3125",
|
||||
"fix-fullscreen.min.js": "C0628A7CABB4421FCBD7663700EF9965C96F6D79979B9F7523A9F9B0B009C8B6",
|
||||
|
||||
BIN
min/bundle.zip
BIN
min/bundle.zip
Binary file not shown.
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/ffmpeg-support.min.js
vendored
2
min/ffmpeg-support.min.js
vendored
@ -1 +1 @@
|
||||
(()=>{return(e,t)=>{const n=(e,t,n)=>{if(e<2){return null}const r=[];for(let s=1;s<=e;s++){r.push(escapeFilename(`file '${t} - ${s}${n}'`))}return r.join("\n")};const r=(e,t)=>{const n=e=>e.fragments.length>1;const r=e.filter(n);if(r.length===0){return null}const s=new Map;r.forEach(e=>{s.set(escapeFilename(`ffmpeg-files-${e.title}.txt`),e.fragments.map((n,r)=>{return escapeFilename(`file '${e.title} - ${r+1}${t}'`)}).join("\n"))});return s};const s=(e,t)=>{const n=[];e.forEach(e=>{e.fragments.forEach((r,s)=>{let i="";if(e.fragments.length>1){i=` - ${s+1}`}n.push(escapeFilename(`file '${e.title}${i}${t}'`))})});return n.join("\n")};return{export:{getFragmentsList:n,getBatchFragmentsList:r,getBatchEpisodesList:s}}}})();
|
||||
(()=>{return(e,t)=>{const n=(e,t,n)=>{if(e<2){return null}const s=[];for(let r=1;r<=e;r++){let e=` - ${r}`;if(n.includes(".m4a")){e=""}s.push(escapeFilename(`file '${t}${e}${n[r-1]}'`))}return s.join("\n")};const s=(e,t)=>{const n=e=>e.fragments.length>1;const s=e.filter(n);if(s.length===0){return null}const r=new Map;s.forEach(e=>{r.set(escapeFilename(`ffmpeg-files-${e.title}.txt`),e.fragments.map((n,s)=>{return escapeFilename(`file '${e.title} - ${s+1}${t[s]}'`)}).join("\n"))});return r};const r=(e,t)=>{const n=[];e.forEach(e=>{e.fragments.forEach((s,r)=>{let i="";if(e.fragments.length>1&&!t.includes(".m4a")){i=` - ${r+1}`}n.push(escapeFilename(`file '${e.title}${i}${t[r]}'`))})});return n.join("\n")};return{export:{getFragmentsList:n,getBatchFragmentsList:s,getBatchEpisodesList:r}}}})();
|
||||
@ -325,7 +325,7 @@ class VideoDownloader {
|
||||
const option = settings.aria2RpcOption
|
||||
const params = this.fragments.map((fragment, index) => {
|
||||
let indexNumber = ''
|
||||
if (this.fragments.length > 1) {
|
||||
if (this.fragments.length > 1 && !this.isDash) {
|
||||
indexNumber = ' - ' + (index + 1)
|
||||
}
|
||||
const params = []
|
||||
@ -355,7 +355,7 @@ class VideoDownloader {
|
||||
# https://github.com/the1812/Bilibili-Evolved/
|
||||
${this.fragments.map((it, index) => {
|
||||
let indexNumber = ''
|
||||
if (this.fragments.length > 1) {
|
||||
if (this.fragments.length > 1 && !this.isDash) {
|
||||
indexNumber = ' - ' + (index + 1)
|
||||
}
|
||||
return `
|
||||
@ -380,10 +380,11 @@ ${it.url}
|
||||
const match = [
|
||||
'.flv',
|
||||
'.mp4',
|
||||
'.m4s',
|
||||
].find(it => f.url.includes(it))
|
||||
if (match) {
|
||||
return match
|
||||
} else if (f.url.includes('.m4s')) {
|
||||
return this.fragments.indexOf(f) === 0 ? '.mp4' : '.m4a'
|
||||
} else {
|
||||
console.warn('No extension detected.')
|
||||
return '.flv'
|
||||
@ -488,14 +489,12 @@ ${it.url}
|
||||
downloadedData.forEach((data, index) => {
|
||||
let filename: string
|
||||
const fragment = this.fragments[index]
|
||||
if (downloadedData.length > 1) {
|
||||
if (downloadedData.length > 1 && !this.isDash) {
|
||||
filename = `${title} - ${index + 1}${this.extension(fragment)}`
|
||||
} else {
|
||||
filename = `${title}${this.extension(fragment)}`
|
||||
}
|
||||
pack.add(filename, new Blob(Array.isArray(data) ? data : [data], {
|
||||
type: this.extension(fragment) === '.flv' ? 'video/x-flv' : 'video/mp4'
|
||||
}))
|
||||
pack.add(filename, new Blob(Array.isArray(data) ? data : [data]))
|
||||
})
|
||||
const danmaku = await this.downloadDanmaku()
|
||||
pack.add(
|
||||
@ -746,7 +745,7 @@ async function loadPanel() {
|
||||
} else {
|
||||
const { getFragmentsList } = await import('./ffmpeg-support')
|
||||
const pack = new DownloadVideoPackage()
|
||||
pack.add('ffmpeg-files.txt', getFragmentsList(videoDownloader.fragments.length, getFriendlyTitle(), videoDownloader.extension(videoDownloader.fragments[0])))
|
||||
pack.add('ffmpeg-files.txt', getFragmentsList(videoDownloader.fragments.length, getFriendlyTitle(), videoDownloader.fragments.map(f => videoDownloader.extension(f))))
|
||||
await pack.emit()
|
||||
}
|
||||
break
|
||||
@ -833,7 +832,8 @@ async function loadPanel() {
|
||||
const items = await batchExtractor.getRawItems(format)
|
||||
const videoDownloader = new VideoDownloader(format, items[0].fragments)
|
||||
const { getBatchFragmentsList } = await import('./ffmpeg-support')
|
||||
const map = getBatchFragmentsList(items, videoDownloader.extension())
|
||||
const extensions = this.dash ? ['.mp4', 'm4a'] : [videoDownloader.extension()]
|
||||
const map = getBatchFragmentsList(items, extensions)
|
||||
if (!map) {
|
||||
Toast.info('所有选择的分P都没有分段.', '分段列表', 3000)
|
||||
} else {
|
||||
@ -850,7 +850,8 @@ async function loadPanel() {
|
||||
const items = await batchExtractor.getRawItems(format)
|
||||
const videoDownloader = new VideoDownloader(format, items[0].fragments)
|
||||
const { getBatchEpisodesList } = await import('./ffmpeg-support')
|
||||
const content = getBatchEpisodesList(items, videoDownloader.extension())
|
||||
const extensions = this.dash ? ['.mp4', 'm4a'] : [videoDownloader.extension()]
|
||||
const content = getBatchEpisodesList(items, extensions)
|
||||
const pack = new DownloadVideoPackage()
|
||||
pack.add('ffmpeg-files.txt', content)
|
||||
await pack.emit()
|
||||
|
||||
@ -1,16 +1,20 @@
|
||||
import { RawItem } from './batch-download'
|
||||
|
||||
export const getFragmentsList = (count: number, originalTitle: string, extension: string) => {
|
||||
export const getFragmentsList = (count: number, originalTitle: string, extensions: string[]) => {
|
||||
if (count < 2) {
|
||||
return null
|
||||
}
|
||||
const names = []
|
||||
for (let index = 1; index <= count; index++) {
|
||||
names.push(escapeFilename(`file '${originalTitle} - ${index}${extension}'`))
|
||||
let indexNumber = ` - ${index}`
|
||||
if (extensions.includes('.m4a')) {
|
||||
indexNumber = ''
|
||||
}
|
||||
names.push(escapeFilename(`file '${originalTitle}${indexNumber}${extensions[index - 1]}'`))
|
||||
}
|
||||
return names.join('\n')
|
||||
}
|
||||
export const getBatchFragmentsList = (items: RawItem[], extension: string) => {
|
||||
export const getBatchFragmentsList = (items: RawItem[], extensions: string[]) => {
|
||||
const multipleFragments = (item: RawItem) => item.fragments.length > 1
|
||||
const fragmentsItems = items.filter(multipleFragments)
|
||||
if (fragmentsItems.length === 0) {
|
||||
@ -19,20 +23,20 @@ export const getBatchFragmentsList = (items: RawItem[], extension: string) => {
|
||||
const names = new Map<string, string>()
|
||||
fragmentsItems.forEach(item => {
|
||||
names.set(escapeFilename(`ffmpeg-files-${item.title}.txt`), item.fragments.map((_, index) => {
|
||||
return escapeFilename(`file '${item.title} - ${index + 1}${extension}'`)
|
||||
return escapeFilename(`file '${item.title} - ${index + 1}${extensions[index]}'`)
|
||||
}).join('\n'))
|
||||
})
|
||||
return names
|
||||
}
|
||||
export const getBatchEpisodesList = (items: RawItem[], extension: string) => {
|
||||
export const getBatchEpisodesList = (items: RawItem[], extensions: string[]) => {
|
||||
const names: string[] = []
|
||||
items.forEach(item => {
|
||||
item.fragments.forEach((f, index) => {
|
||||
item.fragments.forEach((_, index) => {
|
||||
let indexNumber = ''
|
||||
if (item.fragments.length > 1) {
|
||||
if (item.fragments.length > 1 && !extensions.includes('.m4a')) {
|
||||
indexNumber = ` - ${index + 1}`
|
||||
}
|
||||
names.push(escapeFilename(`file '${item.title}${indexNumber}${extension}'`))
|
||||
names.push(escapeFilename(`file '${item.title}${indexNumber}${extensions[index]}'`))
|
||||
})
|
||||
})
|
||||
return names.join('\n')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user