CC support as in #198
This commit is contained in:
parent
6bde435a90
commit
46ecd0922b
5 changed files with 25 additions and 19 deletions
3
@types/funiTypes.d.ts
vendored
3
@types/funiTypes.d.ts
vendored
|
|
@ -10,5 +10,6 @@ export type Subtitle = {
|
|||
url: string,
|
||||
lang: LanguageItem,
|
||||
ext: string,
|
||||
out?: string
|
||||
out?: string,
|
||||
closedCaption?: boolean
|
||||
}
|
||||
18
funi.ts
18
funi.ts
|
|
@ -38,6 +38,7 @@ import parseFileName, { Variable } from './modules/module.filename';
|
|||
import { downloaded } from './modules/module.downloadArchive';
|
||||
import { FunimationMediaDownload } from './@types/funiTypes';
|
||||
import * as langsData from './modules/module.langsData';
|
||||
import { TitleElement } from './@types/episode';
|
||||
// check page
|
||||
argv.p = 1;
|
||||
|
||||
|
|
@ -321,7 +322,7 @@ async function getEpisode(fnSlug: {
|
|||
language: m.language,
|
||||
version: m.version,
|
||||
type: m.experienceType,
|
||||
subtitles: getSubsUrl(m.mediaChildren)
|
||||
subtitles: getSubsUrl(m.mediaChildren, m.language)
|
||||
};
|
||||
}
|
||||
else{
|
||||
|
|
@ -361,10 +362,10 @@ async function getEpisode(fnSlug: {
|
|||
|
||||
const already: string[] = [];
|
||||
stDlPath = stDlPath.filter(a => {
|
||||
if (already.includes(a.lang.code)) {
|
||||
if (already.includes(`${a.closedCaption ? 'cc' : ''}-${a.lang.code}`)) {
|
||||
return false;
|
||||
} else {
|
||||
already.push(a.lang.code);
|
||||
already.push(`${a.closedCaption ? 'cc' : ''}-${a.lang.code}`);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
|
@ -422,7 +423,7 @@ async function getEpisode(fnSlug: {
|
|||
}
|
||||
}
|
||||
|
||||
function getSubsUrl(m: MediaChild[]) : Subtitle[] {
|
||||
function getSubsUrl(m: MediaChild[], parentLanguage: TitleElement|undefined) : Subtitle[] {
|
||||
if((argv.nosubs && !argv.sub) || argv.dlsubs.includes('none')){
|
||||
return [];
|
||||
}
|
||||
|
|
@ -435,11 +436,13 @@ function getSubsUrl(m: MediaChild[]) : Subtitle[] {
|
|||
if (!lang) {
|
||||
continue;
|
||||
}
|
||||
const pLang = langsData.languages.find(a => (a.funi_name || a.name) === parentLanguage);
|
||||
if (argv.dlsubs.includes('all') || argv.dlsubs.some(a => a === lang.locale)) {
|
||||
found.push({
|
||||
url: me.filePath,
|
||||
ext: `.${lang.code}`,
|
||||
lang
|
||||
ext: `.${lang.code}${pLang?.code === lang.code ? '.cc' : ''}`,
|
||||
lang,
|
||||
closedCaption: pLang?.code === lang.code
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -740,7 +743,8 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
|
|||
return {
|
||||
file: a.out as string,
|
||||
language: a.lang,
|
||||
title: a.lang.name
|
||||
title: a.lang.name,
|
||||
closedCaption: a.closedCaption
|
||||
};
|
||||
}),
|
||||
videoAndAudio: audioAndVideo,
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ export type MergerInput = {
|
|||
export type SubtitleInput = {
|
||||
language: LanguageItem,
|
||||
file: string,
|
||||
closedCaption?: boolean
|
||||
}
|
||||
|
||||
export type Font = keyof typeof fonts;
|
||||
|
|
@ -94,7 +95,7 @@ class Merger {
|
|||
);
|
||||
args.push(this.options.output.split('.').pop()?.toLowerCase() === 'mp4' ? '-c:s mov_text' : '-c:s ass');
|
||||
args.push(...this.options.subtitels.map((sub, subindex) => `-metadata:s:s:${subindex} title="${
|
||||
sub.language.language || sub.language.name
|
||||
(sub.language.language || sub.language.name) + `${sub.closedCaption === true ? ' CC' : ''}`
|
||||
}" -metadata:s:s:${subindex} language=${sub.language.code}`));
|
||||
args.push(`"${this.options.output}"`);
|
||||
return args.join(' ');
|
||||
|
|
@ -173,7 +174,7 @@ class Merger {
|
|||
|
||||
if (this.options.subtitels.length > 0) {
|
||||
for (const subObj of this.options.subtitels) {
|
||||
args.push('--track-name', `0:"${subObj.language.language || subObj.language.name}"`);
|
||||
args.push('--track-name', `0:"${(subObj.language.language || subObj.language.name) + `${subObj.closedCaption === true ? ' CC' : ''}`}"`);
|
||||
args.push('--language', `0:"${subObj.language.code}"`);
|
||||
args.push(`"${subObj.file}"`);
|
||||
}
|
||||
|
|
|
|||
16
package-lock.json
generated
16
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "multi-downloader-nx",
|
||||
"version": "2.0.12",
|
||||
"version": "2.0.13",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "multi-downloader-nx",
|
||||
"version": "2.0.12",
|
||||
"version": "2.0.13",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cheerio": "^1.0.0-rc.10",
|
||||
|
|
@ -372,9 +372,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "16.11.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.14.tgz",
|
||||
"integrity": "sha512-mK6BKLpL0bG6v2CxHbm0ed6RcZrAtTHBTd/ZpnlVPVa3HkumsqLE4BC4u6TQ8D7pnrRbOU0am6epuALs+Ncnzw=="
|
||||
"version": "16.11.15",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.15.tgz",
|
||||
"integrity": "sha512-LMGR7iUjwZRxoYnfc9+YELxwqkaLmkJlo4/HUvOMyGvw9DaHO0gtAbH2FUdoFE6PXBTYZIT7x610r7kdo8o1fQ=="
|
||||
},
|
||||
"node_modules/@types/responselike": {
|
||||
"version": "1.0.0",
|
||||
|
|
@ -4467,9 +4467,9 @@
|
|||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "16.11.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.14.tgz",
|
||||
"integrity": "sha512-mK6BKLpL0bG6v2CxHbm0ed6RcZrAtTHBTd/ZpnlVPVa3HkumsqLE4BC4u6TQ8D7pnrRbOU0am6epuALs+Ncnzw=="
|
||||
"version": "16.11.15",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.15.tgz",
|
||||
"integrity": "sha512-LMGR7iUjwZRxoYnfc9+YELxwqkaLmkJlo4/HUvOMyGvw9DaHO0gtAbH2FUdoFE6PXBTYZIT7x610r7kdo8o1fQ=="
|
||||
},
|
||||
"@types/responselike": {
|
||||
"version": "1.0.0",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "multi-downloader-nx",
|
||||
"short_name": "aniDL",
|
||||
"version": "2.0.12",
|
||||
"version": "2.0.13",
|
||||
"description": "Download videos from Funimation or Crunchyroll via cli",
|
||||
"keywords": [
|
||||
"download",
|
||||
|
|
|
|||
Loading…
Reference in a new issue