CC support as in #198

This commit is contained in:
Izuco 2021-12-21 14:35:15 +01:00
parent 6bde435a90
commit 46ecd0922b
No known key found for this signature in database
GPG key ID: 41DFCB1835A5695E
5 changed files with 25 additions and 19 deletions

View file

@ -10,5 +10,6 @@ export type Subtitle = {
url: string,
lang: LanguageItem,
ext: string,
out?: string
out?: string,
closedCaption?: boolean
}

18
funi.ts
View file

@ -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,

View file

@ -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
View file

@ -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",

View file

@ -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",