Update langsdata to fix #192

This commit is contained in:
Izuco 2021-12-20 20:06:20 +01:00
parent 918e44f169
commit b681bc3491
No known key found for this signature in database
GPG key ID: 41DFCB1835A5695E
7 changed files with 133 additions and 132 deletions

View file

@ -16,7 +16,7 @@ export type CrunchyEpMeta = {
export type DownloadedMedia = {
type: 'Video',
lang: string,
lang: LanguageItem,
path: string
} | ({
type: 'Subtitle'

View file

@ -1,4 +1,6 @@
import { LanguageItem } from "../modules/module.langsData";
export type DownloadedFile = {
path: string,
lang: string
lang: LanguageItem
}

View file

@ -42,7 +42,7 @@ import { CrunchyEpisodeList, Item } from './@types/crunchyEpisodeList';
import { CrunchyEpMeta, DownloadedMedia, ParseItem, SeriesSearch, SeriesSearchItem } from './@types/crunchyTypes';
import { ObjectInfo } from './@types/objectInfo';
import parseFileName, { Variable } from './modules/module.filename';
import { PlaybackData } from './@types/playbackData';
import { PlaybackData, Vcodec } from './@types/playbackData';
import { downloaded } from './modules/module.downloadArchive';
import parseSelect from './modules/module.parseSelect';
const req = new reqModule.Req(domain, argv);
@ -841,9 +841,7 @@ async function muxStreams(data: DownloadedMedia[], output: string) {
throw new Error('Never');
return {
file: a.path,
language: a.language.code,
lookup: false,
title: a.title
language: a.language
};
}),
simul: false,
@ -854,7 +852,6 @@ async function muxStreams(data: DownloadedMedia[], output: string) {
return {
lang: a.lang,
path: a.path,
lookup: false
};
})
});
@ -997,7 +994,7 @@ const itemSelectMultiDub = (eps: Record<string, {
? 'S' + epNumList.sp.toString().padStart(argv.numbers, '0')
: '' + parseInt(epNum, 10).toString().padStart(argv.numbers, '0')
);
if((argv.but && !doEpsFilter.isSelected([selEpId, item.id])) || (argv.all || (doEpsFilter.isSelected([selEpId, item.id])) && item.playback && !argv.but)){
if(item.playback && ((argv.but && !doEpsFilter.isSelected([selEpId, item.id])) || (argv.all || (doEpsFilter.isSelected([selEpId, item.id])) && !argv.but))) {
if (Object.prototype.hasOwnProperty.call(ret, key)) {
const epMe = ret[key];
epMe.data.push({
@ -1235,7 +1232,9 @@ async function downloadMediaList(medias: CrunchyEpMeta) : Promise<{
console.log('[INFO] Selecting raw stream');
}
let curStream;
let curStream:
undefined|typeof streams[0]
= undefined;
if(!dlFailed){
argv.kstream = typeof argv.kstream == 'number' ? argv.kstream : 1;
argv.kstream = argv.kstream > streams.length ? 1 : argv.kstream;
@ -1251,7 +1250,7 @@ async function downloadMediaList(medias: CrunchyEpMeta) : Promise<{
console.log('[INFO] Playlists URL: %s (%s)', curStream.url, curStream.type);
}
if(!argv.novids && !dlFailed && curStream){
if(!argv.novids && !dlFailed && curStream !== undefined){
const streamPlaylistsReq = await req.getData(curStream.url);
if(!streamPlaylistsReq.ok || !streamPlaylistsReq.res){
console.log('[ERROR] CAN\'T FETCH VIDEO PLAYLISTS!');
@ -1340,7 +1339,11 @@ async function downloadMediaList(medias: CrunchyEpMeta) : Promise<{
type: 'number',
replaceWith: quality === 0 ? plQuality[plQuality.length - 1].RESOLUTION.width as number : plQuality[quality - 1].RESOLUTION.width
});
const lang = curStream.audio_lang;
const lang = langsData.languages.find(a => a.code === curStream?.audio_lang);
if (!lang) {
console.log(`[ERROR] Unable to find language for code ${curStream.audio_lang}`);
return;
}
console.log(`[INFO] Selected quality: ${Object.keys(plSelectedList).find(a => plSelectedList[a] === selPlUrl)} @ ${plSelectedServer}`);
if(argv['show-stream-url']){
console.log('[INFO] Stream URL:', selPlUrl);
@ -1381,7 +1384,7 @@ async function downloadMediaList(medias: CrunchyEpMeta) : Promise<{
files.push({
type: 'Video',
path: `${tsFile}.ts`,
lang: lang as string
lang: lang
});
}
}
@ -1415,8 +1418,7 @@ async function downloadMediaList(medias: CrunchyEpMeta) : Promise<{
return {
...s,
locale: subLang,
language: subLang.locale,
titile: subLang.language
language: subLang.locale
};
});
const subsArr = langsData.sortSubtitles<typeof subsDataMapped[0]>(subsDataMapped, 'language');

43
funi.ts
View file

@ -47,7 +47,7 @@ let fnEpNum: string|number = 0,
season = 0,
tsDlPath: {
path: string,
lang: string
lang: langsData.LanguageItem
}[] = [],
stDlPath: Subtitle[] = [];
@ -346,7 +346,7 @@ async function getEpisode(fnSlug: {
if(item && dub_type == (item.funi_name || item.name) && selUncut){
streamIds.push({
id: m.id,
lang: merger.getLanguageCode(curDub, curDub.slice(0, -2))
lang: item
});
stDlPath.push(...m.subtitles);
localSubs = m.subtitles;
@ -481,11 +481,10 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
}> = {};
let plMaxLayer = 1,
plNewIds = 1,
plAud: {
uri: string,
langStr: string,
language: string
} = { uri: '', langStr: '', language: '' };
plAud: undefined|{
uri: string
language: langsData.LanguageItem
};
// new uris
const vplReg = /streaming_video_(\d+)_(\d+)_(\d+)_index\.m3u8/;
@ -497,7 +496,18 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
const audioDataParts = plQualityLinkList.mediaGroups.AUDIO[audioKey],
audioEl = Object.keys(audioDataParts);
const audioData = audioDataParts[audioEl[0]];
plAud = { ...audioData, ...{ langStr: audioEl[0] } };
let language = langsData.languages.find(a => a.locale === audioData.language);
if (!language) {
language = langsData.languages.find(a => a.funi_name || a.name === audioEl[0]);
if (!language) {
console.log(`[ERROR] Unable to find language for locale ${audioData.language} or name ${audioEl[0]}`);
return;
}
}
plAud = {
uri: audioData.uri,
language: language
};
}
plQualityLinkList.playlists.sort((a, b) => {
const aMatch = a.uri.match(vplReg), bMatch = b.uri.match(vplReg);
@ -620,9 +630,9 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
await fs.promises.mkdir(path.join(cfg.dir.content, ...fnOutput.slice(0, -1)), { recursive: true });
video: if (!argv.novids) {
if (plAud.uri && (purvideo.length > 0 || audioAndVideo.length > 0)) {
if (plAud && (purvideo.length > 0 || audioAndVideo.length > 0)) {
break video;
} else if (!plAud.uri && (audioAndVideo.some(a => a.lang === streamPath.lang) || puraudio.some(a => a.lang === streamPath.lang))) {
} else if (!plAud && (audioAndVideo.some(a => a.lang === streamPath.lang) || puraudio.some(a => a.lang === streamPath.lang))) {
break video;
}
// download video
@ -634,10 +644,10 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
const chunkList = m3u8(reqVideo.res.body);
const tsFile = path.join(cfg.dir.content, ...fnOutput.slice(0, -1), `${fnOutput.slice(-1)}.video${(plAud.uri ? '' : '.' + streamPath.lang )}`);
const tsFile = path.join(cfg.dir.content, ...fnOutput.slice(0, -1), `${fnOutput.slice(-1)}.video${(plAud?.uri ? '' : '.' + streamPath.lang.code )}`);
dlFailed = !await downloadFile(tsFile, chunkList);
if (!dlFailed) {
if (plAud.uri) {
if (plAud) {
purvideo.push({
path: `${tsFile}.ts`,
lang: plAud.language
@ -653,9 +663,9 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
else{
console.log('[INFO] Skip video downloading...\n');
}
audio: if (!argv.noaudio && plAud.uri) {
audio: if (plAud && !argv.noaudio) {
// download audio
if (audioAndVideo.some(a => a.lang === plAud.language) || puraudio.some(a => a.lang === plAud.language))
if (audioAndVideo.some(a => a.lang === plAud?.language) || puraudio.some(a => a.lang === plAud?.language))
break audio;
const reqAudio = await getData({
url: plAud.uri,
@ -665,7 +675,7 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
const chunkListA = m3u8(reqAudio.res.body);
const tsFileA = path.join(cfg.dir.content, ...fnOutput.slice(0, -1), `${fnOutput.slice(-1)}.audio.${plAud.language}`);
const tsFileA = path.join(cfg.dir.content, ...fnOutput.slice(0, -1), `${fnOutput.slice(-1)}.audio.${plAud.language.code}`);
dlFailedA = !await downloadFile(tsFileA, chunkListA);
if (!dlFailedA)
@ -729,8 +739,7 @@ async function downloadStreams(epsiode: FunimationMediaDownload){
subtitels: stDlPath.map(a => {
return {
file: a.out as string,
language: a.lang.code,
lookup: false,
language: a.lang,
title: a.lang.name
};
}),

View file

@ -6,15 +6,12 @@ import { LanguageItem } from './module.langsData';
export type MergerInput = {
path: string,
lang: string,
lookup?: false,
lang: LanguageItem
}
export type SubtitleInput = {
language: string,
language: LanguageItem,
file: string,
title?: string
lookup?: false,
}
export type Font = keyof typeof fonts;
@ -37,15 +34,6 @@ export type MergerOptions = {
}
class Merger {
private subDict = {
'en': 'English (United State)',
'es': 'Español (Latinoamericano)',
'pt': 'Português (Brasil)',
'ja': '日本語',
'cmn': '官話'
} as {
[key: string]: string;
};
constructor(private options: MergerOptions) {
if (this.options.skipSubMux)
@ -64,12 +52,12 @@ class Merger {
args.push(`-i "${vid.path}"`);
if (!hasVideo) {
metaData.push(`-map ${index}:a -map ${index}:v`);
metaData.push(`-metadata:s:a:${audioIndex} language=${vid.lookup === false ? vid.lang : Merger.getLanguageCode(vid.lang, vid.lang)}`);
metaData.push(`-metadata:s:a:${audioIndex} language=${vid.lang.code}`);
metaData.push(`-metadata:s:v:${index} title="[Video Stream]"`);
hasVideo = true;
} else {
metaData.push(`-map ${index}:a`);
metaData.push(`-metadata:s:a:${audioIndex} language=${vid.lookup === false ? vid.lang : Merger.getLanguageCode(vid.lang, vid.lang)}`);
metaData.push(`-metadata:s:a:${audioIndex} language=${vid.lang.code}`);
}
audioIndex++;
index++;
@ -88,7 +76,7 @@ class Merger {
for (const aud of this.options.onlyAudio) {
args.push(`-i "${aud.path}"`);
metaData.push(`-map ${index}`);
metaData.push(`-metadata:s:a:${audioIndex} language=${aud.lookup === false ? aud.lang : Merger.getLanguageCode(aud.lang, aud.lang)}`);
metaData.push(`-metadata:s:a:${audioIndex} language=${aud.lang.code}`);
index++;
audioIndex++;
}
@ -106,8 +94,8 @@ 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.title !== undefined ? sub.title : sub.lookup === false ? sub.language : Merger.getLanguageCode(sub.language)
}" -metadata:s:s:${subindex} language=${sub.lookup === false ? sub.language : Merger.getLanguageCode(sub.language)}`));
sub.language.language || sub.language.name
}" -metadata:s:s:${subindex} language=${sub.language.code}`));
args.push(`"${this.options.output}"`);
return args.join(' ');
}
@ -141,9 +129,9 @@ class Merger {
'--video-tracks 0',
'--no-audio'
);
const trackName = (vid.lookup === false ? vid.lang : this.subDict[vid.lang]) + (this.options.simul ? ' [Simulcast]' : ' [Uncut]');
const trackName = (vid.lang.name + (this.options.simul ? ' [Simulcast]' : ' [Uncut]'));
args.push('--track-name', `0:"${trackName}"`);
args.push(`--language 0:${Merger.getLanguageCode(vid.lang, vid.lang)}`);
args.push(`--language 0:${vid.lang.code}`);
hasVideo = true;
args.push(`"${vid.path}"`);
}
@ -155,27 +143,27 @@ class Merger {
'--video-tracks 0',
'--audio-tracks 1'
);
const trackName = (vid.lookup === false ? vid.lang : this.subDict[vid.lang]) + (this.options.simul ? ' [Simulcast]' : ' [Uncut]');
const trackName = (vid.lang.name + (this.options.simul ? ' [Simulcast]' : ' [Uncut]'));
args.push('--track-name', `0:"${trackName}"`);
args.push('--track-name', `1:"${trackName}"`);
args.push(`--language 1:${Merger.getLanguageCode(vid.lang, vid.lang)}`);
args.push(`--language 1:${vid.lang.code}`);
hasVideo = true;
} else {
args.push(
'--no-video',
'--audio-tracks 1'
);
const trackName = (vid.lookup === false ? vid.lang : this.subDict[vid.lang]) + (this.options.simul ? ' [Simulcast]' : ' [Uncut]');
const trackName = (vid.lang.name + (this.options.simul ? ' [Simulcast]' : ' [Uncut]'));
args.push('--track-name', `1:"${trackName}"`);
args.push(`--language 1:${Merger.getLanguageCode(vid.lang, vid.lang)}`);
args.push(`--language 1:${vid.lang.code}`);
}
args.push(`"${vid.path}"`);
}
for (const aud of this.options.onlyAudio) {
const trackName = (aud.lookup === false ? aud.lang : this.subDict[aud.lang]) + (this.options.simul ? ' [Simulcast]' : ' [Uncut]');
const trackName = aud.lang.name;
args.push('--track-name', `0:"${trackName}"`);
args.push(`--language 0:${Merger.getLanguageCode(aud.lang, aud.lang)}`);
args.push(`--language 0:${aud.lang.code}`);
args.push(
'--no-video',
'--audio-tracks 0'
@ -185,8 +173,8 @@ class Merger {
if (this.options.subtitels.length > 0) {
for (const subObj of this.options.subtitels) {
args.push('--track-name', (subObj.title !== undefined ? `0:"${subObj.title}"` : `0:"${subObj.lookup === false ? subObj.language : Merger.getLanguageCode(subObj.language)}"`));
args.push('--language', `0:"${subObj.lookup === false ? subObj.language : Merger.getLanguageCode(subObj.language)}"`);
args.push('--track-name', `0:"${subObj.language.language || subObj.language.name}"`);
args.push('--language', `0:"${subObj.language.code}"`);
args.push(`"${subObj.file}"`);
}
} else {

142
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "multi-downloader-nx",
"version": "2.0.11",
"version": "2.0.12",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "multi-downloader-nx",
"version": "2.0.11",
"version": "2.0.12",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0-rc.10",
@ -400,13 +400,13 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.7.0.tgz",
"integrity": "sha512-8RTGBpNn5a9M628wBPrCbJ+v3YTEOE2qeZb7TDkGKTDXSj36KGRg92SpFFaR/0S3rSXQxM0Og/kV9EyadsYSBg==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.0.tgz",
"integrity": "sha512-spu1UW7QuBn0nJ6+psnfCc3iVoQAifjKORgBngKOmC8U/1tbe2YJMzYQqDGYB4JCss7L8+RM2kKLb1B1Aw9BNA==",
"dev": true,
"dependencies": {
"@typescript-eslint/experimental-utils": "5.7.0",
"@typescript-eslint/scope-manager": "5.7.0",
"@typescript-eslint/experimental-utils": "5.8.0",
"@typescript-eslint/scope-manager": "5.8.0",
"debug": "^4.3.2",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.1.8",
@ -432,15 +432,15 @@
}
},
"node_modules/@typescript-eslint/experimental-utils": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.7.0.tgz",
"integrity": "sha512-u57eZ5FbEpzN5kSjmVrSesovWslH2ZyNPnaXQMXWgH57d5+EVHEt76W75vVuI9qKZ5BMDKNfRN+pxcPEjQjb2A==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.0.tgz",
"integrity": "sha512-KN5FvNH71bhZ8fKtL+lhW7bjm7cxs1nt+hrDZWIqb6ViCffQcWyLunGrgvISgkRojIDcXIsH+xlFfI4RCDA0xA==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"@typescript-eslint/scope-manager": "5.7.0",
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/typescript-estree": "5.7.0",
"@typescript-eslint/scope-manager": "5.8.0",
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/typescript-estree": "5.8.0",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
},
@ -452,18 +452,18 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "*"
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/@typescript-eslint/parser": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.7.0.tgz",
"integrity": "sha512-m/gWCCcS4jXw6vkrPQ1BjZ1vomP01PArgzvauBqzsoZ3urLbsRChexB8/YV8z9HwE3qlJM35FxfKZ1nfP/4x8g==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.0.tgz",
"integrity": "sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw==",
"dev": true,
"dependencies": {
"@typescript-eslint/scope-manager": "5.7.0",
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/typescript-estree": "5.7.0",
"@typescript-eslint/scope-manager": "5.8.0",
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/typescript-estree": "5.8.0",
"debug": "^4.3.2"
},
"engines": {
@ -483,13 +483,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.7.0.tgz",
"integrity": "sha512-7mxR520DGq5F7sSSgM0HSSMJ+TFUymOeFRMfUfGFAVBv8BR+Jv1vHgAouYUvWRZeszVBJlLcc9fDdktxb5kmxA==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz",
"integrity": "sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/visitor-keys": "5.7.0"
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/visitor-keys": "5.8.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@ -500,9 +500,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.7.0.tgz",
"integrity": "sha512-5AeYIF5p2kAneIpnLFve8g50VyAjq7udM7ApZZ9JYjdPjkz0LvODfuSHIDUVnIuUoxafoWzpFyU7Sqbxgi79mA==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.0.tgz",
"integrity": "sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@ -513,13 +513,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.7.0.tgz",
"integrity": "sha512-aO1Ql+izMrTnPj5aFFlEJkpD4jRqC4Gwhygu2oHK2wfVQpmOPbyDSveJ+r/NQo+PWV43M6uEAeLVbTi09dFLhg==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz",
"integrity": "sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/visitor-keys": "5.7.0",
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/visitor-keys": "5.8.0",
"debug": "^4.3.2",
"globby": "^11.0.4",
"is-glob": "^4.0.3",
@ -540,12 +540,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.7.0.tgz",
"integrity": "sha512-hdohahZ4lTFcglZSJ3DGdzxQHBSxsLVqHzkiOmKi7xVAWC4y2c1bIMKmPJSrA4aOEoRUPOKQ87Y/taC7yVHpFg==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz",
"integrity": "sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/types": "5.8.0",
"eslint-visitor-keys": "^3.0.0"
},
"engines": {
@ -4495,13 +4495,13 @@
"dev": true
},
"@typescript-eslint/eslint-plugin": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.7.0.tgz",
"integrity": "sha512-8RTGBpNn5a9M628wBPrCbJ+v3YTEOE2qeZb7TDkGKTDXSj36KGRg92SpFFaR/0S3rSXQxM0Og/kV9EyadsYSBg==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.0.tgz",
"integrity": "sha512-spu1UW7QuBn0nJ6+psnfCc3iVoQAifjKORgBngKOmC8U/1tbe2YJMzYQqDGYB4JCss7L8+RM2kKLb1B1Aw9BNA==",
"dev": true,
"requires": {
"@typescript-eslint/experimental-utils": "5.7.0",
"@typescript-eslint/scope-manager": "5.7.0",
"@typescript-eslint/experimental-utils": "5.8.0",
"@typescript-eslint/scope-manager": "5.8.0",
"debug": "^4.3.2",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.1.8",
@ -4511,55 +4511,55 @@
}
},
"@typescript-eslint/experimental-utils": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.7.0.tgz",
"integrity": "sha512-u57eZ5FbEpzN5kSjmVrSesovWslH2ZyNPnaXQMXWgH57d5+EVHEt76W75vVuI9qKZ5BMDKNfRN+pxcPEjQjb2A==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.0.tgz",
"integrity": "sha512-KN5FvNH71bhZ8fKtL+lhW7bjm7cxs1nt+hrDZWIqb6ViCffQcWyLunGrgvISgkRojIDcXIsH+xlFfI4RCDA0xA==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
"@typescript-eslint/scope-manager": "5.7.0",
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/typescript-estree": "5.7.0",
"@typescript-eslint/scope-manager": "5.8.0",
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/typescript-estree": "5.8.0",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
}
},
"@typescript-eslint/parser": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.7.0.tgz",
"integrity": "sha512-m/gWCCcS4jXw6vkrPQ1BjZ1vomP01PArgzvauBqzsoZ3urLbsRChexB8/YV8z9HwE3qlJM35FxfKZ1nfP/4x8g==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.0.tgz",
"integrity": "sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw==",
"dev": true,
"requires": {
"@typescript-eslint/scope-manager": "5.7.0",
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/typescript-estree": "5.7.0",
"@typescript-eslint/scope-manager": "5.8.0",
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/typescript-estree": "5.8.0",
"debug": "^4.3.2"
}
},
"@typescript-eslint/scope-manager": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.7.0.tgz",
"integrity": "sha512-7mxR520DGq5F7sSSgM0HSSMJ+TFUymOeFRMfUfGFAVBv8BR+Jv1vHgAouYUvWRZeszVBJlLcc9fDdktxb5kmxA==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz",
"integrity": "sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/visitor-keys": "5.7.0"
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/visitor-keys": "5.8.0"
}
},
"@typescript-eslint/types": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.7.0.tgz",
"integrity": "sha512-5AeYIF5p2kAneIpnLFve8g50VyAjq7udM7ApZZ9JYjdPjkz0LvODfuSHIDUVnIuUoxafoWzpFyU7Sqbxgi79mA==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.0.tgz",
"integrity": "sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.7.0.tgz",
"integrity": "sha512-aO1Ql+izMrTnPj5aFFlEJkpD4jRqC4Gwhygu2oHK2wfVQpmOPbyDSveJ+r/NQo+PWV43M6uEAeLVbTi09dFLhg==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz",
"integrity": "sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/visitor-keys": "5.7.0",
"@typescript-eslint/types": "5.8.0",
"@typescript-eslint/visitor-keys": "5.8.0",
"debug": "^4.3.2",
"globby": "^11.0.4",
"is-glob": "^4.0.3",
@ -4568,12 +4568,12 @@
}
},
"@typescript-eslint/visitor-keys": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.7.0.tgz",
"integrity": "sha512-hdohahZ4lTFcglZSJ3DGdzxQHBSxsLVqHzkiOmKi7xVAWC4y2c1bIMKmPJSrA4aOEoRUPOKQ87Y/taC7yVHpFg==",
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz",
"integrity": "sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.7.0",
"@typescript-eslint/types": "5.8.0",
"eslint-visitor-keys": "^3.0.0"
}
},

View file

@ -1,7 +1,7 @@
{
"name": "multi-downloader-nx",
"short_name": "aniDL",
"version": "2.0.11",
"version": "2.0.12",
"description": "Download videos from Funimation or Crunchyroll via cli",
"keywords": [
"download",