This commit is contained in:
Izuco 2021-07-04 20:37:20 +02:00
parent 79048ff534
commit bfec2f4b89
3 changed files with 47 additions and 47 deletions

32
funi.js
View file

@ -343,7 +343,7 @@ async function getEpisode(fnSlug){
let selected = false;
if(m.id > 0 && m.type == 'Non-Encrypted'){
let dub_type = m.language;
let localSubs = []
let localSubs = [];
let selUncut = !argv.simul && uncut[dub_type] && m.version.match(/uncut/i)
? true
: (!uncut[dub_type] || argv.simul && m.version.match(/simulcast/i) ? true : false);
@ -354,7 +354,7 @@ async function getEpisode(fnSlug){
lang: merger.getLanguageCode(curDub, curDub.slice(0, -2))
});
stDlPath.push(...m.subtitles);
localSubs = m.subtitles
localSubs = m.subtitles;
selected = true;
}
}
@ -364,15 +364,15 @@ async function getEpisode(fnSlug){
}
}
let already = []
let already = [];
stDlPath = stDlPath.filter(a => {
if (already.includes(a.language)) {
return false;
} else {
already.push(a.language)
already.push(a.language);
return true;
}
})
});
if(streamIds.length <1){
console.log('[ERROR] Track not selected\n');
return;
@ -460,9 +460,9 @@ async function downloadStreams(){
// req playlist
let purvideo = []
let puraudio = []
let audioAndVideo = []
let purvideo = [];
let puraudio = [];
let audioAndVideo = [];
let outName;
for (let streamPath of tsDlPath) {
let plQualityReq = await getData({
@ -491,7 +491,7 @@ async function downloadStreams(){
// new uris
let vplReg = /streaming_video_(\d+)_(\d+)_(\d+)_index\.m3u8/;
if(plQualityLinkList.playlists[0].uri.match(vplReg)){
let audioKey = Object.keys(plQualityLinkList.mediaGroups.AUDIO).pop()
let audioKey = Object.keys(plQualityLinkList.mediaGroups.AUDIO).pop();
if(plQualityLinkList.mediaGroups.AUDIO[audioKey]){
let audioData = plQualityLinkList.mediaGroups.AUDIO[audioKey],
audioEl = Object.keys(audioData);
@ -621,12 +621,12 @@ async function downloadStreams(){
purvideo.push({
path: `${tsFile}.ts`,
lang: plAud.language
})
});
} else {
audioAndVideo.push({
path: `${tsFile}.ts`,
lang: streamPath.lang
})
});
}
}
}
@ -653,7 +653,7 @@ async function downloadStreams(){
puraudio.push({
path: `${tsFileA}.ts`,
lang: plAud.language
})
});
}
}
@ -673,7 +673,7 @@ async function downloadStreams(){
});
if(subsSrc.ok){
let assData = vttConvert(subsSrc.res.body, (subsExt == '.srt' ? true : false), subObject.langName, argv.fontSize);
subObject.file = path.join(cfg.dir.content, `${fnOutput}.subtitle${subObject.ext}${subsExt}`)
subObject.file = path.join(cfg.dir.content, `${fnOutput}.subtitle${subObject.ext}${subsExt}`);
fs.writeFileSync(subObject.file, assData);
}
else{
@ -692,7 +692,7 @@ async function downloadStreams(){
}
if(argv.skipmux){
console.log("[INFO] Skipping muxing...")
console.log('[INFO] Skipping muxing...');
return;
}
@ -734,8 +734,8 @@ async function downloadStreams(){
if (argv.nocleanup)
return;
audioAndVideo.concat(puraudio).concat(purvideo).forEach(a => fs.unlinkSync(a.path))
stDlPath.forEach(subObject => fs.unlinkSync(subObject.file))
audioAndVideo.concat(puraudio).concat(purvideo).forEach(a => fs.unlinkSync(a.path));
stDlPath.forEach(subObject => fs.unlinkSync(subObject.file));
console.log('\n[INFO] Done!\n');
}

View file

@ -16,34 +16,34 @@ const buildCommandFFmpeg = (videoAndAudio, onlyVid, onlyAudio, subtitles, output
let index = 0;
let hasVideo = false;
for (let vid of videoAndAudio) {
args.push(`-i "${vid.path}"`)
args.push(`-i "${vid.path}"`);
if (!hasVideo) {
metaData.push(`-map ${index}`)
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(vid.lang, vid.lang)}`)
metaData.push(`-metadata:s:v:${index} title="[Funimation]"`)
hasVideo = true
metaData.push(`-map ${index}`);
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(vid.lang, vid.lang)}`);
metaData.push(`-metadata:s:v:${index} title="[Funimation]"`);
hasVideo = true;
} else {
metaData.push(`-map ${index}:a`)
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(vid.lang, vid.lang)}`)
metaData.push(`-map ${index}:a`);
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(vid.lang, vid.lang)}`);
}
index++;
}
for (let vid of onlyVid) {
if (!hasVideo) {
args.push(`-i "${vid.path}"`)
metaData.push(`-map ${index}`)
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(vid.lang, vid.lang)}`)
metaData.push(`-metadata:s:v:${index} title="[Funimation]"`)
hasVideo = true
args.push(`-i "${vid.path}"`);
metaData.push(`-map ${index}`);
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(vid.lang, vid.lang)}`);
metaData.push(`-metadata:s:v:${index} title="[Funimation]"`);
hasVideo = true;
index++;
}
}
for (let aud of onlyAudio) {
args.push(`-i "${aud.path}"`)
metaData.push(`-map ${index}`)
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(aud.lang, aud.lang)}`)
args.push(`-i "${aud.path}"`);
metaData.push(`-map ${index}`);
metaData.push(`-metadata:s:a:${index} language=${getLanguageCode(aud.lang, aud.lang)}`);
index++;
}
@ -52,13 +52,13 @@ const buildCommandFFmpeg = (videoAndAudio, onlyVid, onlyAudio, subtitles, output
args.push(`-i "${sub.file}"`);
}
args.push(...metaData)
args.push(...metaData);
args.push(...subtitles.map((_, subIndex) => `-map ${subIndex + index}`));
args.push(
'-c:v copy',
'-c:a copy'
);
args.push(output.split('.').pop().toLowerCase() === "mp4" ? '-c:s mov_text' : '-c:s ass')
args.push(output.split('.').pop().toLowerCase() === 'mp4' ? '-c:s mov_text' : '-c:s ass');
args.push(...subtitles.map((sub, index) => `-metadata:s:${index + 2} language=${getLanguageCode(sub.language)}`));
args.push(`"${output}"`);
return args.join(' ');
@ -87,31 +87,31 @@ const buildCommandMkvMerge = (videoAndAudio, onlyVid, onlyAudio, subtitles, outp
args.push(
'--video-tracks 0',
'--no-audio'
)
args.push(`--track-name 0:[Funimation]`)
hasVideo = true
args.push(`"${vid.path}"`)
);
args.push('--track-name 0:[Funimation]');
hasVideo = true;
args.push(`"${vid.path}"`);
}
}
for (let vid of videoAndAudio) {
console.log(vid, vid.lang)
console.log(vid, vid.lang);
if (!hasVideo) {
args.push(
'--video-tracks 0',
'--audio-tracks 1'
)
args.push(`--track-name 0:[Funimation]`)
);
args.push('--track-name 0:[Funimation]');
args.push(`--language 1:${getLanguageCode(vid.lang, vid.lang)}`);
hasVideo = true
hasVideo = true;
} else {
args.push(
'--no-video',
'--audio-tracks 1'
)
);
args.push(`--language 1:${getLanguageCode(vid.lang, vid.lang)}`);
}
args.push(`"${vid.path}"`)
args.push(`"${vid.path}"`);
}
for (let aud of onlyAudio) {
@ -120,7 +120,7 @@ const buildCommandMkvMerge = (videoAndAudio, onlyVid, onlyAudio, subtitles, outp
'--no-video',
'--audio-tracks 0'
);
args.push(`"${aud.path}"`)
args.push(`"${aud.path}"`);
}
if(subtitles.length > 0){

View file

@ -13,7 +13,7 @@ const appArgv = (cfg) => {
// init
const argv = yargs.parserConfiguration({
'duplicate-arguments-array': true,
"camel-case-expansion": false
'camel-case-expansion': false
})
// main
.wrap(Math.min(120)) // yargs.terminalWidth()
@ -198,8 +198,8 @@ const appArgv = (cfg) => {
// Resolve unwanted arrays
for (let key in argv) {
if (argv[key] instanceof Array && !(key === "subLang" || key === "dub")) {
argv[key] = argv[key].pop()
if (argv[key] instanceof Array && !(key === 'subLang' || key === 'dub')) {
argv[key] = argv[key].pop();
}
}
return argv;